Added pepared statements and field lsit support to the command types

to duplciate
This commit is contained in:
Mark Riddoch 2014-12-12 10:02:24 +00:00
parent c266a2cf57
commit 1fc063b437

View File

@ -59,9 +59,28 @@
#include <router.h>
#include <dcb.h>
#define MYSQL_COM_QUIT 0x01
#define MYSQL_COM_INITDB 0x02
#define MYSQL_COM_CHANGE_USER 0x11
#define MYSQL_COM_QUIT 0x01
#define MYSQL_COM_INITDB 0x02
#define MYSQL_COM_FIELD_LIST 0x04
#define MYSQL_COM_CHANGE_USER 0x11
#define MYSQL_COM_STMT_PREPARE 0x16
#define MYSQL_COM_STMT_EXECUTE 0x17
#define MYSQL_COM_STMT_SEND_LONG_DATA 0x18
#define MYSQL_COM_STMT_CLOSE 0x19
#define MYSQL_COM_STMT_RESET 0x1a
static unsigned char required_packets[] = {
MYSQL_COM_QUIT,
MYSQL_COM_INITDB,
MYSQL_COM_FIELD_LIST,
MYSQL_COM_CHANGE_USER,
MYSQL_COM_STMT_PREPARE,
MYSQL_COM_STMT_EXECUTE,
MYSQL_COM_STMT_SEND_LONG_DATA,
MYSQL_COM_STMT_CLOSE,
MYSQL_COM_STMT_RESET,
0 };
/** Defined in log_manager.cc */
extern int lm_enabled_logfiles_bitmask;
@ -507,12 +526,12 @@ static int
packet_is_required(GWBUF *queue)
{
uint8_t *ptr;
int i;
ptr = GWBUF_DATA(queue);
if (GWBUF_LENGTH(queue) > 4 &&
(ptr[4] == MYSQL_COM_QUIT || ptr[4] == MYSQL_COM_INITDB
|| ptr[4] == MYSQL_COM_CHANGE_USER))
return 1;
else
return 0;
if (GWBUF_LENGTH(queue) > 4)
for (i = 0; required_packets[i]; i++)
if (ptr[4] == required_packets[i])
return 1;
return 0;
}