mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			374 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			374 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # Test keywords as fields
 | |
| #
 | |
| 
 | |
| --disable_warnings
 | |
| drop table if exists t1;
 | |
| --enable_warnings
 | |
| 
 | |
| create table t1 (time time, date date, timestamp timestamp,
 | |
| quarter int, week int, year int, timestampadd int, timestampdiff int);
 | |
| insert into t1 values ("12:22:22","97:02:03","1997-01-02",1,2,3,4,5);
 | |
| select * from t1;
 | |
| select t1.time+0,t1.date+0,t1.timestamp+0,concat(date," ",time),
 | |
|        t1.quarter+t1.week, t1.year+timestampadd,  timestampdiff from t1;
 | |
| drop table t1;
 | |
| create table events(binlog int);
 | |
| insert into events values(1);
 | |
| select events.binlog from events;
 | |
| drop table events;
 | |
| 
 | |
| # End of 4.1 tests
 | |
| 
 | |
| #
 | |
| # Bug#19939 "AUTHORS is not a keyword"
 | |
| #
 | |
| delimiter |;
 | |
| create procedure p1()
 | |
| begin
 | |
|    declare n int default 2;
 | |
|    authors: while n > 0 do
 | |
|      set n = n -1;
 | |
|    end while authors;
 | |
| end|
 | |
| create procedure p2()
 | |
| begin
 | |
|    declare n int default 2;
 | |
|    contributors: while n > 0 do
 | |
|      set n = n -1;
 | |
|    end while contributors;
 | |
| end|
 | |
| delimiter ;|
 | |
| drop procedure p1;
 | |
| drop procedure p2;
 | |
| 
 | |
| # End of 5.1 tests
 | |
| 
 | |
| #
 | |
| # Bug#12204 - CONNECTION should not be a reserved word
 | |
| #
 | |
| 
 | |
| create table t1 (connection int, b int);
 | |
| delimiter |;
 | |
| create procedure p1()
 | |
| begin
 | |
|   declare connection int;
 | |
|   select max(t1.connection) into connection from t1;
 | |
|   select concat("max=",connection) 'p1';
 | |
| end|
 | |
| delimiter ;|
 | |
| insert into t1 (connection) values (1);
 | |
| call p1();
 | |
| drop procedure p1;
 | |
| drop table t1;
 | |
| 
 | |
| # End of 5.0 tests
 | |
| 
 | |
| #
 | |
| # BUG#57899: Certain reserved words should not be reserved
 | |
| #
 | |
| 
 | |
| #
 | |
| # We are looking for SYNTAX ERRORS here, so no need to 
 | |
| # log the queries
 | |
| #
 | |
| 
 | |
| CREATE TABLE slow (slow INT, general INT, master_heartbeat_period INT, ignore_server_ids INT);
 | |
| INSERT INTO slow(slow, general, master_heartbeat_period, ignore_server_ids) VALUES (1,2,3,4), (5,6,7,8);
 | |
| INSERT INTO slow(slow, general, master_heartbeat_period) VALUES (1,2,3), (5,6,7);
 | |
| INSERT INTO slow(slow, general) VALUES (1,2), (5,6);
 | |
| INSERT INTO slow(slow) VALUES (1), (5);
 | |
| SELECT slow, general, master_heartbeat_period, ignore_server_ids FROM slow ORDER BY slow;
 | |
| SELECT slow, general, master_heartbeat_period FROM slow ORDER BY slow;
 | |
| SELECT slow, master_heartbeat_period FROM slow ORDER BY slow;
 | |
| SELECT slow FROM slow ORDER BY slow;
 | |
| DROP TABLE slow;
 | |
| CREATE TABLE general (slow INT, general INT, master_heartbeat_period INT, ignore_server_ids INT);
 | |
| INSERT INTO general(slow, general, master_heartbeat_period, ignore_server_ids) VALUES (1,2,3,4), (5,6,7,8);
 | |
| INSERT INTO general(slow, general, master_heartbeat_period) VALUES (1,2,3), (5,6,7);
 | |
| INSERT INTO general(slow, general) VALUES (1,2), (5,6);
 | |
| INSERT INTO general(slow) VALUES (1), (5);
 | |
| SELECT slow, general, master_heartbeat_period, ignore_server_ids FROM general ORDER BY slow;
 | |
| SELECT slow, general, master_heartbeat_period FROM general ORDER BY slow;
 | |
| SELECT slow, master_heartbeat_period FROM general ORDER BY slow;
 | |
| SELECT slow FROM general ORDER BY slow;
 | |
| DROP TABLE general;
 | |
| CREATE TABLE master_heartbeat_period (slow INT, general INT, master_heartbeat_period INT, ignore_server_ids INT);
 | |
