Fixed parsing of SET with double quote

pull/1885/head
René Cannaò 7 years ago
parent 67869cd06c
commit a99e7ae207

@ -29,7 +29,7 @@ std::map<std::string,std::vector<string>> SetParser::parse() {
std::map<std::string,std::vector<string>> result;
#define NAMES "(NAMES)"
#define QUOTES "(?:'||\")"
#define QUOTES "(?:'|\")?"
#define NAME_VALUE "((?:\\w|\\d)+)"
#define SESSION "(?:|SESSION +|@@|@@session.)"
#define VAR "(\\w+)"

@ -39,7 +39,7 @@ LIBPROXYSQLAR=$(LDIR)/libproxysql.a
MYCPPFLAGS=-std=c++11 $(IDIRS) $(OPTZ) $(DEBUG) -ggdb
LDFLAGS+=
MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lconfig -lproxysql -ldaemon -ljemalloc -lconfig++ -lre2 -levent -lmariadbclient -Wl,-Bdynamic -lpthread -lm -lz -lrt -lcrypto -lssl $(EXTRALINK)
MYLIBS=-Wl,--export-dynamic -Wl,-Bstatic -lproxysql -ldaemon -ljemalloc -lre2 -lmariadbclient -Wl,-Bdynamic -lpthread -lm -lz -lrt -lcrypto -lssl $(EXTRALINK)
ifeq ($(UNAME_S),Darwin)
MYLIBS=-lre2 -lpthread -lm -lz -liconv

@ -80,6 +80,7 @@ static Test sql_mode[] = {
{ "SET sql_mode = 'TRADITIONAL'", { Expected("sql_mode", {"TRADITIONAL"}) } },
{ "SET SQL_MODE ='TRADITIONAL'", { Expected("sql_mode", {"TRADITIONAL"}) } },
{ "SET SQL_MODE = \"TRADITIONAL\"", { Expected("sql_mode", {"TRADITIONAL"}) } },
{ "SET SQL_MODE = TRADITIONAL", { Expected("sql_mode", {"TRADITIONAL"}) } },
};
void TestParse(const Test* tests, int ntests, const string& title) {
@ -107,6 +108,9 @@ TEST(TestParse, SET_SQL_MODE) {
static Test time_zone[] = {
{ "SET @@time_zone = 'Europe/Paris'", { Expected("time_zone", {"Europe/Paris"}) } },
{ "SET @@time_zone = '+00:00'", { Expected("time_zone", {"+00:00"}) } },
{ "SET @@time_zone = \"Europe/Paris\"", { Expected("time_zone", {"Europe/Paris"}) } },
{ "SET @@time_zone = \"+00:00\"", { Expected("time_zone", {"+00:00"}) } },
};
TEST(TestParse, SET_TIME_ZONE) {

Loading…
Cancel
Save