731 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			731 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | # | ||
|  | # This file contains tests covering the parser | ||
|  | # | ||
|  | 
 | ||
|  | #============================================================================= | ||
|  | # LEXICAL PARSER (lex) | ||
|  | #============================================================================= | ||
|  | 
 | ||
|  | # | ||
|  | # Maintainer: these tests are for the lexical parser, so every character, | ||
|  | # even whitespace or comments, is significant here. | ||
|  | # | ||
|  | 
 | ||
|  | SET @save_sql_mode=@@sql_mode; | ||
|  | 
 | ||
|  | # | ||
|  | # Documenting the current behavior, to detect incompatible changes. | ||
|  | # In each cases: | ||
|  | # - no error is the correct result | ||
|  | # - an error is the expected result with the current implementation, | ||
|  | #   and is a limitation. | ||
|  | 
 | ||
|  | set SQL_MODE=''; | ||
|  | 
 | ||
|  | create table ADDDATE(a int); | ||
|  | drop table ADDDATE; | ||
|  | create table ADDDATE (a int); | ||
|  | drop table ADDDATE; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_AND(a int); | ||
|  | create table BIT_AND (a int); | ||
|  | drop table BIT_AND; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_OR(a int); | ||
|  | create table BIT_OR (a int); | ||
|  | drop table BIT_OR; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_XOR(a int); | ||
|  | create table BIT_XOR (a int); | ||
|  | drop table BIT_XOR; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CAST(a int); | ||
|  | create table CAST (a int); | ||
|  | drop table CAST; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table COUNT(a int); | ||
|  | create table COUNT (a int); | ||
|  | drop table COUNT; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CURDATE(a int); | ||
|  | create table CURDATE (a int); | ||
|  | drop table CURDATE; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CURTIME(a int); | ||
|  | create table CURTIME (a int); | ||
|  | drop table CURTIME; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table DATE_ADD(a int); | ||
|  | create table DATE_ADD (a int); | ||
|  | drop table DATE_ADD; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table DATE_SUB(a int); | ||
|  | create table DATE_SUB (a int); | ||
|  | drop table DATE_SUB; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table EXTRACT(a int); | ||
|  | create table EXTRACT (a int); | ||
|  | drop table EXTRACT; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table GROUP_CONCAT(a int); | ||
|  | create table GROUP_CONCAT (a int); | ||
|  | drop table GROUP_CONCAT; | ||
|  | 
 | ||
|  | # Limitation removed in 5.1 | ||
|  | create table GROUP_UNIQUE_USERS(a int); | ||
|  | drop table GROUP_UNIQUE_USERS; | ||
|  | create table GROUP_UNIQUE_USERS (a int); | ||
|  | drop table GROUP_UNIQUE_USERS; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MAX(a int); | ||
|  | create table MAX (a int); | ||
|  | drop table MAX; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MID(a int); | ||
|  | create table MID (a int); | ||
|  | drop table MID; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MIN(a int); | ||
|  | create table MIN (a int); | ||
|  | drop table MIN; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table NOW(a int); | ||
|  | create table NOW (a int); | ||
|  | drop table NOW; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table POSITION(a int); | ||
|  | create table POSITION (a int); | ||
|  | drop table POSITION; | ||
|  | 
 | ||
|  | create table SESSION_USER(a int); | ||
|  | drop table SESSION_USER; | ||
|  | create table SESSION_USER (a int); | ||
|  | drop table SESSION_USER; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STD(a int); | ||
|  | create table STD (a int); | ||
|  | drop table STD; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV(a int); | ||
|  | create table STDDEV (a int); | ||
|  | drop table STDDEV; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV_POP(a int); | ||
|  | create table STDDEV_POP (a int); | ||
|  | drop table STDDEV_POP; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV_SAMP(a int); | ||
|  | create table STDDEV_SAMP (a int); | ||
|  | drop table STDDEV_SAMP; | ||
|  | 
 | ||
|  | create table SUBDATE(a int); | ||
|  | drop table SUBDATE; | ||
|  | create table SUBDATE (a int); | ||
|  | drop table SUBDATE; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUBSTR(a int); | ||
|  | create table SUBSTR (a int); | ||
|  | drop table SUBSTR; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUBSTRING(a int); | ||
|  | create table SUBSTRING (a int); | ||
|  | drop table SUBSTRING; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUM(a int); | ||
|  | create table SUM (a int); | ||
|  | drop table SUM; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SYSDATE(a int); | ||
|  | create table SYSDATE (a int); | ||
|  | drop table SYSDATE; | ||
|  | 
 | ||
