|
|
|
|
@ -588,29 +588,30 @@ bool MySQL_Session::handler_CommitRollback(PtrSize_t *pkt) {
|
|
|
|
|
// FIXME: This function is currently disabled . See #469
|
|
|
|
|
bool MySQL_Session::handler_SetAutocommit(PtrSize_t *pkt) {
|
|
|
|
|
size_t sal=strlen("set autocommit");
|
|
|
|
|
char *ptr = (char *)pkt->ptr;
|
|
|
|
|
if ( pkt->size >= 7+sal) {
|
|
|
|
|
if (strncasecmp((char *)"SET @@session.autocommit",(char *)pkt->ptr+5,strlen((char *)"SET @@session.autocommit"))==0) {
|
|
|
|
|
memmove(pkt->ptr+9, pkt->ptr+19, pkt->size - 19);
|
|
|
|
|
memset(pkt->ptr+pkt->size-10,' ',10);
|
|
|
|
|
memmove(ptr+9, ptr+19, pkt->size - 19);
|
|
|
|
|
memset(ptr + pkt->size-10,' ',10);
|
|
|
|
|
}
|
|
|
|
|
if (strncasecmp((char *)"set autocommit",(char *)pkt->ptr+5,sal)==0) {
|
|
|
|
|
void *p = NULL;
|
|
|
|
|
for (int i=5+sal; i<pkt->size; i++) {
|
|
|
|
|
for (int i=5+sal; i < (int)pkt->size; i++) {
|
|
|
|
|
*((char *)pkt->ptr+i) = tolower(*((char *)pkt->ptr+i));
|
|
|
|
|
}
|
|
|
|
|
p = memmem(pkt->ptr+5+sal, pkt->size-5-sal, (void *)"false", 5);
|
|
|
|
|
p = memmem(ptr+5+sal, pkt->size-5-sal, (void *)"false", 5);
|
|
|
|
|
if (p) {
|
|
|
|
|
memcpy(p,(void *)"0 ",5);
|
|
|
|
|
}
|
|
|
|
|
p = memmem(pkt->ptr+5+sal, pkt->size-5-sal, (void *)"true", 4);
|
|
|
|
|
p = memmem(ptr+5+sal, pkt->size-5-sal, (void *)"true", 4);
|
|
|
|
|
if (p) {
|
|
|
|
|
memcpy(p,(void *)"1 ",4);
|
|
|
|
|
}
|
|
|
|
|
p = memmem(pkt->ptr+5+sal, pkt->size-5-sal, (void *)"off", 3);
|
|
|
|
|
p = memmem(ptr+5+sal, pkt->size-5-sal, (void *)"off", 3);
|
|
|
|
|
if (p) {
|
|
|
|
|
memcpy(p,(void *)"0 ",3);
|
|
|
|
|
}
|
|
|
|
|
p = memmem(pkt->ptr+5+sal, pkt->size-5-sal, (void *)"on", 2);
|
|
|
|
|
p = memmem(ptr+5+sal, pkt->size-5-sal, (void *)"on", 2);
|
|
|
|
|
if (p) {
|
|
|
|
|
memcpy(p,(void *)"1 ",2);
|
|
|
|
|
}
|
|
|
|
|
|