/* Testcase for: Bug 77712 - mysql_real_query does not report an error for some queries! Compile : g++ bug77712.cpp -Wall -m64 -O1 -g -o bug77712.cpp `mysql_config --libs_r` `mysql_config --include` Run : ./bug77712 */ #include #include #include #include #include #include #include #include #include void db_query(MYSQL *dbc, const char *sql, const unsigned long len); #define QUERY1 "select polygon(linestring(point(1,1))) ;" #define QUERY2 "select a ;" int main(int argc, char *argv[]) { MYSQL *dbc=mysql_init(NULL); if(!mysql_real_connect(dbc, "127.0.0.1", "root","", NULL, 3306, "/tmp/mysql.sock", 0)) { fprintf(stderr,"#cannot connect: [%d] - %s!\n",mysql_errno(dbc),mysql_error(dbc)); return 1; } fprintf(stdout, "Connected: %s [%s]\n\n",mysql_get_host_info(dbc),mysql_get_server_info(dbc)); db_query(dbc,QUERY1,strlen(QUERY1)); db_query(dbc,QUERY2,strlen(QUERY2)); mysql_close(dbc); mysql_thread_end(); return 0; } void db_query(MYSQL *dbc, const char *sql, const unsigned long len) { int r=0,m = 0; MYSQL_RES *row = NULL; fprintf(stdout,"\nquery: %s;\n",sql); r = mysql_real_query(dbc, sql, len); printf("mysql_real_query returned: %d - mysql_errno: %d, mysql_error: %s\n",r,mysql_errno(dbc),mysql_error(dbc)); if(r) return; do { row = mysql_store_result(dbc); printf("mysql_store_result returned: %p - mysql_errno: %d, mysql_error: %s\n",row,mysql_errno(dbc),mysql_error(dbc)); if (r)mysql_free_result(row); else if (mysql_field_count(dbc) > 0) break; m = mysql_next_result(dbc); if (m>0) break; } while (0==m); }