| Bug #87705 | row_count() set to 0 after client mysql_ping() command | ||
|---|---|---|---|
| Submitted: | 8 Sep 2017 10:12 | Modified: | 9 Sep 2017 16:22 |
| Reporter: | Arthur Tokarchuk | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: C API (client library) | Severity: | S3 (Non-critical) |
| Version: | 5.6.33 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[8 Sep 2017 10:12]
Arthur Tokarchuk
[8 Sep 2017 12:45]
MySQL Verification Team
Hello Arthur, Thank you for the report. Please note that we don't work on DBD::mysql bugs anymore. All its bugs should go to CPAN: https://rt.cpan.org/Public/Dist/Display.html?Name=DBD-mysql Thanks, Umesh
[8 Sep 2017 12:48]
Arthur Tokarchuk
But it's not a perl DBD bug, it is C API bug. C API mysql_ping call breaks row_count().
[9 Sep 2017 5:02]
Tsubasa Tanaka
I can reproduce this behavior using Connector/C, following schema and program.
mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`num` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`val` varchar(32) DEFAULT NULL,
UNIQUE KEY `num` (`num`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.02 sec)
```
#include <iostream>
#include <mysql.h>
int main()
{
MYSQL mysql;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", NULL, "d1", 0, "/var/lib/mysql/mysql.sock", 0);
mysql_query(&mysql, "INSERT INTO t1 VALUES (1, 'one')");
mysql_ping(&mysql);
MYSQL_RES *res;
mysql_query(&mysql, "SELECT row_count()");
res= mysql_store_result(&mysql);
MYSQL_ROW row;
row= mysql_fetch_row(res);
std::cout << row[0] << std::endl;
}
```
$ gcc -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -lstdc++ -g3 -O0 test.cc
$ ./a.out
0
[9 Sep 2017 16:22]
MySQL Verification Team
Thank you for the feedback.
### MySQL Server 5.7.19, Connector/C - 6.1.11
[umshastr@hod03]/export/umesh/server/binaries/GABuilds/mysql-5.7.19: bin/mysql -uroot -S /tmp/mysql_ushastry.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.19 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
root@localhost [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)
root@localhost [(none)]> use test
Database changed
root@localhost [test]> CREATE TABLE `t1` (
-> `num` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
-> `val` varchar(32) DEFAULT NULL,
-> UNIQUE KEY `num` (`num`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.00 sec)
root@localhost [test]> \q
Bye
--
[umshastr@hod03]/export/umesh/server/binaries/GABuilds/mysql-5.7.19: gcc -I/export/umesh/server/binaries/connectrors/mysql-connector-c-6.1.11-linux-glibc2.12-x86_64/include -L/export/umesh/server/binaries/connectrors/mysql-connector-c-6.1.11-linux-glibc2.12-x86_64/lib -lmysqlclient -lstdc++ -g3 -O0 test.cc
[umshastr@hod03]/export/umesh/server/binaries/GABuilds/mysql-5.7.19:
[umshastr@hod03]/export/umesh/server/binaries/GABuilds/mysql-5.7.19: ./a.out
0