| INSERT INTO master_heartbeat_period(slow, general, master_heartbeat_period, ignore_server_ids) VALUES (1,2,3,4), (5,6,7,8);
 | |
| INSERT INTO master_heartbeat_period(slow, general, master_heartbeat_period) VALUES (1,2,3), (5,6,7);
 | |
| INSERT INTO master_heartbeat_period(slow, general) VALUES (1,2), (5,6);
 | |
| INSERT INTO master_heartbeat_period(slow) VALUES (1), (5);
 | |
| SELECT slow, general, master_heartbeat_period, ignore_server_ids FROM master_heartbeat_period ORDER BY slow;
 | |
| SELECT slow, general, master_heartbeat_period FROM master_heartbeat_period ORDER BY slow;
 | |
| SELECT slow, master_heartbeat_period FROM master_heartbeat_period ORDER BY slow;
 | |
| SELECT slow FROM master_heartbeat_period ORDER BY slow;
 | |
| DROP TABLE master_heartbeat_period;
 | |
| CREATE TABLE ignore_server_ids (slow INT, general INT, master_heartbeat_period INT, ignore_server_ids INT);
 | |
| INSERT INTO ignore_server_ids(slow, general, master_heartbeat_period, ignore_server_ids) VALUES (1,2,3,4), (5,6,7,8);
 | |
| INSERT INTO ignore_server_ids(slow, general, master_heartbeat_period) VALUES (1,2,3), (5,6,7);
 | |
| INSERT INTO ignore_server_ids(slow, general) VALUES (1,2), (5,6);
 | |
| INSERT INTO ignore_server_ids(slow) VALUES (1), (5);
 | |
| SELECT slow, general, master_heartbeat_period, ignore_server_ids FROM ignore_server_ids ORDER BY slow;
 | |
| SELECT slow, general, master_heartbeat_period FROM ignore_server_ids ORDER BY slow;
 | |
| SELECT slow, master_heartbeat_period FROM ignore_server_ids ORDER BY slow;
 | |
| SELECT slow FROM ignore_server_ids ORDER BY slow;
 | |
| DROP TABLE ignore_server_ids;
 | |
| 
 | |
| CREATE TABLE t1 (slow INT, general INT, ignore_server_ids INT, master_heartbeat_period INT);
 | |
| INSERT INTO t1 VALUES (1,2,3,4);
 | |
| DELIMITER |;
 | |
| CREATE PROCEDURE p1()
 | |
| BEGIN
 | |
|   DECLARE slow INT;
 | |
|   DECLARE general INT;
 | |
|   DECLARE ignore_server_ids INT;
 | |
|   DECLARE master_heartbeat_period INT;
 | |
| 
 | |
|   SELECT max(t1.slow) INTO slow FROM t1;
 | |
|   SELECT max(t1.general) INTO general FROM t1;
 | |
|   SELECT max(t1.ignore_server_ids) INTO ignore_server_ids FROM t1;
 | |
|   SELECT max(t1.master_heartbeat_period) INTO master_heartbeat_period FROM t1;
 | |
| 
 | |
|   SELECT slow, general, ignore_server_ids, master_heartbeat_period;
 | |
| END|
 | |
| 
 | |
| CREATE PROCEDURE p2()
 | |
| BEGIN
 | |
| 
 | |
|    DECLARE n INT DEFAULT 2;
 | |
|    general: WHILE n > 0 DO 
 | |
|      SET n = n -1;
 | |
|    END WHILE general;
 | |
| 
 | |
|    SET n = 2;
 | |
|    slow: WHILE n > 0 DO 
 | |
|      SET n = n -1;
 | |
|    END WHILE slow;
 | |
| 
 | |
|    SET n = 2;
 | |
|    ignore_server_ids: WHILE n > 0 DO 
 | |
|      SET n = n -1;
 | |
|    END WHILE ignore_server_ids;
 | |
| 
 | |
|    SET n = 2;
 | |
|    master_heartbeat_period: WHILE n > 0 DO 
 | |
|      SET n = n -1;
 | |
|    END WHILE master_heartbeat_period;
 | |
| 
 | |
| END|
 | |
| DELIMITER ;|
 | |
| CALL p1();
 | |
| call p2();
 | |
| DROP PROCEDURE p1;
 | |
| DROP PROCEDURE p2;
 | |
| DROP TABLE t1;
 | |
| 
 | |
| #
 | |
| # OPTION is not anymore a keyword
 | |
| #
 | |
| 
 | |
| create table option (option int not null);
 | |
| drop table option;
 | |
| --error 1193
 | |
| set option=1;
 | |
| --error ER_PARSE_ERROR
 | |
