Skip to content

Commit 7fe7cbf

Browse files
committed
MDEV-38194 Correct classification of MASTER_SSL_VERIFY_SERVER_CERT
This patch removes MASTER_SSL_VERIFY_SERVER_CERT from the list reserved_keyword_udt_not_param_type and adds it to keyword_func_sp_var_and_label in the parser. All other MASTER_SSL_* keywords are in this list. This allows MASTER_SSL_VERIFY_SERVER_CERT to be used unquoted when directly accessed via INFORMATION_SCHEMA.slave_status, as well as opens it up to be used as names in other places, e.g. stored procedures.
1 parent a7528a6 commit 7fe7cbf

File tree

5 files changed

+118
-78
lines changed

5 files changed

+118
-78
lines changed

mysql-test/suite/funcs_1/r/storedproc.result

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2434,10 +2434,6 @@ CREATE PROCEDURE low_priority()
24342434
SELECT * from t1 where f2=f1;
24352435
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'low_priority()
24362436
SELECT * from t1 where f2=f1' at line 1
2437-
CREATE PROCEDURE master_ssl_verify_server_cert()
2438-
SELECT * from t1 where f2=f1;
2439-
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'master_ssl_verify_server_cert()
2440-
SELECT * from t1 where f2=f1' at line 1
24412437
CREATE PROCEDURE match()
24422438
SELECT * from t1 where f2=f1;
24432439
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'match()
@@ -4918,13 +4914,6 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
49184914
SELECT @x;
49194915
END' at line 2
49204916
DROP PROCEDURE IF EXISTS sp1;
4921-
CREATE PROCEDURE sp1()
4922-
master_ssl_verify_server_cert:BEGIN
4923-
SELECT @x;
4924-
END//
4925-
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'master_ssl_verify_server_cert:BEGIN
4926-
SELECT @x;
4927-
END' at line 2
49284917
DROP PROCEDURE IF EXISTS sp1;
49294918
CREATE PROCEDURE sp1()
49304919
match:BEGIN
@@ -8454,12 +8443,6 @@ END//
84548443
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'low_priority char;
84558444
END' at line 3
84568445
DROP PROCEDURE IF EXISTS sp1;
8457-
CREATE PROCEDURE sp1()
8458-
BEGIN
8459-
declare master_ssl_verify_server_cert char;
8460-
END//
8461-
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'master_ssl_verify_server_cert char;
8462-
END' at line 3
84638446
DROP PROCEDURE IF EXISTS sp1;
84648447
CREATE PROCEDURE sp1()
84658448
BEGIN
@@ -10620,16 +10603,6 @@ Warnings:
1062010603
Note 1305 PROCEDURE db_storedproc.sp1 does not exist
1062110604
CREATE PROCEDURE sp1( )
1062210605
BEGIN
10623-
declare master_ssl_verify_server_cert condition for sqlstate '02000';
10624-
declare exit handler for int set @var2 = 1;
10625-
END//
10626-
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'master_ssl_verify_server_cert condition for sqlstate '02000';
10627-
declare exit ha...' at line 3
10628-
DROP PROCEDURE IF EXISTS sp1;
10629-
Warnings:
10630-
Note 1305 PROCEDURE db_storedproc.sp1 does not exist
10631-
CREATE PROCEDURE sp1( )
10632-
BEGIN
1063310606
declare match condition for sqlstate '02000';
1063410607
declare exit handler for match set @var2 = 1;
1063510608
END//
@@ -12818,15 +12791,6 @@ Warnings:
1281812791
Note 1305 PROCEDURE db_storedproc.sp1 does not exist
1281912792
CREATE PROCEDURE sp1( )
1282012793
BEGIN
12821-
declare master_ssl_verify_server_cert handler for sqlstate '02000' set @var2 = 1;
12822-
END//
12823-
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'master_ssl_verify_server_cert handler for sqlstate '02000' set @var2 = 1;
12824-
END' at line 3
12825-
DROP PROCEDURE IF EXISTS sp1;
12826-
Warnings:
12827-
Note 1305 PROCEDURE db_storedproc.sp1 does not exist
12828-
CREATE PROCEDURE sp1( )
12829-
BEGIN
1283012794
declare match handler for sqlstate '02000' set @var2 = 1;
1283112795
END//
1283212796
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'match handler for sqlstate '02000' set @var2 = 1;

