Modified generate_pkt_row2() in preparation to #342

pull/378/head
René Cannaò 11 years ago
parent b8d9ef3a29
commit bd97c6602d

@ -69,7 +69,7 @@ class MySQL_Protocol {
// bool generate_pkt_field(MySQL_Data_Stream *myds, bool send, void **ptr, unsigned int *len, uint8_t sequence_id, char *schema, char *table, char *org_table, char *name, char *org_name, uint16_t charset, uint32_t column_length, uint8_t type, uint16_t flags, uint8_t decimals, bool field_list, uint64_t defvalue_length, char *defvalue);
bool generate_pkt_field(bool send, void **ptr, unsigned int *len, uint8_t sequence_id, char *schema, char *table, char *org_table, char *name, char *org_name, uint16_t charset, uint32_t column_length, uint8_t type, uint16_t flags, uint8_t decimals, bool field_list, uint64_t defvalue_length, char *defvalue);
bool generate_pkt_row(bool send, void **ptr, unsigned int *len, uint8_t sequence_id, int colnums, unsigned long *fieldslen, char **fieldstxt);
uint8_t generate_pkt_row2(unsigned int *len, uint8_t sequence_id, int colnums, unsigned long *fieldslen, char **fieldstxt);
uint8_t generate_pkt_row2(PtrSizeArray *PSarrayOut, unsigned int *len, uint8_t sequence_id, int colnums, unsigned long *fieldslen, char **fieldstxt);
// bool generate_pkt_initial_handshake(MySQL_Data_Stream *myds, bool send, void **ptr, unsigned int *len);
bool generate_pkt_initial_handshake(bool send, void **ptr, unsigned int *len, uint32_t *thread_id);
// bool generate_pkt_handshake_response(MySQL_Data_Stream *myds, bool send, void **ptr, unsigned int *len);

@ -255,6 +255,7 @@ class MySQL_Authentication;
class MySQL_Connection;
class MySQL_Protocol;
class PtrArray;
class PtrSizeArray;
class StatCounters;
class ProxySQL_ConfigFile;
//class MySQL_Server;

@ -1139,7 +1139,7 @@ bool MySQL_Protocol::generate_pkt_row(bool send, void **ptr, unsigned int *len,
return true;
}
uint8_t MySQL_Protocol::generate_pkt_row2(unsigned int *len, uint8_t sequence_id, int colnums, unsigned long *fieldslen, char **fieldstxt) {
uint8_t MySQL_Protocol::generate_pkt_row2(PtrSizeArray *PSarrayOut, unsigned int *len, uint8_t sequence_id, int colnums, unsigned long *fieldslen, char **fieldstxt) {
int col=0;
unsigned int rowlen=0;
uint8_t pkt_sid=sequence_id;
@ -1166,7 +1166,7 @@ uint8_t MySQL_Protocol::generate_pkt_row2(unsigned int *len, uint8_t sequence_id
myhdr.pkt_id=pkt_sid;
myhdr.pkt_length=rowlen;
memcpy(pkt.ptr, &myhdr, sizeof(mysql_hdr));
(*myds)->PSarrayOUT->add(pkt.ptr,pkt.size);
PSarrayOut->add(pkt.ptr,pkt.size);
} else {
unsigned int left=pkt.size;
unsigned int copied=0;
@ -1180,7 +1180,7 @@ uint8_t MySQL_Protocol::generate_pkt_row2(unsigned int *len, uint8_t sequence_id
pkt_sid++;
myhdr.pkt_length=0xFFFFFF;
memcpy(pkt2.ptr, &myhdr, sizeof(mysql_hdr));
(*myds)->PSarrayOUT->add(pkt2.ptr,pkt2.size);
PSarrayOut->add(pkt2.ptr,pkt2.size);
copied+=0xFFFFFF;
left-=0xFFFFFF;
}
@ -1192,7 +1192,7 @@ uint8_t MySQL_Protocol::generate_pkt_row2(unsigned int *len, uint8_t sequence_id
myhdr.pkt_id=pkt_sid;
myhdr.pkt_length=left-sizeof(mysql_hdr);
memcpy(pkt2.ptr, &myhdr, sizeof(mysql_hdr));
(*myds)->PSarrayOUT->add(pkt2.ptr,pkt2.size);
PSarrayOut->add(pkt2.ptr,pkt2.size);
}
if (len) { *len=pkt.size+(pkt_sid-sequence_id)*sizeof(mysql_hdr); }
if (pkt.size >= (0xFFFFFF+sizeof(mysql_hdr))) {

@ -1836,7 +1836,7 @@ void MySQL_Session::MySQL_Result_to_MySQL_wire(MYSQL *mysql, MYSQL_RES *result,
// l[i]=result->rows[r]->sizes[i];
// p[i]=result->rows[r]->fields[i];
// }
sid=myprot->generate_pkt_row2(&pkt_length,sid,num_fields,lengths,row); sid++;
sid=myprot->generate_pkt_row2(myds->PSarrayOUT, &pkt_length,sid,num_fields,lengths,row); sid++;
client_myds->resultset_length+=pkt_length;
}
myds->DSS=STATE_ROW;

Loading…
Cancel
Save