| set option option=1;
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-9979 Keywords UNBOUNDED, PRECEDING, FOLLOWING, TIES, OTHERS should be non-reserved
 | |
| --echo #
 | |
| CREATE TABLE EXCLUDE (EXCLUDE INT);
 | |
| SELECT EXCLUDE FROM EXCLUDE;
 | |
| SELECT EXCLUDE EXCLUDE FROM EXCLUDE;
 | |
| SELECT EXCLUDE AS EXCLUDE FROM EXCLUDE;
 | |
| DROP TABLE EXCLUDE;
 | |
| 
 | |
| CREATE TABLE UNBOUNDED (UNBOUNDED INT);
 | |
| SELECT UNBOUNDED FROM UNBOUNDED;
 | |
| SELECT UNBOUNDED UNBOUNDEX FROM UNBOUNDED;
 | |
| SELECT UNBOUNDED AS UNBOUNDEX FROM UNBOUNDED;
 | |
| DROP TABLE UNBOUNDED;
 | |
| 
 | |
| CREATE TABLE PRECEDING (PRECEDING INT);
 | |
| SELECT PRECEDING FROM PRECEDING;
 | |
| SELECT PRECEDING PRECEDING FROM PRECEDING;
 | |
| SELECT PRECEDING AS PRECEDING FROM PRECEDING;
 | |
| DROP TABLE PRECEDING;
 | |
| 
 | |
| CREATE TABLE FOLLOWING (FOLLOWING INT);
 | |
| SELECT FOLLOWING FROM FOLLOWING;
 | |
| SELECT FOLLOWING FOLLOWING FROM FOLLOWING;
 | |
| SELECT FOLLOWING AS FOLLOWING FROM FOLLOWING;
 | |
| DROP TABLE FOLLOWING;
 | |
| 
 | |
| CREATE TABLE TIES (TIES INT);
 | |
| SELECT TIES FROM TIES;
 | |
| SELECT TIES TIES FROM TIES;
 | |
| SELECT TIES AS TIES FROM TIES;
 | |
| DROP TABLE TIES;
 | |
| 
 | |
| CREATE TABLE OTHERS (OTHERS INT);
 | |
| SELECT OTHERS FROM OTHERS;
 | |
| SELECT OTHERS OTHERS FROM OTHERS;
 | |
| SELECT OTHERS AS OTHERS FROM OTHERS;
 | |
| DROP TABLE OTHERS;
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-10585 EXECUTE IMMEDIATE statement
 | |
| --echo #
 | |
| 
 | |
| CREATE TABLE immediate (immediate int);
 | |
| DROP TABLE immediate;
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-10142 Pluggable parser
 | |
| --echo # Testing keywords that were added into lex.h for Oracle compatibility
 | |
| --echo # that are not reserved keywords in MariaDB
 | |
| --echo #
 | |
| 
 | |
| CREATE TABLE clob (clob int);
 | |
| DROP TABLE clob;
 | |
| 
 | |
| CREATE TABLE elsif (elsif INT);
 | |
| DROP TABLE elsif;
 | |
| 
 | |
| CREATE TABLE exception (exception INT);
 | |
| DROP TABLE exception;
 | |
| 
 | |
| CREATE TABLE raw (raw int);
 | |
| DROP TABLE raw;
 | |
| 
 | |
| CREATE TABLE varchar2 (varchar2 int);
 | |
| DROP TABLE varchar2;
 | |
| 
 | |
| CREATE TABLE decode (decode int);
 | |
| DROP TABLE decode;
 | |
| 
 | |
| CREATE TABLE rowcount (rowcount int);
 | |
| DROP TABLE rowcount;
 | |
| 
 | |
| CREATE TABLE isopen (isopen int);
 | |
| DROP TABLE isopen;
 | |
| 
 | |
| CREATE TABLE notfound (notfound int);
 | |
| DROP TABLE notfound;
 | |
| 
 | |
| CREATE TABLE raise (raise int);
 | |
| DROP TABLE raise;
 | |
| 
 | |
| CREATE TABLE reuse (reuse int);
 | |
| DROP TABLE reuse;
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-17363 Compressed columns cannot be restored from dump
 | |
| --echo # COMPRESSED is not valid as an SP label any more
 | |
| --echo # but is still valid as an SP variable name.
 | |
| --echo #
 | |
| 
 | |
| DELIMITER $$;
 | |
| --error ER_PARSE_ERROR
 | |
| BEGIN NOT ATOMIC
 | |
| compressed:
 | |
|   BEGIN
 | |
|     SELECT 1 AS a;
 | |
|   END;
 | |
| END
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| 
 | |
| DELIMITER $$;
 | |
