From bd97c6602d60ad20ebdeb58c50990b9812c42a13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Sun, 30 Aug 2015 17:08:06 +0000 Subject: [PATCH] Modified generate_pkt_row2() in preparation to #342 --- include/MySQL_Protocol.h | 2 +- include/proxysql_structs.h | 1 + lib/MySQL_Protocol.cpp | 8 ++++---- lib/MySQL_Session.cpp | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/MySQL_Protocol.h b/include/MySQL_Protocol.h index 8fc6baa68..bf165b06b 100644 --- a/include/MySQL_Protocol.h +++ b/include/MySQL_Protocol.h @@ -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); diff --git a/include/proxysql_structs.h b/include/proxysql_structs.h index 07546926b..0df5e518c 100644 --- a/include/proxysql_structs.h +++ b/include/proxysql_structs.h @@ -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; diff --git a/lib/MySQL_Protocol.cpp b/lib/MySQL_Protocol.cpp index be3309f0b..e31529d4c 100644 --- a/lib/MySQL_Protocol.cpp +++ b/lib/MySQL_Protocol.cpp @@ -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))) { diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index c6bb22f55..e3f863b42 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -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;