From 04e836a0113ff2b307746397564dd75f6ed8ece2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Thu, 1 Nov 2018 02:01:22 +0100 Subject: [PATCH] Support for autocommit=(true|false|on|off) #1758 --- lib/MySQL_Session.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 12f826cb0..53ad9d195 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -589,7 +589,31 @@ bool MySQL_Session::handler_CommitRollback(PtrSize_t *pkt) { bool MySQL_Session::handler_SetAutocommit(PtrSize_t *pkt) { size_t sal=strlen("set autocommit"); 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); + } if (strncasecmp((char *)"set autocommit",(char *)pkt->ptr+5,sal)==0) { + void *p = NULL; + for (int i=5+sal; isize; i++) { + *((char *)pkt->ptr+i) = tolower(*((char *)pkt->ptr+i)); + } + p = memmem(pkt->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); + if (p) { + memcpy(p,(void *)"1 ",4); + } + p = memmem(pkt->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); + if (p) { + memcpy(p,(void *)"1 ",2); + } __sync_fetch_and_add(&MyHGM->status.autocommit_cnt, 1); unsigned int i; bool eq=false;