Minor protocol fixes

Bugfixes:
- didn't remember flags generate_STMT_PREPARE_RESPONSE()
- was returning 2 warnings for INIT_DB
pull/1209/head
René Cannaò 9 years ago
parent dd7b1acad4
commit 225e1f15fc

@ -787,6 +787,13 @@ bool MySQL_Protocol::generate_STMT_PREPARE_RESPONSE(uint8_t sequence_id, MySQL_S
memcpy(okpack+14,&stmt_info->warning_count,sizeof(uint16_t));
(*myds)->PSarrayOUT->add((void *)okpack,16);
sid++;
int setStatus = SERVER_STATUS_AUTOCOMMIT;
if (myds) {
setStatus = 0;
unsigned int Trx_id = (*myds)->sess->FindOneActiveTransaction();
setStatus = (Trx_id >= 0 ? SERVER_STATUS_IN_TRANS : 0 );
if ((*myds)->sess->autocommit) setStatus += SERVER_STATUS_AUTOCOMMIT;
}
if (stmt_info->num_params) {
for (i=0; i<stmt_info->num_params; i++) {
generate_pkt_field(true,NULL,NULL,sid,
@ -794,7 +801,7 @@ bool MySQL_Protocol::generate_STMT_PREPARE_RESPONSE(uint8_t sequence_id, MySQL_S
63,0,253,128,0,false,0,NULL); // NOTE: charset is 63 = binary !
sid++;
}
generate_pkt_EOF(true,NULL,NULL,sid,0,SERVER_STATUS_AUTOCOMMIT); // FIXME : for now we pass a very broken flag
generate_pkt_EOF(true,NULL,NULL,sid,0,setStatus);
sid++;
}
if (stmt_info->num_columns) {
@ -804,10 +811,10 @@ bool MySQL_Protocol::generate_STMT_PREPARE_RESPONSE(uint8_t sequence_id, MySQL_S
fd->db,
fd->table, fd->org_table,
fd->name, fd->org_name,
fd->charsetnr, field->length, fd->type, fd->flags, fd->decimals, false,0,NULL);
fd->charsetnr, fd->length, fd->type, fd->flags, fd->decimals, false,0,NULL);
sid++;
}
generate_pkt_EOF(true,NULL,NULL,sid,0,SERVER_STATUS_AUTOCOMMIT); // FIXME : for now we pass a very broken flag
generate_pkt_EOF(true,NULL,NULL,sid,0,setStatus);
sid++;
}
return true;

@ -3435,7 +3435,7 @@ void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C
unsigned int nTrx=NumActiveTransactions();
uint16_t setStatus = (nTrx ? SERVER_STATUS_IN_TRANS : 0 );
if (autocommit) setStatus += SERVER_STATUS_AUTOCOMMIT;
client_myds->myprot.generate_pkt_OK(true,NULL,NULL,1,0,0,setStatus,2,NULL);
client_myds->myprot.generate_pkt_OK(true,NULL,NULL,1,0,0,setStatus,0,NULL);
client_myds->DSS=STATE_SLEEP;
} else {
l_free(pkt->size,pkt->ptr);
@ -3474,7 +3474,7 @@ void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C
unsigned int nTrx=NumActiveTransactions();
uint16_t setStatus = (nTrx ? SERVER_STATUS_IN_TRANS : 0 );
if (autocommit) setStatus += SERVER_STATUS_AUTOCOMMIT;
client_myds->myprot.generate_pkt_OK(true,NULL,NULL,1,0,0,setStatus,2,NULL);
client_myds->myprot.generate_pkt_OK(true,NULL,NULL,1,0,0,setStatus,0,NULL);
client_myds->DSS=STATE_SLEEP;
} else {
l_free(pkt->size,pkt->ptr);

Loading…
Cancel
Save