Skip Menu |

This queue is for tickets about the DBD-mysql CPAN distribution.

Report information
The Basics
Id: 89537
Status: resolved
Priority: 0/
Queue: DBD-mysql

People
Owner: CAPTTOFU [...] cpan.org
Requestors: TODDR [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 4.024
Fixed in: 4.040



Subject: make tests fail against mariadb-native-client commit 101
I've just run make test against DBD-mysql 4.024 against mariadb-native-client commit 101. This test fails for me when I run Makefile.PL with --ps-protocol $>prove -bvm t/40types.t t/40types.t .. err perl 1..20 ok 1 - Connected to database ok 2 - making slate clean ok 3 - creating table ok 4 - getting table information ok 5 - checking column type ok 6 ok 7 - cleaning up ok 8 - creating table ok 9 - binding parameter ok 10 - inserting data ok 11 ok 12 - binding parameter ok 13 - inserting data ok 14 ok 15 ok 16 - cleaning up ok 17 - creating table ok 18 - loading data not ok 19 # Failed test at t/40types.t line 67. # Structures begin differing at: # $got->[1][0] = '18446744073709551615' # $expected->[1][0] = '4294967295' ok 20 - cleaning up # Looks like you failed 1 test of 20. Dubious, test returned 1 (wstat 256, 0x100) Failed 1/20 subtests Test Summary Report ------------------- t/40types.t (Wstat: 256 Tests: 20 Failed: 1) Failed test: 19 Non-zero exit status: 1 Files=1, Tests=20, 0 wallclock secs ( 0.04 usr 0.01 sys + 0.04 cusr 0.01 csys = 0.10 CPU) Result: FAIL
Tests run fine without the --ps-protocol option to Makefile.PL
thanks for reporting this issue. I found tests also fail if I use --ps-protocol with 'normal' mysql client libraries. My test output below. @Patrick - I have not much clue about --ps-protocol but I noticed the first failing tests have specified explicitly bind_param in the inserts. Could this be a problem? I noticed there are quite a few bugs open related to prepared statements and type guessing. t/00base.t ........................... ok t/10connect.t ........................ ok t/15reconnect.t ...................... ok t/20createdrop.t ..................... ok t/25lockunlock.t ..................... ok t/29warnings.t ....................... ok t/30insertfetch.t .................... ok t/31insertid.t ....................... ok t/32insert_error.t ................... ok t/35limit.t .......................... ok t/35prepare.t ........................ ok t/40bindparam.t ...................... ok t/40bindparam2.t ..................... ok t/40blobs.t .......................... ok t/40catalog.t ........................ ok t/40keyinfo.t ........................ ok t/40listfields.t ..................... ok t/40nulls.t .......................... ok t/40nulls_prepare.t .................. 1/22 # Failed test at t/40nulls_prepare.t line 70. # Structures begin differing at: # $got = undef # $expected = ARRAY(0x8b292e8) # Looks like you failed 1 test of 22. t/40nulls_prepare.t .................. Dubious, test returned 1 (wstat 256, 0x100) Failed 1/22 subtests t/40numrows.t ........................ ok t/40server_prepare.t ................. ok t/40server_prepare_error.t ........... ok t/40types.t .......................... ok t/41bindparam.t ...................... ok t/41blobs_prepare.t .................. ok t/42bindparam.t ...................... ok t/43count_params.t ................... ok t/50chopblanks.t ..................... ok t/50commit.t ......................... ok t/51bind_type_guessing.t ............. 1/25 DBD::mysql::st execute failed: Lost connection to MySQL server during query at t/51bind_type_guessing.t line 82. DBD::mysql::st execute failed: Lost connection to MySQL server during query at t/51bind_type_guessing.t line 82. Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle test;mysql_server_prepare=1 at t/51bind_type_guessing.t line 82. # Looks like you planned 25 tests but ran 23. # Looks like your test exited with 255 just after 23. t/51bind_type_guessing.t ............. Dubious, test returned 255 (wstat 65280, 0xff00) Failed 2/25 subtests t/52comment.t ........................ skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Can't continue test t/53comment.t ........................ skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2), DBI connect('test;mysql_server_prepare=1','test',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at t/53comment.t line 15. t/55utf8.t ........................... skipped: ERROR: DBI connect('test;mysql_server_prepare=1','test',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at t/55utf8.t line 15. t/60leaks.t .......................... skipped: Skip $ENV{EXTENDED_TESTING} is not set t/65segfault.t ....................... skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Can't continue test t/65types.t .......................... skipped: ERROR: DBI connect('test;mysql_server_prepare=1','test',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at t/65types.t line 14. t/70takeimp.t ........................ skipped: Can't connect to database ERROR: DBI connect('test;mysql_server_prepare=1','test',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at t/70takeimp.t line 21. t/71impdata.t ........................ DBI connect('test;mysql_server_prepare=1','test',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at t/71impdata.t line 14. t/71impdata.t ........................ skipped: Can't obtain driver handle. Can't continue test t/75supported_sql.t .................. skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Can't continue test t/76multi_statement.t ................ skipped: ERROR: DBI connect('test;mysql_server_prepare=1','test',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at t/76multi_statement.t line 16. t/80procs.t .......................... skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Can't continue test t/81procs.t .......................... skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Can't continue test t/85init_command.t ................... skipped: ERROR: �� @�� @local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Can't continue test t/86_bug_36972.t ..................... skipped: ERROR: DBI connect('test;mysql_server_prepare=1','test',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at t/86_bug_36972.t line 15. t/87async.t .......................... skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Can't continue test t/88async-multi-stmts.t .............. skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Can't continue test t/89async-method-check.t ............. skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Can't continue test t/90no-async.t ....................... skipped: ERROR: �� @�� @local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Can't continue test t/91errcheck.t ....................... skipped: ERROR: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Can't continue test t/99_bug_server_prepare_blob_null.t .. ok t/pod.t .............................. ok t/rt83494-quotes-comments.t .......... ok t/rt85919-fetch-lost-connection.t .... ok Test Summary Report ------------------- t/40nulls_prepare.t (Wstat: 256 Tests: 22 Failed: 1) Failed test: 19 Non-zero exit status: 1 t/51bind_type_guessing.t (Wstat: 65280 Tests: 23 Failed: 0) Non-zero exit status: 255 Parse errors: Bad plan. You planned 25 tests but ran 23. Files=53, Tests=717, 11 wallclock secs ( 0.13 usr 0.17 sys + 2.74 cusr 0.57 csys = 3.61 CPU) Result: FAIL Failed 2/53 test programs. 1/717 subtests failed. make: *** [test_dynamic] Error 255
Michiel, et al, --ps-protocol causes "mysql_server_prepare=1" to be appended to the DSN and server-side prepare to be used. Years ago, MySQL decided that this wasn't really supported and asked all maintainers to switch to the emulated prepare. I did so, but still tried to maintain it working but in recent years this test seems to have started failing. The only way to know whether it's the driver or the client/server is to write the same test in C to verify. Two options 1. Spend time trying to debug where this fails in the code, something I've spent a bit of time doing 2. Support only what MySQL (Sky, Oracle, Percona) support and leave this as optional
What version is this test yielding these results? I've never seen it fail this badly. On Wed Oct 16 06:33:19 2013, MICHIELB wrote: Show quoted text
> thanks for reporting this issue. I found tests also fail if I use > --ps-protocol with 'normal' mysql client libraries. My test output > below. > > @Patrick - I have not much clue about --ps-protocol but I noticed the > first failing tests have specified explicitly bind_param in the > inserts. Could this be a problem? > > I noticed there are quite a few bugs open related to prepared > statements and type guessing. > > t/00base.t ........................... ok > t/10connect.t ........................ ok > t/15reconnect.t ...................... ok > t/20createdrop.t ..................... ok > t/25lockunlock.t ..................... ok > t/29warnings.t ....................... ok > t/30insertfetch.t .................... ok > t/31insertid.t ....................... ok > t/32insert_error.t ................... ok > t/35limit.t .......................... ok > t/35prepare.t ........................ ok > t/40bindparam.t ...................... ok > t/40bindparam2.t ..................... ok > t/40blobs.t .......................... ok > t/40catalog.t ........................ ok > t/40keyinfo.t ........................ ok > t/40listfields.t ..................... ok > t/40nulls.t .......................... ok > t/40nulls_prepare.t .................. 1/22 > # Failed test at t/40nulls_prepare.t line 70. > # Structures begin differing at: > # $got = undef > # $expected = ARRAY(0x8b292e8) > # Looks like you failed 1 test of 22. > t/40nulls_prepare.t .................. Dubious, test returned 1 (wstat > 256, 0x100) > Failed 1/22 subtests > t/40numrows.t ........................ ok > t/40server_prepare.t ................. ok > t/40server_prepare_error.t ........... ok > t/40types.t .......................... ok > t/41bindparam.t ...................... ok > t/41blobs_prepare.t .................. ok > t/42bindparam.t ...................... ok > t/43count_params.t ................... ok > t/50chopblanks.t ..................... ok > t/50commit.t ......................... ok > t/51bind_type_guessing.t ............. 1/25 DBD::mysql::st execute > failed: Lost connection to MySQL server during query at > t/51bind_type_guessing.t line 82. > DBD::mysql::st execute failed: Lost connection to MySQL server during > query at t/51bind_type_guessing.t line 82. > Issuing rollback() due to DESTROY without explicit disconnect() of > DBD::mysql::db handle test;mysql_server_prepare=1 at > t/51bind_type_guessing.t line 82. > # Looks like you planned 25 tests but ran 23. > # Looks like your test exited with 255 just after 23. > t/51bind_type_guessing.t ............. Dubious, test returned 255 > (wstat 65280, 0xff00) > Failed 2/25 subtests > t/52comment.t ........................ skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' > (2). Can't continue test > t/53comment.t ........................ skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' > (2), DBI connect('test;mysql_server_prepare=1','test',...) failed: > Can't connect to local MySQL server through socket > '/var/run/mysqld/mysqld.sock' (2) at t/53comment.t line 15. > t/55utf8.t ........................... skipped: ERROR: DBI > connect('test;mysql_server_prepare=1','test',...) failed: Can't > connect to local MySQL server through socket > '/var/run/mysqld/mysqld.sock' (2) at t/55utf8.t line 15. > t/60leaks.t .......................... skipped: Skip > $ENV{EXTENDED_TESTING} is not set > t/65segfault.t ....................... skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' > (2). Can't continue test > t/65types.t .......................... skipped: ERROR: DBI > connect('test;mysql_server_prepare=1','test',...) failed: Can't > connect to local MySQL server through socket > '/var/run/mysqld/mysqld.sock' (2) at t/65types.t line 14. > t/70takeimp.t ........................ skipped: Can't connect to > database ERROR: DBI connect('test;mysql_server_prepare=1','test',...) > failed: Can't connect to local MySQL server through socket > '/var/run/mysqld/mysqld.sock' (2) at t/70takeimp.t line 21. > t/71impdata.t ........................ DBI > connect('test;mysql_server_prepare=1','test',...) failed: Can't > connect to local MySQL server through socket > '/var/run/mysqld/mysqld.sock' (2) at t/71impdata.t line 14. > t/71impdata.t ........................ skipped: Can't obtain driver > handle. Can't continue test > t/75supported_sql.t .................. skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' > (2). Can't continue test > t/76multi_statement.t ................ skipped: ERROR: DBI > connect('test;mysql_server_prepare=1','test',...) failed: Can't > connect to local MySQL server through socket > '/var/run/mysqld/mysqld.sock' (2) at t/76multi_statement.t line 16. > t/80procs.t .......................... skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' > (2). Can't continue test > t/81procs.t .......................... skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' > (2). Can't continue test > t/85init_command.t ................... skipped: ERROR: �� @�� @local > MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Can't > continue test > t/86_bug_36972.t ..................... skipped: ERROR: DBI > connect('test;mysql_server_prepare=1','test',...) failed: Can't > connect to local MySQL server through socket > '/var/run/mysqld/mysqld.sock' (2) at t/86_bug_36972.t line 15. > t/87async.t .......................... skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) > Can't continue test > t/88async-multi-stmts.t .............. skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) > Can't continue test > t/89async-method-check.t ............. skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) > Can't continue test > t/90no-async.t ....................... skipped: ERROR: �� @�� @local > MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Can't > continue test > t/91errcheck.t ....................... skipped: ERROR: Can't connect > to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) > Can't continue test > t/99_bug_server_prepare_blob_null.t .. ok > t/pod.t .............................. ok > t/rt83494-quotes-comments.t .......... ok > t/rt85919-fetch-lost-connection.t .... ok > > Test Summary Report > ------------------- > t/40nulls_prepare.t (Wstat: 256 Tests: 22 Failed: 1) > Failed test: 19 > Non-zero exit status: 1 > t/51bind_type_guessing.t (Wstat: 65280 Tests: 23 Failed: 0) > Non-zero exit status: 255 > Parse errors: Bad plan. You planned 25 tests but ran 23. > Files=53, Tests=717, 11 wallclock secs ( 0.13 usr 0.17 sys + 2.74 > cusr 0.57 csys = 3.61 CPU) > Result: FAIL > Failed 2/53 test programs. 1/717 subtests failed. > make: *** [test_dynamic] Error 255
Fixed in 4.040.