mysql-test/suite/funcs_1/t/storedproc.test

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,10 +1454,6 @@ CREATE PROCEDURE loop()
14541454
CREATE PROCEDURE low_priority()
14551455
SELECT * from t1 where f2=f1;
14561456

1457-
--error ER_PARSE_ERROR
1458-
CREATE PROCEDURE master_ssl_verify_server_cert()
1459-
SELECT * from t1 where f2=f1;
1460-
14611457
--error ER_PARSE_ERROR
14621458
CREATE PROCEDURE match()
14631459
SELECT * from t1 where f2=f1;
@@ -4555,14 +4551,6 @@ delimiter ;//
45554551
DROP PROCEDURE IF EXISTS sp1;
45564552
--enable_warnings
45574553

4558-
delimiter //;
4559-
--error ER_PARSE_ERROR
4560-
CREATE PROCEDURE sp1()
4561-
master_ssl_verify_server_cert:BEGIN
4562-
SELECT @x;
4563-
END//
4564-
delimiter ;//
4565-
45664554
--disable_warnings
45674555
DROP PROCEDURE IF EXISTS sp1;
45684556
--enable_warnings
@@ -10051,14 +10039,6 @@ delimiter ;//
1005110039
DROP PROCEDURE IF EXISTS sp1;
1005210040
--enable_warnings
1005310041

10054-
delimiter //;
10055-
--error ER_PARSE_ERROR
10056-
CREATE PROCEDURE sp1()
10057-
BEGIN
10058-
declare master_ssl_verify_server_cert char;
10059-
END//
10060-
delimiter ;//
10061-
1006210042
--disable_warnings
1006310043
DROP PROCEDURE IF EXISTS sp1;
1006410044
--enable_warnings
@@ -12692,17 +12672,6 @@ delimiter ;//
1269212672

1269312673
DROP PROCEDURE IF EXISTS sp1;
1269412674

12695-
delimiter //;
12696-
--error ER_PARSE_ERROR
12697-
CREATE PROCEDURE sp1( )
12698-
BEGIN
12699-
declare master_ssl_verify_server_cert condition for sqlstate '02000';
12700-
declare exit handler for int set @var2 = 1;
12701-
END//
12702-
delimiter ;//
12703-
12704-
DROP PROCEDURE IF EXISTS sp1;
12705-
1270612675
delimiter //;
1270712676
--error ER_PARSE_ERROR
1270812677
CREATE PROCEDURE sp1( )
@@ -15204,16 +15173,6 @@ delimiter ;//
1520415173

1520515174
DROP PROCEDURE IF EXISTS sp1;
1520615175