|  | create table SYSTEM_USER(a int); | ||
|  | drop table SYSTEM_USER; | ||
|  | create table SYSTEM_USER (a int); | ||
|  | drop table SYSTEM_USER; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table TRIM(a int); | ||
|  | create table TRIM (a int); | ||
|  | drop table TRIM; | ||
|  | 
 | ||
|  | # Limitation removed in 5.1 | ||
|  | create table UNIQUE_USERS(a int); | ||
|  | drop table UNIQUE_USERS; | ||
|  | create table UNIQUE_USERS (a int); | ||
|  | drop table UNIQUE_USERS; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VARIANCE(a int); | ||
|  | create table VARIANCE (a int); | ||
|  | drop table VARIANCE; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VAR_POP(a int); | ||
|  | create table VAR_POP (a int); | ||
|  | drop table VAR_POP; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VAR_SAMP(a int); | ||
|  | create table VAR_SAMP (a int); | ||
|  | drop table VAR_SAMP; | ||
|  | 
 | ||
|  | set SQL_MODE='IGNORE_SPACE'; | ||
|  | 
 | ||
|  | create table ADDDATE(a int); | ||
|  | drop table ADDDATE; | ||
|  | create table ADDDATE (a int); | ||
|  | drop table ADDDATE; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_AND(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_AND (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_OR(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_OR (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_XOR(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table BIT_XOR (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CAST(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CAST (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table COUNT(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table COUNT (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CURDATE(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CURDATE (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CURTIME(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table CURTIME (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table DATE_ADD(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table DATE_ADD (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table DATE_SUB(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table DATE_SUB (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table EXTRACT(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table EXTRACT (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table GROUP_CONCAT(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table GROUP_CONCAT (a int); | ||
|  | 
 | ||
|  | # Limitation removed in 5.1 | ||
|  | create table GROUP_UNIQUE_USERS(a int); | ||
|  | drop table GROUP_UNIQUE_USERS; | ||
|  | create table GROUP_UNIQUE_USERS (a int); | ||
|  | drop table GROUP_UNIQUE_USERS; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MAX(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MAX (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MID(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MID (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MIN(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table MIN (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table NOW(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table NOW (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table POSITION(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table POSITION (a int); | ||
|  | 
 | ||
|  | create table SESSION_USER(a int); | ||
|  | drop table SESSION_USER; | ||
|  | create table SESSION_USER (a int); | ||
|  | drop table SESSION_USER; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STD(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STD (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV_POP(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV_POP (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV_SAMP(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table STDDEV_SAMP (a int); | ||
|  | 
 | ||
|  | create table SUBDATE(a int); | ||
|  | drop table SUBDATE; | ||
|  | create table SUBDATE (a int); | ||
|  | drop table SUBDATE; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUBSTR(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUBSTR (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUBSTRING(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUBSTRING (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUM(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SUM (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SYSDATE(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table SYSDATE (a int); | ||
|  | 
 | ||
|  | create table SYSTEM_USER(a int); | ||
|  | drop table SYSTEM_USER; | ||
|  | create table SYSTEM_USER (a int); | ||
|  | drop table SYSTEM_USER; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table TRIM(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table TRIM (a int); | ||
|  | 
 | ||
|  | # Limitation removed in 5.1 | ||
|  | create table UNIQUE_USERS(a int); | ||
|  | drop table UNIQUE_USERS; | ||
|  | create table UNIQUE_USERS (a int); | ||
|  | drop table UNIQUE_USERS; | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VARIANCE(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VARIANCE (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VAR_POP(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VAR_POP (a int); | ||
|  | 
 | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VAR_SAMP(a int); | ||
|  | --error ER_PARSE_ERROR | ||
|  | create table VAR_SAMP (a int); | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#25930 (CREATE TABLE x SELECT ... parses columns wrong when ran with | ||
|  | #            ANSI_QUOTES mode) | ||
|  | # | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | DROP TABLE IF EXISTS table_25930_a; | ||
|  | DROP TABLE IF EXISTS table_25930_b; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | SET SQL_MODE = 'ANSI_QUOTES'; | ||
|  | CREATE TABLE table_25930_a ( "blah" INT ); | ||
|  | CREATE TABLE table_25930_b SELECT "blah" - 1 FROM table_25930_a; | ||
|  | 
 | ||
|  | # The lexer used to chop the first <">, | ||
|  | # not marking the start of the token "blah" correctly. | ||
|  | desc table_25930_b; | ||
|  | 
 | ||
|  | DROP TABLE table_25930_a; | ||
|  | DROP TABLE table_25930_b; | ||
|  | 
 | ||
|  | 
 | ||
|  | SET @@sql_mode=@save_sql_mode; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#26030 (Parsing fails for stored routine w/multi-statement execution | ||
|  | # enabled) | ||
|  | # | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | DROP PROCEDURE IF EXISTS p26030; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | delimiter $$; | ||
|  | 
 | ||
|  | select "non terminated"$$ | ||
|  | select "terminated";$$ | ||
|  | select "non terminated, space"      $$ | ||
|  | select "terminated, space";      $$ | ||
|  | select "non terminated, comment" /* comment */$$ | ||
|  | select "terminated, comment"; /* comment */$$ | ||
|  | 
 | ||
|  | # Multi queries can not be used in --ps-protocol test mode | ||
|  | --disable_ps_protocol | ||
|  | 
 | ||
|  | select "stmt 1";select "stmt 2 non terminated"$$ | ||
|  | select "stmt 1";select "stmt 2 terminated";$$ | ||
|  | select "stmt 1";select "stmt 2 non terminated, space"      $$ | ||
|  | select "stmt 1";select "stmt 2 terminated, space";      $$ | ||
|  | select "stmt 1";select "stmt 2 non terminated, comment" /* comment */$$ | ||
|  | select "stmt 1";select "stmt 2 terminated, comment"; /* comment */$$ | ||
|  | 
 | ||
|  | select "stmt 1";             select "space, stmt 2"$$ | ||
|  | select "stmt 1";/* comment */select "comment, stmt 2"$$ | ||
|  | 
 | ||
|  | DROP PROCEDURE IF EXISTS p26030; CREATE PROCEDURE p26030() BEGIN SELECT 1; END; CALL p26030() | ||
|  | $$ | ||
|  | 
 | ||
|  | DROP PROCEDURE IF EXISTS p26030; CREATE PROCEDURE p26030() SELECT 1; CALL p26030() | ||
|  | $$ | ||
|  | 
 | ||
|  | --enable_ps_protocol | ||
|  | 
 | ||
|  | delimiter ;$$ | ||
|  | DROP PROCEDURE p26030; | ||
|  | 
 | ||
|  | #============================================================================= | ||
|  | # SYNTACTIC PARSER (bison) | ||
|  | #============================================================================= | ||
|  | 
 | ||
|  | # | ||
|  | # | ||
|  | # Bug#21114 (Foreign key creation fails to table with name format) | ||
|  | #  | ||
|  | 
 | ||
|  | # Test coverage with edge conditions | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select pi(3.14); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select tan(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select tan(1, 2); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select makedate(1); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select makedate(1, 2, 3); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select maketime(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select maketime(1); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select maketime(1, 2); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select maketime(1, 2, 3, 4); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select atan(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select atan2(1, 2, 3); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select concat(); | ||
|  | select concat("foo"); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select concat_ws(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select concat_ws("foo"); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select encrypt(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select encrypt(1, 2, 3); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select des_encrypt("p1", "p2", "not expected"); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select des_decrypt("p1", "p2", "not expected"); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select elt(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select elt(1); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select export_set(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select export_set("p1"); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select export_set("p1", "p2"); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select export_set("p1", "p2", "p3", "p4", "p5", "p6"); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select field(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select field("p1"); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select from_unixtime(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select from_unixtime(1, 2, 3); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select unix_timestamp(1, 2); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select greatest(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select greatest(12); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select last_insert_id(1, 2); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select least(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select least(12); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select locate(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select locate(1); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select locate(1, 2, 3, 4); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select log(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select log(1, 2, 3); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select make_set(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select make_set(1); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select master_pos_wait(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select master_pos_wait(1); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select master_pos_wait(1, 2, 3, 4); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select rand(1, 2, 3); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select round(1, 2, 3); | ||
|  | 
 | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select yearweek(); | ||
|  | -- error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT | ||
|  | select yearweek(1, 2, 3); | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#24736: UDF functions parsed as Stored Functions | ||
|  | # | ||
|  | 
 | ||
|  | # Verify that the syntax for calling UDF : foo(expr AS param, ...) | ||
|  | # can not be used when calling native functions | ||
|  | 
 | ||
|  | # Native function with 1 argument | ||
|  | 
 | ||
|  | select abs(3); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select abs(3 AS three); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select abs(3 three); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select abs(3 AS "three"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select abs(3 "three"); | ||
|  | 
 | ||
|  | # Native function with 2 arguments | ||
|  | 
 | ||
|  | set @bar="bar"; | ||
|  | set @foobar="foobar"; | ||
|  | 
 | ||
|  | select instr("foobar", "bar"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar" AS p1, "bar"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar" p1, "bar"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar" AS "p1", "bar"); | ||
|  | ## String concatenation, valid syntax | ||
|  | select instr("foobar" "p1", "bar"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr(@foobar "p1", "bar"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar", "bar" AS p2); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar", "bar" p2); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar", "bar" AS "p2"); | ||
|  | ## String concatenation, valid syntax | ||
|  | select instr("foobar", "bar" "p2"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar", @bar "p2"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select instr("foobar" AS p1, "bar" AS p2); | ||
|  | 
 | ||
|  | # Native function with 3 arguments | ||
|  | 
 | ||
|  | select conv(255, 10, 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255 AS p1, 10, 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255 p1, 10, 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255 AS "p1", 10, 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255 "p1", 10, 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10 AS p2, 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10 p2, 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10 AS "p2", 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10 "p2", 16); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10, 16 AS p3); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10, 16 p3); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10, 16 AS "p3"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255, 10, 16 "p3"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select conv(255 AS p1, 10 AS p2, 16 AS p3); | ||
|  | 
 | ||
|  | # Native function with a variable number of arguments | ||
|  | 
 | ||
|  | select atan(10); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 AS p1); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 p1); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 AS "p1"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 "p1"); | ||
|  | 
 | ||
|  | select atan(10, 20); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 AS p1, 20); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 p1, 20); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 AS "p1", 20); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 "p1", 20); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10, 20 AS p2); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10, 20 p2); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10, 20 AS "p2"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10, 20 "p2"); | ||
|  | -- error ER_WRONG_PARAMETERS_TO_NATIVE_FCT | ||
|  | select atan(10 AS p1, 20 AS p2); | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#22312 Syntax error in expression with INTERVAL() | ||
|  | # | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | DROP TABLE IF EXISTS t1; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE; | ||
|  | SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE; | ||
|  | SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; | ||
|  | SELECT 1 + INTERVAL(1,0,1,2) + 1; | ||
|  | SELECT INTERVAL(1^1,0,1,2) + 1; | ||
|  | SELECT INTERVAL(1,0+1,2,3) * 5.5; | ||
|  | SELECT INTERVAL(3,3,1+3,4+4) / 0.5; | ||
|  | SELECT (INTERVAL(1,0,1,2) + 5) * 7 + INTERVAL(1,0,1,2) / 2; | ||
|  | SELECT INTERVAL(1,0,1,2) + 1, 5 * INTERVAL(1,0,1,2); | ||
|  | SELECT INTERVAL(0,(1*5)/2) + INTERVAL(5,4,3); | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | SELECT 1^1 + INTERVAL 1+1 SECOND & 1 + INTERVAL 1+1 SECOND; | ||
|  | SELECT 1%2 - INTERVAL 1^1 SECOND | 1%2 - INTERVAL 1^1 SECOND; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | CREATE TABLE t1 (a INT, b DATETIME); | ||
|  | INSERT INTO t1 VALUES (INTERVAL(3,2,1) + 1, "1997-12-31 23:59:59" + INTERVAL 1 SECOND); | ||
|  | SELECT * FROM t1 WHERE a = INTERVAL(3,2,1) + 1; | ||
|  | DROP TABLE t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#28317 Left Outer Join with {oj outer-join} | ||
|  | # | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | DROP TABLE IF EXISTS t1,t2,t3; | ||
|  | --enable_warnings | ||
|  | CREATE TABLE t1 (a1 INT, a2 INT, a3 INT, a4 DATETIME); | ||
|  | CREATE TABLE t2 LIKE t1; | ||
|  | CREATE TABLE t3 LIKE t1; | ||
|  | SELECT t1.* FROM t1 AS t0, { OJ t2 INNER JOIN t1 ON (t1.a1=t2.a1) } WHERE t0.a3=2; | ||
|  | SELECT t1.*,t2.* FROM { OJ ((t1 INNER JOIN t2 ON (t1.a1=t2.a2)) LEFT OUTER JOIN t3 ON t3.a3=t2.a1)}; | ||
|  | SELECT t1.*,t2.* FROM { OJ ((t1 LEFT OUTER JOIN t2 ON t1.a3=t2.a2) INNER JOIN t3 ON (t3.a1=t2.a2))}; | ||
|  | SELECT t1.*,t2.* FROM { OJ (t1 LEFT OUTER JOIN t2 ON t1.a1=t2.a2) CROSS JOIN t3 ON (t3.a2=t2.a3)}; | ||
|  | SELECT * FROM {oj t1 LEFT OUTER JOIN t2 ON t1.a1=t2.a3} WHERE t1.a2 > 10; | ||
|  | SELECT {fn CONCAT(a1,a2)} FROM t1; | ||
|  | UPDATE t3 SET a4={d '1789-07-14'} WHERE a1=0; | ||
|  | SELECT a1, a4 FROM t2 WHERE a4 LIKE {fn UCASE('1789-07-14')}; | ||
|  | DROP TABLE t1, t2, t3; | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # End of 5.1 tests | ||
|  | --echo # |