diff --git a/query_classifier/qc_sqlite/sqlite-src-3110100/src/tokenize.c b/query_classifier/qc_sqlite/sqlite-src-3110100/src/tokenize.c index fc958424b..ebaee5fcc 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/src/tokenize.c +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/src/tokenize.c @@ -679,7 +679,7 @@ int sqlite3GetToken(const unsigned char *z, int *tokenType){ if (pParse) { if (z != (const unsigned char *)pParse->zTail) { const char *p = (const char*)z - 1; - while ((p != pParse->zTail) && sqlite3Isspace(*p)) { + while ((p != pParse->zTail) && sqlite3Isspace(*p) && *p != '\n') { --p; } diff --git a/query_classifier/test/compare.cc b/query_classifier/test/compare.cc index c90bc7409..84d97407d 100644 --- a/query_classifier/test/compare.cc +++ b/query_classifier/test/compare.cc @@ -1530,6 +1530,7 @@ int main(int argc, char* argv[]) string classifier2Args("log_unrecognized_statements=1"); version = 10 * 1000 * 2 * 100; #endif + string statement; const char* zStatement = NULL; qc_sql_mode_t sql_mode = QC_SQL_MODE_DEFAULT; bool solo = false; @@ -1581,7 +1582,34 @@ int main(int argc, char* argv[]) break; case 's': - zStatement = optarg; + { + const char* z = optarg; + + while (*z) + { + switch (*z) + { + case '\\': + if (*(z + 1) == 'n') + { + statement += '\n'; + ++z; + } + else + { + statement += *z; + } + break; + + default: + statement += *z; + } + + ++z; + } + + zStatement = statement.c_str(); + } break; case 'm':