15207-
delimiter //;
15208-
--error ER_PARSE_ERROR
15209-
CREATE PROCEDURE sp1( )
15210-
BEGIN
15211-
declare master_ssl_verify_server_cert handler for sqlstate '02000' set @var2 = 1;
15212-
END//
15213-
delimiter ;//
15214-
15215-
DROP PROCEDURE IF EXISTS sp1;
15216-
1521715176
delimiter //;
1521815177
--error ER_PARSE_ERROR
1521915178
CREATE PROCEDURE sp1( )
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
SELECT Master_SSL_Verify_Server_Cert FROM information_schema.slave_status LIMIT 1;
2+
Master_SSL_Verify_Server_Cert
3+
SELECT `Master_SSL_Verify_Server_Cert` FROM information_schema.slave_status LIMIT 1;
4+
Master_SSL_Verify_Server_Cert
5+
CREATE DATABASE db_is_slave_status;
6+
USE db_is_slave_status;
7+
CREATE TABLE t1 (
8+
Master_SSL_Verify_Server_Cert INT
9+
);
10+
INSERT INTO t1 VALUES (123);
11+
SELECT Master_SSL_Verify_Server_Cert FROM t1;
12+
Master_SSL_Verify_Server_Cert
13+
123
14+
DROP TABLE t1;
15+
CREATE PROCEDURE master_ssl_verify_server_cert()
16+
BEGIN
17+
SELECT 1;
18+
END//
19+
DROP PROCEDURE IF EXISTS master_ssl_verify_server_cert;
20+
CREATE FUNCTION master_ssl_verify_server_cert()
21+
RETURNS INT
22+
RETURN 1;
23+
DROP FUNCTION IF EXISTS master_ssl_verify_server_cert;
24+
CREATE PROCEDURE sp()
25+
master_ssl_verify_server_cert:BEGIN
26+
SELECT 1;
27+
END//
28+
DROP PROCEDURE IF EXISTS sp;
29+
CREATE PROCEDURE sp()
30+
BEGIN
31+
DECLARE master_ssl_verify_server_cert CHAR;
32+
END//
33+
DROP PROCEDURE IF EXISTS sp;
34+
CREATE PROCEDURE sp()
35+
BEGIN
36+
DECLARE master_ssl_verify_server_cert CONDITION FOR SQLSTATE '02000';
37+
DECLARE EXIT HANDLER FOR master_ssl_verify_server_cert SET @var2 = 1;
38+
END//
39+
DROP PROCEDURE IF EXISTS sp;
40+
DROP DATABASE IF EXISTS db_is_slave_status;
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#
2+
# Test for MDEV-38194: Master_SSL_Verify_Server_Cert should not require identifier quoting
3+
#
4+
5+
--source include/not_embedded.inc
6+
7+
# Select the column unquoted
8+
SELECT Master_SSL_Verify_Server_Cert FROM information_schema.slave_status LIMIT 1;
9+
10+
# Select the column quoted
11+
SELECT `Master_SSL_Verify_Server_Cert` FROM information_schema.slave_status LIMIT 1;
12+
13+
14+
# Verify that stored procedures, variables, labels, and functions using the name
15+
# Master_SSL_Verify_Server_Cert can be successfully created
16+
17+
CREATE DATABASE db_is_slave_status;
18+
19+
USE db_is_slave_status;
20+
21+
CREATE TABLE t1 (
22+
Master_SSL_Verify_Server_Cert INT
23+
);
24+
INSERT INTO t1 VALUES (123);
25+
SELECT Master_SSL_Verify_Server_Cert FROM t1;
26+
DROP TABLE t1;
27+
28+
29+
DELIMITER //;
30+
CREATE PROCEDURE master_ssl_verify_server_cert()
31+
BEGIN
32+
SELECT 1;
33+
END//
34+
DELIMITER ;//
35+
36+
DROP PROCEDURE IF EXISTS master_ssl_verify_server_cert;
37+
38+
--disable_warnings
39+
CREATE FUNCTION master_ssl_verify_server_cert()
40+
RETURNS INT
41+
RETURN 1;
42+
--enable_warnings
43+
44+
DROP FUNCTION IF EXISTS master_ssl_verify_server_cert;
45+
46+
47+
DELIMITER //;
48+
CREATE PROCEDURE sp()
49+
master_ssl_verify_server_cert:BEGIN
50+
SELECT 1;
51+
END//
52+
DELIMITER ;//
53+
54+
DROP PROCEDURE IF EXISTS sp;
55+
56+
57+
DELIMITER //;
58+
CREATE PROCEDURE sp()
59+
BEGIN
60+
DECLARE master_ssl_verify_server_cert CHAR;
61+
END//
62+
DELIMITER ;//
63+
64+
DROP PROCEDURE IF EXISTS sp;
65+
66+
67+
DELIMITER //;
68+
CREATE PROCEDURE sp()
69+
BEGIN
70+
DECLARE master_ssl_verify_server_cert CONDITION FOR SQLSTATE '02000';
71+
DECLARE EXIT HANDLER FOR master_ssl_verify_server_cert SET @var2 = 1;
72+
END//
73+
DELIMITER ;//
74+
75+
DROP PROCEDURE IF EXISTS sp;
76+
77+
DROP DATABASE IF EXISTS db_is_slave_status;

sql/sql_yacc.yy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16538,6 +16538,7 @@ keyword_func_sp_var_and_label:
1653816538
| MASTER_SSL_CRL_SYM
1653916539
| MASTER_SSL_CRLPATH_SYM
1654016540
| MASTER_SSL_KEY_SYM
16541+
| MASTER_SSL_VERIFY_SERVER_CERT_SYM
1654116542
| MAX_CONNECTIONS_PER_HOUR
1654216543
| MAX_QUERIES_PER_HOUR
1654316544
| MAX_SIZE_SYM
@@ -16861,7 +16862,6 @@ reserved_keyword_udt_not_param_type:
1686116862
| LOCK_SYM
1686216863
| LOOP_SYM
1686316864
| LOW_PRIORITY
16864-
| MASTER_SSL_VERIFY_SERVER_CERT_SYM
1686516865
| MATCH
1686616866
| MAX_SYM
1686716867
| MAXVALUE_SYM

0 commit comments

Comments
 (0)