mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
bb986a24e7
Problem: In cases when a client-side macro appears inside a server-side comment, the add_line() function in mysql.cc discarded all characters until the next delimiter to remove macro arguments from the query string. This resulted in broken queries being sent to the server when the next delimiter character appeared past the comment's boundaries, because the comment closing sequence ('*/') was discarded. Fix: If a client-side macro appears inside a server-side comment, discard all characters in the comment after the macro (that is, until the end of the comment rather than the next delimiter). This is a minimal fix to allow only simple cases used by the mysqlbinlog utility. Limitations that are worth documenting: - Nested server-side and/or client-side comments are not supported by mysql.cc - Using client-side macros in multi-line server-side comments is not supported - All characters after a client-side macro in a server-side comment will be omitted from the query string (and thus, will not be sent to server). client/mysql.cc: If a client-side macro appears inside a server-side comment, discard all characters in the comment after the macro. mysql-test/r/mysql.result: Added a test case for bug #30164. mysql-test/t/mysql.test: Added a test case for bug #30164.
181 lines
4.8 KiB
Text
181 lines
4.8 KiB
Text
drop table if exists t1;
|
|
create table t1(a int);
|
|
insert into t1 values(1);
|
|
ERROR at line 9: DELIMITER must be followed by a 'delimiter' character or string
|
|
|
|
Test default delimiter ;
|
|
a
|
|
1
|
|
|
|
Test delimiter without arg
|
|
|
|
Test delimiter :
|
|
a
|
|
1
|
|
|
|
Test delimiter :
|
|
a
|
|
1
|
|
|
|
Test delimiter :;
|
|
a
|
|
1
|
|
|
|
Test delimiter //
|
|
a
|
|
1
|
|
|
|
Test delimiter MySQL
|
|
a
|
|
1
|
|
|
|
Test delimiter delimiter
|
|
a
|
|
1
|
|
Tables_in_test
|
|
t1
|
|
t2
|
|
t3
|
|
Tables_in_test
|
|
t1
|
|
_
|
|
Test delimiter : from command line
|
|
a
|
|
1
|
|
_
|
|
Test delimiter :; from command line
|
|
a
|
|
1
|
|
_
|
|
Test 'go' command(vertical output) G
|
|
*************************** 1. row ***************************
|
|
a: 1
|
|
_
|
|
Test 'go' command g
|
|
a
|
|
1
|
|
drop table t1;
|
|
create table t1(a int);
|
|
lock tables t1 write;
|
|
database()
|
|
test
|
|
unlock tables;
|
|
drop table t1;
|
|
+----------------------+------------+--------+
|
|
| concat('>',col1,'<') | col2 | col3 |
|
|
+----------------------+------------+--------+
|
|
| >a < | b | 123421 |
|
|
| >a < | 0123456789 | 4 |
|
|
| >abcd< | | 4 |
|
|
+----------------------+------------+--------+
|
|
+-------------------+
|
|
| __tañgè Ñãmé |
|
|
+-------------------+
|
|
| John Doe |
|
|
+-------------------+
|
|
+-------------------+
|
|
| John Doe |
|
|
+-------------------+
|
|
| __tañgè Ñãmé |
|
|
+-------------------+
|
|
+------+------+---------------------------+
|
|
| i | j | k |
|
|
+------+------+---------------------------+
|
|
| 1 | NULL | NULL |
|
|
| NULL | NULL | <-----------------------> |
|
|
| NULL | NULL | <----- |
|
|
| NULL | NULL | Τη γλώσσα |
|
|
| NULL | NULL | ᛖᚴ ᚷᛖᛏ |
|
|
+------+------+---------------------------+
|
|
i j k
|
|
NULL 1 NULL
|
|
Field Type Null Key Default Extra
|
|
i int(11) YES NULL
|
|
j int(11) NO
|
|
k int(11) YES NULL
|
|
+------+---+------+
|
|
| i | j | k |
|
|
+------+---+------+
|
|
| NULL | 1 | NULL |
|
|
+------+---+------+
|
|
+-------+---------+------+-----+---------+-------+
|
|
| Field | Type | Null | Key | Default | Extra |
|
|
+-------+---------+------+-----+---------+-------+
|
|
| i | int(11) | YES | | NULL | |
|
|
| j | int(11) | NO | | | |
|
|
| k | int(11) | YES | | NULL | |
|
|
+-------+---------+------+-----+---------+-------+
|
|
i s1
|
|
1 x
|
|
2 NULL
|
|
3
|
|
+------+------+
|
|
| i | s1 |
|
|
+------+------+
|
|
| 1 | x |
|
|
| 2 | NULL |
|
|
| 3 | |
|
|
+------+------+
|
|
unhex('zz')
|
|
NULL
|
|
+-------------+
|
|
| unhex('zz') |
|
|
+-------------+
|
|
| NULL |
|
|
+-------------+
|
|
create table t1(a int, b varchar(255), c int);
|
|
Field Type Null Key Default Extra
|
|
a int(11) YES NULL
|
|
b varchar(255) YES NULL
|
|
c int(11) YES NULL
|
|
Field Type Null Key Default Extra
|
|
a int(11) YES NULL
|
|
b varchar(255) YES NULL
|
|
c int(11) YES NULL
|
|
drop table t1;
|
|
1
|
|
1
|
|
ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
|
ERROR at line 1: USE must be followed by a database name
|
|
\
|
|
\\
|
|
';
|
|
';
|
|
create table t17583 (a int);
|
|
insert into t17583 (a) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
insert into t17583 select a from t17583;
|
|
select count(*) from t17583;
|
|
count(*)
|
|
1280
|
|
drop table t17583;
|
|
Test connect without db- or host-name => reconnect
|
|
Test connect with dbname only => new dbname, old hostname
|
|
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'connecttest' at line 1
|
|
Test connect with _invalid_ dbname only => new invalid dbname, old hostname
|
|
ERROR 1049 (42000) at line 1: Unknown database 'invalid'
|
|
ERROR 1049 (42000) at line 1: Unknown database 'invalid'
|
|
Test connect with dbname + hostname
|
|
Test connect with dbname + _invalid_ hostname
|
|
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'invalid_hostname' (errno)
|
|
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'invalid_hostname' (errno)
|
|
The commands reported in the bug report
|
|
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'cyril has found a bug :)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (errno)
|
|
Too long dbname
|
|
ERROR 1049 (42000) at line 1: Unknown database 'test_really_long_dbnamexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
|
Too long hostname
|
|
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'cyrils_superlonghostnameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (errno)
|
|
1
|
|
1
|
|
ERROR at line 1: DELIMITER cannot contain a backslash character
|
|
ERROR at line 1: DELIMITER cannot contain a backslash character
|
|
1
|
|
1
|
|
1
|
|
1
|
|
End of 5.0 tests
|