Loading mysql-test/r/ctype_sjis.result +2 −2 Original line number Diff line number Diff line Loading @@ -172,6 +172,6 @@ c2h ab_def drop table t1; SET NAMES sjis; SELECT HEX('佐淘 \圭') FROM DUAL; HEX('佐淘 \圭') SELECT HEX('@\') FROM DUAL; HEX('@\') 8DB2939181408C5C mysql-test/t/ctype_sjis.test +1 −1 Original line number Diff line number Diff line Loading @@ -78,6 +78,6 @@ SET collation_connection='sjis_bin'; --character_set sjis SET NAMES sjis; SELECT HEX('@\\') FROM DUAL; SELECT HEX('@\') FROM DUAL; # End of 4.1 tests sql/sql_lex.cc +5 −26 Original line number Diff line number Diff line Loading @@ -310,17 +310,6 @@ static char *get_text(LEX *lex) found_escape=1; if (lex->ptr == lex->end_of_query) return 0; #ifdef USE_MB int l; if (use_mb(cs) && (l = my_ismbchar(cs, (const char *)lex->ptr, (const char *)lex->end_of_query))) { lex->ptr += l; continue; } else #endif yySkip(); } else if (c == sep) Loading Loading @@ -350,9 +339,6 @@ static char *get_text(LEX *lex) { uchar *to; /* Re-use found_escape for tracking state of escapes */ found_escape= 0; for (to=start ; str != end ; str++) { #ifdef USE_MB Loading @@ -366,8 +352,7 @@ static char *get_text(LEX *lex) continue; } #endif if (!found_escape && !(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) && if (!(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) && *str == '\\' && str+1 != end) { switch(*++str) { Loading @@ -394,20 +379,14 @@ static char *get_text(LEX *lex) *to++= '\\'; // remember prefix for wildcard /* Fall through */ default: found_escape= 1; str--; *to++= *str; break; } } else if (!found_escape && *str == sep) { found_escape= 1; } else if (*str == sep) *to++= *str++; // Two ' or " else { *to++ = *str; found_escape= 0; } } *to=0; lex->yytoklen=(uint) (to-start); Loading tests/mysql_client_test.c +14 −7 Original line number Diff line number Diff line Loading @@ -12794,25 +12794,26 @@ from t2);"); static void test_bug8378() { #if defined(HAVE_CHARSET_gbk) && !defined(EMBEDDED_LIBRARY) MYSQL *lmysql; MYSQL *old_mysql=mysql; char out[9]; /* strlen(TEST_BUG8378)*2+1 */ int len; char buf[256]; int len, rc; myheader("test_bug8378"); if (!opt_silent) fprintf(stdout, "\n Establishing a test connection ..."); if (!(lmysql= mysql_init(NULL))) if (!(mysql= mysql_init(NULL))) { myerror("mysql_init() failed"); exit(1); } if (mysql_options(lmysql, MYSQL_SET_CHARSET_NAME, "gbk")) if (mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk")) { myerror("mysql_options() failed"); exit(1); } if (!(mysql_real_connect(lmysql, opt_host, opt_user, if (!(mysql_real_connect(mysql, opt_host, opt_user, opt_password, current_db, opt_port, opt_unix_socket, 0))) { Loading @@ -12822,12 +12823,18 @@ static void test_bug8378() if (!opt_silent) fprintf(stdout, " OK"); len= mysql_real_escape_string(lmysql, out, TEST_BUG8378_IN, 4); len= mysql_real_escape_string(mysql, out, TEST_BUG8378_IN, 4); /* No escaping should have actually happened. */ DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0); mysql_close(lmysql); sprintf(buf, "SELECT '%s'", out); rc=mysql_real_query(mysql, buf, strlen(buf)); myquery(rc); mysql_close(mysql); mysql=old_mysql; #endif } Loading Loading
mysql-test/r/ctype_sjis.result +2 −2 Original line number Diff line number Diff line Loading @@ -172,6 +172,6 @@ c2h ab_def drop table t1; SET NAMES sjis; SELECT HEX('佐淘 \圭') FROM DUAL; HEX('佐淘 \圭') SELECT HEX('@\') FROM DUAL; HEX('@\') 8DB2939181408C5C
mysql-test/t/ctype_sjis.test +1 −1 Original line number Diff line number Diff line Loading @@ -78,6 +78,6 @@ SET collation_connection='sjis_bin'; --character_set sjis SET NAMES sjis; SELECT HEX('@\\') FROM DUAL; SELECT HEX('@\') FROM DUAL; # End of 4.1 tests
sql/sql_lex.cc +5 −26 Original line number Diff line number Diff line Loading @@ -310,17 +310,6 @@ static char *get_text(LEX *lex) found_escape=1; if (lex->ptr == lex->end_of_query) return 0; #ifdef USE_MB int l; if (use_mb(cs) && (l = my_ismbchar(cs, (const char *)lex->ptr, (const char *)lex->end_of_query))) { lex->ptr += l; continue; } else #endif yySkip(); } else if (c == sep) Loading Loading @@ -350,9 +339,6 @@ static char *get_text(LEX *lex) { uchar *to; /* Re-use found_escape for tracking state of escapes */ found_escape= 0; for (to=start ; str != end ; str++) { #ifdef USE_MB Loading @@ -366,8 +352,7 @@ static char *get_text(LEX *lex) continue; } #endif if (!found_escape && !(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) && if (!(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) && *str == '\\' && str+1 != end) { switch(*++str) { Loading @@ -394,20 +379,14 @@ static char *get_text(LEX *lex) *to++= '\\'; // remember prefix for wildcard /* Fall through */ default: found_escape= 1; str--; *to++= *str; break; } } else if (!found_escape && *str == sep) { found_escape= 1; } else if (*str == sep) *to++= *str++; // Two ' or " else { *to++ = *str; found_escape= 0; } } *to=0; lex->yytoklen=(uint) (to-start); Loading
tests/mysql_client_test.c +14 −7 Original line number Diff line number Diff line Loading @@ -12794,25 +12794,26 @@ from t2);"); static void test_bug8378() { #if defined(HAVE_CHARSET_gbk) && !defined(EMBEDDED_LIBRARY) MYSQL *lmysql; MYSQL *old_mysql=mysql; char out[9]; /* strlen(TEST_BUG8378)*2+1 */ int len; char buf[256]; int len, rc; myheader("test_bug8378"); if (!opt_silent) fprintf(stdout, "\n Establishing a test connection ..."); if (!(lmysql= mysql_init(NULL))) if (!(mysql= mysql_init(NULL))) { myerror("mysql_init() failed"); exit(1); } if (mysql_options(lmysql, MYSQL_SET_CHARSET_NAME, "gbk")) if (mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk")) { myerror("mysql_options() failed"); exit(1); } if (!(mysql_real_connect(lmysql, opt_host, opt_user, if (!(mysql_real_connect(mysql, opt_host, opt_user, opt_password, current_db, opt_port, opt_unix_socket, 0))) { Loading @@ -12822,12 +12823,18 @@ static void test_bug8378() if (!opt_silent) fprintf(stdout, " OK"); len= mysql_real_escape_string(lmysql, out, TEST_BUG8378_IN, 4); len= mysql_real_escape_string(mysql, out, TEST_BUG8378_IN, 4); /* No escaping should have actually happened. */ DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0); mysql_close(lmysql); sprintf(buf, "SELECT '%s'", out); rc=mysql_real_query(mysql, buf, strlen(buf)); myquery(rc); mysql_close(mysql); mysql=old_mysql; #endif } Loading