[CONC-632] mysql_reset_connection doesn't work with multiple results Created: 2023-02-04  Updated: 2023-05-02  Resolved: 2023-05-02

Status: Closed
Project: MariaDB Connector/C
Component/s: Other
Affects Version/s: 3.1.19, 3.3.3
Fix Version/s: 3.1.21

Type: Task Priority: Major
Reporter: Georg Richter Assignee: Georg Richter
Resolution: Fixed Votes: 0
Labels: None


 Description   

mysql_reset_connection returns error 2014 (commands out of sync) if there are multiple result sets.

static int test_reset2(MYSQL *my __attribute__((unused)))
{
  MYSQL *mysql= mysql_init(NULL);
  int rc;
 
  if (!my_test_connect(mysql, hostname, username, password, schema, port, socketname, CLIENT_REMEMBER_OPTIONS))
  {
    diag("Connection failed. Error: %s", mysql_error(mysql));
    mysql_close(mysql);
    return FAIL;
  }
 
  rc= mysql_query(mysql, "CREATE OR REPLACE PROCEDURE test_reset() "
                         "BEGIN "
                         "  SELECT 1;"
                         "  SELECT 2;"
                         "END");
  check_mysql_rc(rc, mysql);
 
  rc= mysql_query(mysql, "CALL test_reset()");
  check_mysql_rc(rc, mysql);
 
  rc= mysql_reset_connection(mysql);
  check_mysql_rc(rc, mysql);
 
  rc= mysql_ping(mysql);
  check_mysql_rc(rc, mysql);
 
  rc= mysql_query(mysql, "DROP PROCEDIRE test_reset");
  check_mysql_rc(rc, mysql);
 
  mysql_close(mysql);
  return OK;
}



 Comments   
Comment by Georg Richter [ 2023-05-02 ]

commit 11ba413498e2d418dd9a37ca39813a5d7f58d6f7

When resetting the connection with mysql reset_connection(), the
server_status must be checked and any other resultsets that may
exist must be removed.

Generated at Thu Feb 08 03:06:42 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.