Thread: Testsuite failing on s390x
Hi, thanks for the new regression test suite in psqlodbc - I've activated it for the Debian package. It runs fine on all architectures except s390x (our 64bit s390 port) where 3 tests fail: test sampletables ... ok test connect ... ok test stmthandles ... ok test select ... ok test getresult ... ok test prepare ... FAILED test params ... ok test notice ... ok test arraybinding ... FAILED test insertreturning ... ok test dataatexecution ... FAILED test boolsaschar ... ok test cvtnulldate ... ok test alter ... ok regression.diffs: *** /build/buildd-psqlodbc_09.02.0100-1-s390x-d7IBem/psqlodbc-09.02.0100/test/expected/prepare.out Tue Jun 11 16:17:502013 --- /build/buildd-psqlodbc_09.02.0100-1-s390x-d7IBem/psqlodbc-09.02.0100/test/results/prepare.out Tue Jun 11 16:18:422013 *************** *** 4,10 **** Result set: 2 bar Result set: - 3 foobar Result set: 1 @ 1 day one day 2 @ 10 secs ten secs --- 4,9 ---- ====================================================================== *** /build/buildd-psqlodbc_09.02.0100-1-s390x-d7IBem/psqlodbc-09.02.0100/test/expected/arraybinding.out Tue Jun 11 16:17:502013 --- /build/buildd-psqlodbc_09.02.0100-1-s390x-d7IBem/psqlodbc-09.02.0100/test/results/arraybinding.out Tue Jun 11 16:18:432013 *************** *** 1,30 **** \! ./src/arraybinding-test ! connected ! Parameter Status ! Result set: ! 10000 ! Result set: ! 0 columnwise 0 ! 1 columnwise 1 ! 100 columnwise 100 ! 9999 columnwise 9999 ! Parameter Status ! Fetching result sets for array bound (5 results expected) ! 1: Result set: ! columnwise 100 ! 2: Result set: ! columnwise 101 ! 3: Result set: ! columnwise 102 ! 4: Result set: ! columnwise 103 ! 5: Result set: ! columnwise 104 ! Number of rows in table: ! Result set: ! 9995 ! Result set: ! 0 columnwise 0 ! 1 columnwise 1 ! 9999 columnwise 9999 ! disconnecting --- 1,2 ---- \! ./src/arraybinding-test ! Segmentation fault (core dumped) ====================================================================== *** /build/buildd-psqlodbc_09.02.0100-1-s390x-d7IBem/psqlodbc-09.02.0100/test/expected/dataatexecution.out Tue Jun 1116:17:50 2013 --- /build/buildd-psqlodbc_09.02.0100-1-s390x-d7IBem/psqlodbc-09.02.0100/test/results/dataatexecution.out Tue Jun 11 16:18:432013 *************** *** 3,12 **** Result set: 2 3 ! Parameter Status ! Fetching result sets for array bound (2 results expected) ! 1: Result set: ! 4 ! 2: Result set: ! 5 ! disconnecting --- 3,6 ---- Result set: 2 3 ! unexpected # of rows processed after SQL_NEED_DATA: 0 I can provide backtraces and look into the core, but maybe someone already knows what the problem is before I dig deeper into it. Christoph -- cb@df7cb.de | http://www.df7cb.de/
On 12.06.2013 13:47, Christoph Berg wrote: > thanks for the new regression test suite in psqlodbc - I've activated > it for the Debian package. > > It runs fine on all architectures except s390x (our 64bit s390 port) > where 3 tests fail: > > test sampletables ... ok > test connect ... ok > test stmthandles ... ok > test select ... ok > test getresult ... ok > test prepare ... FAILED > test params ... ok > test notice ... ok > test arraybinding ... FAILED > test insertreturning ... ok > test dataatexecution ... FAILED > test boolsaschar ... ok > test cvtnulldate ... ok > test alter ... ok > > ... > > I can provide backtraces and look into the core, but maybe someone > already knows what the problem is before I dig deeper into it. Nope, dunno what's going on. I suspect the prepare test might be failing because of some mismatch between integer types. It's binding a parameter as SQL_C_SLONG, which means it's passed as a C variable with "signed long int" type. Maybe that behaves funnily on s390x. Backtraces would be helpful. Or if you can give me access to a box running debian on s390x, I can log in and take a look myself. - Heikki
Heikki Linnakangas <hlinnakangas@vmware.com> writes: > Nope, dunno what's going on. I suspect the prepare test might be failing > because of some mismatch between integer types. It's binding a parameter > as SQL_C_SLONG, which means it's passed as a C variable with "signed > long int" type. Maybe that behaves funnily on s390x. Remember that s390 is big-endian, so integer width mismatches are more likely to be exposed than they are on Intel hardware. For instance, passing a long by-reference to an integer parameter will work fine on x86_64 and not so fine on s390x. regards, tom lane
Hi Christoph, (2013/06/12 19:47), Christoph Berg wrote: > Hi, > > thanks for the new regression test suite in psqlodbc - I've activated > it for the Debian package. > > It runs fine on all architectures except s390x (our 64bit s390 port) > where 3 tests fail: > > test sampletables ... ok > test connect ... ok > test stmthandles ... ok > test select ... ok > test getresult ... ok > test prepare ... FAILED > test params ... ok > test notice ... ok > test arraybinding ... FAILED > test insertreturning ... ok > test dataatexecution ... FAILED > test boolsaschar ... ok > test cvtnulldate ... ok > test alter ... ok Thanks for the report. Could you please try the attached patch? The patch changes both the driver and testsuite. regard, Hiroshsi Inoue
Attachment
Re: Hiroshi Inoue 2013-06-12 <51B88B07.8070007@tpf.co.jp> > Thanks for the report. > Could you please try the attached patch? > The patch changes both the driver and testsuite. The patch fixed all the problems, thanks! Btw, lots of files in the current release tarball seem to have dos line endings which broke the testsuite, I've recoded them for Debian, but it would be nice if the next tarball was clean. Also, test/src/common.o is not cleaned by the Makefile in test/. (And as a minor nitpick "make installcheck" should imho rather be "make check" because it doesn't install anything.) Christoph -- cb@df7cb.de | http://www.df7cb.de/