mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	Item_func::print() prints itself as name + "(" + arguments + ")".
Normally that works, but Item_func_interval internally implements its
arguments as one single Item_row. Item_row prints itself as
"(" + values + ")". As a result, "INTERVAL(1,2)" was being printed
as "INTERVAL((1,2))". Fixed with a custom Item_func_interval::print().
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
--echo #
 | 
						|
--echo # Bug#40277 SHOW CREATE VIEW returns invalid SQL
 | 
						|
--echo # Bug#41999 SHOW CREATE VIEW returns invalid SQL if subquery is used in SELECT list
 | 
						|
--echo #
 | 
						|
 | 
						|
--echo # 65 characters exceed the maximum length of a column identifier. The system cannot derive the name from statement.
 | 
						|
--echo #    Constant with length = 65 . Expect to get the identifier 'Name_exp_1'.
 | 
						|
let $after_select= '<--- 65 char including the arrows                            --->';
 | 
						|
--source include/view_alias.inc
 | 
						|
--echo #    Subquery with length = 65 . Expect to get the identifier 'Name_exp_1'.
 | 
						|
--echo #    Attention: Identifier for the column within the subquery will be not generated.
 | 
						|
let $after_select=  (SELECT '<--- 54 char including the arrows (+ 11 outside)   -->');
 | 
						|
--source include/view_alias.inc
 | 
						|
--echo # -----------------------------------------------------------------------------------------------------------------
 | 
						|
#
 | 
						|
--echo # 64 characters are the maximum length of a column identifier. The system can derive the name from the statement.
 | 
						|
let $after_select= '<--- 64 char including the arrows                           --->';
 | 
						|
--source include/view_alias.inc
 | 
						|
let $after_select=  (SELECT '<--- 53 char including the arrows (+ 11 outside) --->');
 | 
						|
--source include/view_alias.inc
 | 
						|
--echo # -----------------------------------------------------------------------------------------------------------------
 | 
						|
#
 | 
						|
--echo # Identifiers must not have trailing spaces. The system cannot derive the name from a constant with trailing space.
 | 
						|
--echo # Generated identifiers have at their end the position within the select column list.
 | 
						|
--echo # 'c2 ' -> 'Name_exp_1' , ' c4 ' -> 'Name_exp_2'
 | 
						|
let $after_select= 'c1', 'c2 ', ' c3', ' c4 ';
 | 
						|
--source include/view_alias.inc
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Bug#40277 SHOW CREATE VIEW returns invalid SQL
 | 
						|
--echo #
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP VIEW IF EXISTS v1;
 | 
						|
DROP TABLE IF EXISTS t1,t2;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
--echo # Column name exceeds the maximum length.
 | 
						|
CREATE VIEW v1 AS SELECT '0000000000 1111111111 2222222222 3333333333 4444444444 5555555555';
 | 
						|
let $query = `SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v1'`;
 | 
						|
DROP VIEW v1;
 | 
						|
eval CREATE VIEW v1 AS $query;
 | 
						|
DROP VIEW v1;
 | 
						|
 | 
						|
--echo # Column names with leading trailing spaces.
 | 
						|
CREATE VIEW v1 AS SELECT 'c1', 'c2 ', ' c3', ' c4 ';
 | 
						|
let $query = `SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v1'`;
 | 
						|
DROP VIEW v1;
 | 
						|
eval CREATE VIEW v1 AS $query;
 | 
						|
DROP VIEW v1;
 | 
						|
 | 
						|
--echo # Column name conflicts with a auto-generated one.
 | 
						|
CREATE VIEW v1 AS SELECT 'c1', 'c2 ', ' c3', ' c4 ', 'Name_exp_2';
 | 
						|
let $query = `SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v1'`;
 | 
						|
DROP VIEW v1;
 | 
						|
eval CREATE VIEW v1 AS $query;
 | 
						|
DROP VIEW v1;
 | 
						|
 | 
						|
--echo # Invalid conlumn name in subquery.
 | 
						|
CREATE VIEW v1 AS SELECT (SELECT ' c1 ');
 | 
						|
let $query = `SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v1'`;
 | 
						|
DROP VIEW v1;
 | 
						|
eval CREATE VIEW v1 AS $query;
 | 
						|
DROP VIEW v1;
 | 
						|
 | 
						|
CREATE TABLE t1(a INT);
 | 
						|
CREATE TABLE t2 LIKE t1;
 | 
						|
 | 
						|
--echo # Test alias in subquery
 | 
						|
CREATE VIEW v1 AS SELECT a FROM t1 WHERE EXISTS (SELECT 1 FROM t2 AS b WHERE b.a = 0);
 | 
						|
let $query = `SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v1'`;
 | 
						|
DROP VIEW v1;
 | 
						|
eval CREATE VIEW v1 AS $query;
 | 
						|
DROP VIEW v1;
 | 
						|
 | 
						|
--echo # Test column alias in subquery
 | 
						|
CREATE VIEW v1 AS SELECT a FROM t1 WHERE EXISTS (SELECT a AS alias FROM t1 GROUP BY alias);
 | 
						|
SHOW CREATE VIEW v1;
 | 
						|
let $query = `SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v1'`;
 | 
						|
DROP VIEW v1;
 | 
						|
eval CREATE VIEW v1 AS $query;
 | 
						|
DROP VIEW v1;
 | 
						|
 | 
						|
--echo # Alias as the expression column name.
 | 
						|
CREATE VIEW v1 AS SELECT a FROM t1 WHERE EXISTS (SELECT '  a   ' AS alias FROM t1 GROUP BY alias);
 | 
						|
SHOW CREATE VIEW v1;
 | 
						|
let $query = `SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v1'`;
 | 
						|
DROP VIEW v1;
 | 
						|
eval CREATE VIEW v1 AS $query;
 | 
						|
DROP VIEW v1;
 | 
						|
 | 
						|
DROP TABLE t1, t2;
 | 
						|
 | 
						|
#
 | 
						|
# MDEV-7482 VIEW containing INTERVAL(...)
 | 
						|
#
 | 
						|
create view v1 as select interval(55,10) as my_col;
 | 
						|
show create view v1;
 | 
						|
select * from v1;
 | 
						|
drop view v1;
 | 
						|
 |