Closes #3247: Added support for command 'SELECT CONNECTION_ID()' in order to support 'mycli' client

pull/3344/head
Javier Jaramago Fernández 5 years ago
parent 5455b7d228
commit dfc51c3352

@ -4014,6 +4014,39 @@ void admin_session_handler(MySQL_Session *sess, void *_pa, PtrSize_t *pkt) {
goto __run_query;
}
// trivial implementation for 'connection_id()' to support 'mycli'. See #3247
if (!strncasecmp("select connection_id()", query_no_space, strlen("select connection_id()"))) {
char buf[32];
// 'connection_id()' is always forced to be '0'
sprintf(buf, "%lu", static_cast<unsigned long>(0));
uint16_t setStatus = 0;
MySQL_Data_Stream* myds=sess->client_myds;
MySQL_Protocol* myprot=&sess->client_myds->myprot;
myds->DSS=STATE_QUERY_SENT_DS;
int sid = 1;
myprot->generate_pkt_column_count(true,NULL,NULL,sid,1);
sid++;
myprot->generate_pkt_field(
true, NULL, NULL, sid, (char *)"", (char *)"", (char *)"",
(char *)"CONNECTION_ID()", (char *)"", 63, 31, MYSQL_TYPE_LONGLONG, 161, 0, false, 0, NULL
);
sid++;
myds->DSS=STATE_COLUMN_DEFINITION;
myprot->generate_pkt_EOF(true,NULL,NULL,sid,0, setStatus); sid++;
char **p=(char **)malloc(sizeof(char*)*1);
unsigned long *l=(unsigned long *)malloc(sizeof(unsigned long *)*1);
l[0]=strlen(buf);;
p[0]=buf;
myprot->generate_pkt_row(true,NULL,NULL,sid,1,l,p); sid++;
myds->DSS=STATE_ROW;
myprot->generate_pkt_EOF(true,NULL,NULL,sid,0, setStatus); sid++;
myds->DSS=STATE_SLEEP;
run_query=false;
free(l);
free(p);
goto __run_query;
}
if (query_no_space_length==SELECT_DB_USER_LEN) {
if (!strncasecmp(SELECT_DB_USER, query_no_space, query_no_space_length)) {
l_free(query_length,query);

Loading…
Cancel
Save