diff options
author | unknown <jimw@mysql.com> | 2005-08-10 18:32:17 -0700 |
---|---|---|
committer | unknown <jimw@mysql.com> | 2005-08-10 18:32:17 -0700 |
commit | c1a7cfb7d5553ec9d1d2e993e29287b501284129 (patch) | |
tree | 8f7e0b27237aaa9d4b903707652d1074c68247f1 | |
parent | 888a931432cfe4f35744226563aafd5a1545650d (diff) | |
download | mariadb-git-c1a7cfb7d5553ec9d1d2e993e29287b501284129.tar.gz |
Fix mysql_info() returning bad data in the results of a multi-statement
query that mixed statements that do and do not return info. (Bug #11688)
mysql-test/r/metadata.result:
Add new results
mysql-test/t/metadata.test:
Add new regression test
sql-common/client.c:
Clear mysql->info in free_old_query()
-rw-r--r-- | mysql-test/r/metadata.result | 11 | ||||
-rw-r--r-- | mysql-test/t/metadata.test | 12 | ||||
-rw-r--r-- | sql-common/client.c | 5 |
3 files changed, 26 insertions, 2 deletions
diff --git a/mysql-test/r/metadata.result b/mysql-test/r/metadata.result index 8f25e6b7f4a..6297f9cdcb5 100644 --- a/mysql-test/r/metadata.result +++ b/mysql-test/r/metadata.result @@ -85,3 +85,14 @@ def aaa 1 1 8 20 1 N 32769 0 63 1 1 drop table t1; +create table t1 (i int); +insert into t1 values (1),(2),(3); +select * from t1 where i = 2; +drop table t1;// +affected rows: 0 +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +i +2 +affected rows: 1 +affected rows: 0 diff --git a/mysql-test/t/metadata.test b/mysql-test/t/metadata.test index b4edd15f5ef..65338448555 100644 --- a/mysql-test/t/metadata.test +++ b/mysql-test/t/metadata.test @@ -49,4 +49,16 @@ drop table t1; --disable_metadata +# +# Bug #11688: Bad mysql_info() results in multi-results +# +--enable_info +delimiter //; +create table t1 (i int); +insert into t1 values (1),(2),(3); +select * from t1 where i = 2; +drop table t1;// +delimiter ;// +--disable_info + # End of 4.1 tests diff --git a/sql-common/client.c b/sql-common/client.c index 860db63c531..73e136f7366 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -713,8 +713,9 @@ void free_old_query(MYSQL *mysql) if (mysql->fields) free_root(&mysql->field_alloc,MYF(0)); init_alloc_root(&mysql->field_alloc,8192,0); /* Assume rowlength < 8192 */ - mysql->fields=0; - mysql->field_count=0; /* For API */ + mysql->fields= 0; + mysql->field_count= 0; /* For API */ + mysql->info= 0; DBUG_VOID_RETURN; } |