| BEGIN NOT ATOMIC
 | |
| `compressed`:
 | |
|   BEGIN
 | |
|     SELECT 1 AS a;
 | |
|   END;
 | |
| END
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| 
 | |
| DELIMITER $$;
 | |
| BEGIN NOT ATOMIC
 | |
|   DECLARE compressed INT DEFAULT 1;
 | |
|   SELECT compressed;
 | |
| END
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # Testing various keywords in various contexts
 | |
| --echo #
 | |
| 
 | |
| DELIMITER $$;
 | |
| CREATE PROCEDURE p1(query TEXT, var TEXT)
 | |
| BEGIN
 | |
|   DECLARE errmsg TEXT DEFAULT '';
 | |
|   DECLARE CONTINUE HANDLER
 | |
|     FOR SQLEXCEPTION
 | |
|   BEGIN
 | |
|     GET DIAGNOSTICS CONDITION 1 errmsg = MESSAGE_TEXT;
 | |
|     SET errmsg= REPLACE(errmsg, 'You have an error in your SQL ', '..');
 | |
|     SET errmsg= REPLACE(errmsg, '; check the manual that corresponds to your MariaDB server version for the right syntax to use', '..');
 | |
|   END;
 | |
|   SET query=REPLACE(query, '$(VAR)', var);
 | |
|   EXECUTE IMMEDIATE query;
 | |
|   SELECT CONCAT(query, '; -- ', LEFT(COALESCE(errmsg,''),40)) AS `--------`;
 | |
| END;
 | |
| $$
 | |
| CREATE PROCEDURE p2(query TEXT)
 | |
| BEGIN
 | |
|   FOR row IN (SELECT word FROM t1 ORDER BY category, word)
 | |
|   DO
 | |
|     CALL p1(query, row.word);
 | |
|   END FOR;
 | |
| END;
 | |
| $$
 | |
| DELIMITER ;$$
 | |
| 
 | |
| CREATE TABLE t1 (word TEXT, category TEXT);
 | |
| 
 | |
| INSERT INTO t1 VALUES ('non_keyword', '00 Simple identifier');
 | |
| 
 | |
| INSERT INTO t1 VALUES ('lpad', '01 Built-in native function');
 | |
| INSERT INTO t1 VALUES ('rpad', '01 Built-in native function');
 | |
| 
 | |
| INSERT INTO t1 VALUES ('adddate',     '02 function_call_nonkeyword');
 | |
| INSERT INTO t1 VALUES ('substr',      '02 function_call_nonkeyword');
 | |
| INSERT INTO t1 VALUES ('substring',   '02 function_call_nonkeyword');
 | |
| INSERT INTO t1 VALUES ('trim_oracle', '02 function_call_nonkeyword');
 | |
| 
 | |
| INSERT INTO t1 VALUES ('ascii',         '03 function_call_conflict');
 | |
| INSERT INTO t1 VALUES ('replace',       '03 function_call_conflict');
 | |
| INSERT INTO t1 VALUES ('weight_string', '03 function_call_conflict');
 | |
| 
 | |
| INSERT INTO t1 VALUES ('char', '04 function_call_keyword');
 | |
| INSERT INTO t1 VALUES ('trim', '04 function_call_keyword');
 | |
| INSERT INTO t1 VALUES ('year', '04 function_call_keyword');
 | |
| 
 | |
| INSERT INTO t1 VALUES ('create', '05 Reserved keyword');
 | |
| 
 | |
| CALL p2('SELECT @@$(VAR)');
 | |
| CALL p2('SELECT @@global.$(VAR)');
 | |
| CALL p2('SELECT @@global.$(VAR)()');
 | |
| 
 | |
| CALL p2('SELECT $(VAR)()');
 | |
| CALL p2('SELECT test.$(VAR)()');
 | |
| 
 | |
| CALL p2('SELECT $(VAR) FROM t1');
 | |
| CALL p2('SELECT t1.$(VAR) FROM t1');
 | |
| 
 | |
| CALL p2('DROP TABLE $(VAR)');
 | |
| CALL p2('DROP TABLE test.$(VAR)');
 | |
| 
 | |
| CALL p2('CREATE FUNCTION $(VAR)() RETURNS OOPS');
 | |
| CALL p2('CREATE FUNCTION test.$(VAR)() RETURNS OOPS');
 | |
| 
 | |
| CALL p2('DROP FUNCTION $(VAR)');
 | |
| CALL p2('DROP FUNCTION test.$(VAR)');
 | |
| 
 | |
| DROP TABLE t1;
 | |
| 
 | |
| DROP PROCEDURE p1;
 | |
| DROP PROCEDURE p2;
 | 
