mirror of
https://github.com/MariaDB/server.git
synced 2025-05-02 19:25:03 +03:00
Manual merge.
This commit is contained in:
commit
eb94a70784
@ -165,7 +165,7 @@ CREATE TABLE `good
|
|||||||
ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ'
|
ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ'
|
||||||
SET NAMES utf8;
|
SET NAMES utf8;
|
||||||
CREATE TABLE `goodÐÌÏÈÏ` (a int);
|
CREATE TABLE `goodÐÌÏÈÏ` (a int);
|
||||||
ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ` (a int)'
|
ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ'
|
||||||
set names latin1;
|
set names latin1;
|
||||||
create table t1 (a char(10) character set koi8r, b text character set koi8r);
|
create table t1 (a char(10) character set koi8r, b text character set koi8r);
|
||||||
insert into t1 values ('test','test');
|
insert into t1 values ('test','test');
|
||||||
|
@ -1105,9 +1105,12 @@ int MYSQLlex(void *arg, void *yythd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef USE_MB
|
#ifdef USE_MB
|
||||||
else if (var_length < 1)
|
else if (use_mb(cs))
|
||||||
break; // Error
|
{
|
||||||
lip->skip_binary(var_length-1);
|
if ((var_length= my_ismbchar(cs, lip->get_ptr() - 1,
|
||||||
|
lip->get_end_of_query())))
|
||||||
|
lip->skip_binary(var_length-1);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (double_quotes)
|
if (double_quotes)
|
||||||
|
@ -1190,7 +1190,7 @@ public:
|
|||||||
Get a character, and advance in the stream.
|
Get a character, and advance in the stream.
|
||||||
@return the next character to parse.
|
@return the next character to parse.
|
||||||
*/
|
*/
|
||||||
char yyGet()
|
unsigned char yyGet()
|
||||||
{
|
{
|
||||||
char c= *m_ptr++;
|
char c= *m_ptr++;
|
||||||
if (m_echo)
|
if (m_echo)
|
||||||
@ -1202,7 +1202,7 @@ public:
|
|||||||
Get the last character accepted.
|
Get the last character accepted.
|
||||||
@return the last character accepted.
|
@return the last character accepted.
|
||||||
*/
|
*/
|
||||||
char yyGetLast()
|
unsigned char yyGetLast()
|
||||||
{
|
{
|
||||||
return m_ptr[-1];
|
return m_ptr[-1];
|
||||||
}
|
}
|
||||||
@ -1210,7 +1210,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
Look at the next character to parse, but do not accept it.
|
Look at the next character to parse, but do not accept it.
|
||||||
*/
|
*/
|
||||||
char yyPeek()
|
unsigned char yyPeek()
|
||||||
{
|
{
|
||||||
return m_ptr[0];
|
return m_ptr[0];
|
||||||
}
|
}
|
||||||
@ -1219,7 +1219,7 @@ public:
|
|||||||
Look ahead at some character to parse.
|
Look ahead at some character to parse.
|
||||||
@param n offset of the character to look up
|
@param n offset of the character to look up
|
||||||
*/
|
*/
|
||||||
char yyPeekn(int n)
|
unsigned char yyPeekn(int n)
|
||||||
{
|
{
|
||||||
return m_ptr[n];
|
return m_ptr[n];
|
||||||
}
|
}
|
||||||
|
@ -17947,6 +17947,34 @@ static void test_bug41078(void)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Bug#45010: invalid memory reads during parsing some strange statements
|
||||||
|
*/
|
||||||
|
static void test_bug45010()
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
const char query1[]= "select a.\x80",
|
||||||
|
query2[]= "describe `table\xef";
|
||||||
|
|
||||||
|
DBUG_ENTER("test_bug45010");
|
||||||
|
myheader("test_bug45010");
|
||||||
|
|
||||||
|
rc= mysql_query(mysql, "set names utf8");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
/* \x80 (-128) could be used as a index of ident_map. */
|
||||||
|
rc= mysql_real_query(mysql, query1, sizeof(query1) - 1);
|
||||||
|
DIE_UNLESS(rc);
|
||||||
|
|
||||||
|
/* \xef (-17) could be used to skip 3 bytes past the buffer end. */
|
||||||
|
rc= mysql_real_query(mysql, query2, sizeof(query2) - 1);
|
||||||
|
DIE_UNLESS(rc);
|
||||||
|
|
||||||
|
rc= mysql_query(mysql, "set names default");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Bug#44495: Prepared Statement:
|
Bug#44495: Prepared Statement:
|
||||||
@ -18301,6 +18329,7 @@ static struct my_tests_st my_tests[]= {
|
|||||||
{ "test_change_user", test_change_user },
|
{ "test_change_user", test_change_user },
|
||||||
{ "test_bug30472", test_bug30472 },
|
{ "test_bug30472", test_bug30472 },
|
||||||
{ "test_bug20023", test_bug20023 },
|
{ "test_bug20023", test_bug20023 },
|
||||||
|
{ "test_bug45010", test_bug45010 },
|
||||||
{ "test_bug31418", test_bug31418 },
|
{ "test_bug31418", test_bug31418 },
|
||||||
{ "test_bug31669", test_bug31669 },
|
{ "test_bug31669", test_bug31669 },
|
||||||
{ "test_bug28386", test_bug28386 },
|
{ "test_bug28386", test_bug28386 },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user