From: <ta...@us...> - 2015-03-05 18:26:20
|
Revision: 60839 http://sourceforge.net/p/firebird/code/60839 Author: tabloid Date: 2015-03-05 18:26:17 +0000 (Thu, 05 Mar 2015) Log Message: ----------- See added / modified .fbt file(s) Added Paths: ----------- qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_1.fbt qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_3.fbt qa/fbt-repository/trunk/tests/functional/tabloid/arithmetic-cast-float-to-int-as-round.fbt qa/fbt-repository/trunk/tests/functional/tabloid/arithmetic-numexpr-eval-dialect-1.fbt qa/fbt-repository/trunk/tests/functional/tabloid/arithmetic-numexpr-eval-dialect-3.fbt Removed Paths: ------------- qa/fbt-repository/trunk/tests/bugs/core_1992.fbt qa/fbt-repository/trunk/tests/functional/tabloid/arithmetic-results-01.fbt Deleted: qa/fbt-repository/trunk/tests/bugs/core_1992.fbt =================================================================== --- qa/fbt-repository/trunk/tests/bugs/core_1992.fbt 2015-03-05 18:08:32 UTC (rev 60838) +++ qa/fbt-repository/trunk/tests/bugs/core_1992.fbt 2015-03-05 18:26:17 UTC (rev 60839) @@ -1,846 +0,0 @@ -{ -'id': 'bugs.core_1992', -'qmid': None, -'tracker_id': 'CORE-1992', -'title': 'bad BLR -- invalid stream for union select', -'description': '', -'min_versions': '2.5.2', -'versions': [ -{ - 'firebird_version': '2.5', - 'platform': 'All', - 'page_size': '4096', - 'test_type': 'ISQL', - 'sql_dialect': 1, - 'init_script': - """ - set term ^; - create or alter procedure - sp01( - a_01 smallint, - a_02 int, - --a_03 bigint, - a_04 numeric(9,0), - a_05 numeric(10,0), - a_06 float, - a_07 double precision, - --a_08 date, - --a_09 time, - a_10 timestamp, - a_11 varchar(1), - a_12 char(2), - a_13 blob - ) returns ( - o_01 smallint, - o_02 int, - --o_03 bigint, - o_04 numeric(9,0), - o_05 numeric(10,0), - o_06 float, - o_07 double precision, - --o_08 date, - --o_09 time, - o_10 timestamp, - o_11 varchar(1), - o_12 char(2), - o_13 blob - ) as - begin - suspend; - end - ^ - set term ;^ - commit; - """, - 'test_script': - """ - set list on; - SELECT - Project7.C8 AS par_name, - Project7.C9 AS par_type, - Project7.C10 AS par_dir - FROM ( SELECT - UnionAll3.SchemaName AS C1, - UnionAll3.Name AS C2, - UnionAll3.ReturnTypeName AS C3, - UnionAll3.IsAggregate AS C4, - UnionAll3.C1 AS C5, - UnionAll3.IsBuiltIn AS C6, - UnionAll3.IsNiladic AS C7, - UnionAll3.C2 AS C8, - UnionAll3.C3 AS C9, - UnionAll3.C4 AS C10, - UnionAll3.C5 AS C11, - 1 AS C12 - FROM (SELECT - Extent1.SchemaName AS SchemaName, - Extent1.Name AS Name, - Extent1.ReturnTypeName AS ReturnTypeName, - Extent1.IsAggregate AS IsAggregate, - CAST(1 AS SMALLINT) AS C1, - Extent1.IsBuiltIn AS IsBuiltIn, - Extent1.IsNiladic AS IsNiladic, - UnionAll1.Name AS C2, - UnionAll1.TypeName AS C3, - UnionAll1.Mode AS C4, - UnionAll1.Ordinal AS C5 - FROM ( - SELECT - TRIM(f.rdb$function_name) as Id - , null as CatalogName - , null as SchemaName - , TRIM(f.rdb$function_name) as Name - , TRIM(CASE fa.rdb$field_type - WHEN 7 THEN CASE fa.rdb$field_sub_type - WHEN 0 THEN 'smallint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 8 THEN CASE fa.rdb$field_sub_type - WHEN 0 THEN 'int' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 16 THEN CASE fa.rdb$field_sub_type - WHEN 0 THEN 'bigint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 10 THEN 'float' - WHEN 27 THEN 'double' - WHEN 12 THEN 'date' - WHEN 13 THEN 'time' - WHEN 35 THEN 'timestamp' - WHEN 261 THEN 'blob' - WHEN 37 THEN 'varchar' - WHEN 14 THEN 'char' - WHEN 40 THEN 'cstring' - END) as ReturnTypeName - , fa.rdb$character_length as ReturnMaxLength - , fa.rdb$field_precision as ReturnPrecision - , 0 as ReturnDateTimePrecision - , fa.rdb$field_scale * (-1) as ReturnScale - , null as ReturnCollationCatalog - , null as ReturnCollationSchema - , null as ReturnCollationName - , null as ReturnCharacterSetCatalog - , null as ReturnCharacterSetSchema - , null as ReturnCharacterSetName - , CAST(0 as smallint) as ReturnIsMultiSet - , CAST(0 as smallint) as IsAggregate - , CAST(0 as smallint) as IsBuiltIn - , CAST((select CASE COUNT(*) WHEN 1 THEN 1 ELSE 0 END FROM - rdb$function_arguments fa WHERE fa.rdb$function_name = - f.rdb$function_name) as smallint) as IsNiladic - FROM - rdb$functions f INNER JOIN rdb$function_arguments fa ON - (f.rdb$function_name = fa.rdb$function_name AND f.rdb$return_argument - = fa.rdb$argument_position) - WHERE f.rdb$system_flag = 0 -- ::: nb ::: need add alias f. in 3.0! - ) AS Extent1 - LEFT OUTER JOIN (SELECT - Extent2.Name AS Name, - Extent2.Ordinal AS Ordinal, - Extent2.TypeName AS TypeName, - Extent2.Mode AS Mode, - 0 AS C1, - Extent2.ParentId AS ParentId - FROM ( - SELECT - null as Id - , null as ParentId - , null as Name - , null as Ordinal - , null as TypeName - , null as MaxLength - , null as DblPrecision - , null as DateTimePrecision - , null as Scale - , null as CollationCatalog - , null as CollationSchema - , null as CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , null as IsMultiSet - - , null as Mode - , null as DefaultType - FROM - rdb$database - WHERE - 0=1 - ) AS Extent2 - UNION ALL - SELECT - Extent3.Name AS Name, - Extent3.Ordinal AS Ordinal, - Extent3.TypeName AS TypeName, - Extent3.Mode AS Mode, - 6 AS C1, - Extent3.ParentId AS ParentId - FROM ( - SELECT - TRIM(pp.rdb$procedure_name) || 'x' || - TRIM(pp.rdb$parameter_name) as Id - , TRIM(pp.rdb$procedure_name) as ParentId - , TRIM(pp.rdb$parameter_name) as Name - , pp.rdb$parameter_number+1 as Ordinal - , TRIM(CASE f.rdb$field_type - WHEN 7 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'smallint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 8 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'int' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 16 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'bigint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 10 THEN 'float' - WHEN 27 THEN 'double' - WHEN 12 THEN 'date' - WHEN 13 THEN 'time' - WHEN 35 THEN 'timestamp' - WHEN 261 THEN 'blob' - WHEN 37 THEN 'varchar' - WHEN 14 THEN 'char' - WHEN 40 THEN 'cstring' - END) as TypeName - , f.rdb$character_length as MaxLength - , f.rdb$field_precision as DblPrecision - , 0 as DateTimePrecision - , f.rdb$field_scale * (-1) as Scale - , null as CollationCatalog - , null as CollationSchema - , null CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , CAST(0 as smallint) as IsMultiSet - , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode - , NULL as DefaultType - FROM - rdb$procedure_parameters pp INNER JOIN rdb$fields f ON - (pp.rdb$field_source = f.rdb$field_name) - ) AS Extent3) AS UnionAll1 ON (0 = UnionAll1.C1) AND - (Extent1.Id = UnionAll1.ParentId) - UNION ALL - SELECT - Extent4.SchemaName AS SchemaName, - Extent4.Name AS Name, - CAST(NULL AS varchar(1000)) AS C1, - CAST(0 AS SMALLINT) AS C2, - CAST(0 AS SMALLINT) AS C3, - CAST(0 AS SMALLINT) AS C4, - CAST(0 AS SMALLINT) AS C5, - UnionAll2.Name AS C6, - UnionAll2.TypeName AS C7, - UnionAll2.Mode AS C8, - UnionAll2.Ordinal AS C9 - FROM ( - SELECT - TRIM(rdb$procedure_name) as Id - , null as CatalogName - , '' as SchemaName -- bug or not??? need to be not null - , TRIM(rdb$procedure_name) as Name - FROM - rdb$procedures - ) AS Extent4 - LEFT OUTER JOIN (SELECT - Extent5.Name AS Name, - Extent5.Ordinal AS Ordinal, - Extent5.TypeName AS TypeName, - Extent5.Mode AS Mode, - 0 AS C1, - Extent5.ParentId AS ParentId - FROM ( - SELECT - null as Id - , null as ParentId - , null as Name - , null as Ordinal - , null as TypeName - , null as MaxLength - , null as DblPrecision - , null as DateTimePrecision - , null as Scale - , null as CollationCatalog - , null as CollationSchema - , null as CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , null as IsMultiSet - , null as Mode - , null as DefaultType - FROM - rdb$database - WHERE - 0=1 - ) AS Extent5 - UNION ALL - SELECT - Extent6.Name AS Name, - Extent6.Ordinal AS Ordinal, - Extent6.TypeName AS TypeName, - Extent6.Mode AS Mode, - 6 AS C1, - Extent6.ParentId AS ParentId - FROM ( - SELECT - TRIM(pp.rdb$procedure_name) || 'x' || - TRIM(pp.rdb$parameter_name) as Id - , TRIM(pp.rdb$procedure_name) as ParentId - , TRIM(pp.rdb$parameter_name) as Name - , pp.rdb$parameter_number+1 as Ordinal - , TRIM(CASE f.rdb$field_type - WHEN 7 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'smallint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 8 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'int' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 16 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'bigint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 10 THEN 'float' - WHEN 27 THEN 'double' - WHEN 12 THEN 'date' - WHEN 13 THEN 'time' - WHEN 35 THEN 'timestamp' - WHEN 261 THEN 'blob' - WHEN 37 THEN 'varchar' - WHEN 14 THEN 'char' - WHEN 40 THEN 'cstring' - END) as TypeName - , f.rdb$character_length as MaxLength - , f.rdb$field_precision as DblPrecision - , 0 as DateTimePrecision - , f.rdb$field_scale * (-1) as Scale - , null as CollationCatalog - , null as CollationSchema - , null CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , CAST(0 as smallint) as IsMultiSet - , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode - , NULL as DefaultType - FROM - rdb$procedure_parameters pp INNER JOIN rdb$fields f ON - (pp.rdb$field_source = f.rdb$field_name) - ) AS Extent6) AS UnionAll2 ON (6 = UnionAll2.C1) AND - (Extent4.Id = UnionAll2.ParentId)) AS UnionAll3 - ) AS Project7 - order by par_dir,par_name - ; - """, - 'expected_stdout': - """ - PAR_NAME A_01 - PAR_TYPE smallint - PAR_DIR IN - PAR_NAME A_02 - PAR_TYPE int - PAR_DIR IN - PAR_NAME A_04 - PAR_TYPE numeric - PAR_DIR IN - PAR_NAME A_05 - PAR_TYPE double - PAR_DIR IN - PAR_NAME A_06 - PAR_TYPE float - PAR_DIR IN - PAR_NAME A_07 - PAR_TYPE double - PAR_DIR IN - PAR_NAME A_10 - PAR_TYPE timestamp - PAR_DIR IN - PAR_NAME A_11 - PAR_TYPE varchar - PAR_DIR IN - PAR_NAME A_12 - PAR_TYPE char - PAR_DIR IN - PAR_NAME A_13 - PAR_TYPE blob - PAR_DIR IN - PAR_NAME O_01 - PAR_TYPE smallint - PAR_DIR OUT - PAR_NAME O_02 - PAR_TYPE int - PAR_DIR OUT - PAR_NAME O_04 - PAR_TYPE numeric - PAR_DIR OUT - PAR_NAME O_05 - PAR_TYPE double - PAR_DIR OUT - PAR_NAME O_06 - PAR_TYPE float - PAR_DIR OUT - PAR_NAME O_07 - PAR_TYPE double - PAR_DIR OUT - PAR_NAME O_10 - PAR_TYPE timestamp - PAR_DIR OUT - PAR_NAME O_11 - PAR_TYPE varchar - PAR_DIR OUT - PAR_NAME O_12 - PAR_TYPE char - PAR_DIR OUT - PAR_NAME O_13 - PAR_TYPE blob - PAR_DIR OUT - """, - 'expected_stderr': - """ - """ -}, -{ - 'firebird_version': '2.5', - 'platform': 'All', - 'page_size': '4096', - 'test_type': 'ISQL', - 'sql_dialect': 3, - 'init_script': - """ - - set term ^; - create or alter procedure - sp01( - a_01 smallint, - a_02 int, - a_03 bigint, - a_04 numeric(9,0), - a_05 numeric(10,0), - a_06 float, - a_07 double precision, - a_08 date, - a_09 time, - a_10 timestamp, - a_11 varchar(1), - a_12 char(2), - a_13 blob - ) returns ( - o_01 smallint, - o_02 int, - o_03 bigint, - o_04 numeric(9,0), - o_05 numeric(10,0), - o_06 float, - o_07 double precision, - o_08 date, - o_09 time, - o_10 timestamp, - o_11 varchar(1), - o_12 char(2), - o_13 blob - ) as - begin - suspend; - end - ^ - set term ;^ - commit; - """, - 'test_script': - """ - - set list on; - SELECT - Project7.C8 AS par_name, - Project7.C9 AS par_type, - Project7.C10 AS par_dir - FROM ( SELECT - UnionAll3.SchemaName AS C1, - UnionAll3.Name AS C2, - UnionAll3.ReturnTypeName AS C3, - UnionAll3.IsAggregate AS C4, - UnionAll3.C1 AS C5, - UnionAll3.IsBuiltIn AS C6, - UnionAll3.IsNiladic AS C7, - UnionAll3.C2 AS C8, - UnionAll3.C3 AS C9, - UnionAll3.C4 AS C10, - UnionAll3.C5 AS C11, - 1 AS C12 - FROM (SELECT - Extent1.SchemaName AS SchemaName, - Extent1.Name AS Name, - Extent1.ReturnTypeName AS ReturnTypeName, - Extent1.IsAggregate AS IsAggregate, - CAST(1 AS SMALLINT) AS C1, - Extent1.IsBuiltIn AS IsBuiltIn, - Extent1.IsNiladic AS IsNiladic, - UnionAll1.Name AS C2, - UnionAll1.TypeName AS C3, - UnionAll1.Mode AS C4, - UnionAll1.Ordinal AS C5 - FROM ( - SELECT - TRIM(f.rdb$function_name) as Id - , null as CatalogName - , null as SchemaName - , TRIM(f.rdb$function_name) as Name - , TRIM(CASE fa.rdb$field_type - WHEN 7 THEN CASE fa.rdb$field_sub_type - WHEN 0 THEN 'smallint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 8 THEN CASE fa.rdb$field_sub_type - WHEN 0 THEN 'int' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 16 THEN CASE fa.rdb$field_sub_type - WHEN 0 THEN 'bigint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 10 THEN 'float' - WHEN 27 THEN 'double' - WHEN 12 THEN 'date' - WHEN 13 THEN 'time' - WHEN 35 THEN 'timestamp' - WHEN 261 THEN 'blob' - WHEN 37 THEN 'varchar' - WHEN 14 THEN 'char' - WHEN 40 THEN 'cstring' - END) as ReturnTypeName - , fa.rdb$character_length as ReturnMaxLength - , fa.rdb$field_precision as ReturnPrecision - , 0 as ReturnDateTimePrecision - , fa.rdb$field_scale * (-1) as ReturnScale - , null as ReturnCollationCatalog - , null as ReturnCollationSchema - , null as ReturnCollationName - , null as ReturnCharacterSetCatalog - , null as ReturnCharacterSetSchema - , null as ReturnCharacterSetName - , CAST(0 as smallint) as ReturnIsMultiSet - , CAST(0 as smallint) as IsAggregate - , CAST(0 as smallint) as IsBuiltIn - , CAST((select CASE COUNT(*) WHEN 1 THEN 1 ELSE 0 END FROM - rdb$function_arguments fa WHERE fa.rdb$function_name = - f.rdb$function_name) as smallint) as IsNiladic - FROM - rdb$functions f INNER JOIN rdb$function_arguments fa ON - (f.rdb$function_name = fa.rdb$function_name AND f.rdb$return_argument - = fa.rdb$argument_position) - WHERE f.rdb$system_flag = 0 -- ::: nb ::: need add alias f. in 3.0! - ) AS Extent1 - LEFT OUTER JOIN (SELECT - Extent2.Name AS Name, - Extent2.Ordinal AS Ordinal, - Extent2.TypeName AS TypeName, - Extent2.Mode AS Mode, - 0 AS C1, - Extent2.ParentId AS ParentId - FROM ( - SELECT - null as Id - , null as ParentId - , null as Name - , null as Ordinal - , null as TypeName - , null as MaxLength - , null as DblPrecision - , null as DateTimePrecision - , null as Scale - , null as CollationCatalog - , null as CollationSchema - , null as CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , null as IsMultiSet - - , null as Mode - , null as DefaultType - FROM - rdb$database - WHERE - 0=1 - ) AS Extent2 - UNION ALL - SELECT - Extent3.Name AS Name, - Extent3.Ordinal AS Ordinal, - Extent3.TypeName AS TypeName, - Extent3.Mode AS Mode, - 6 AS C1, - Extent3.ParentId AS ParentId - FROM ( - SELECT - TRIM(pp.rdb$procedure_name) || 'x' || - TRIM(pp.rdb$parameter_name) as Id - , TRIM(pp.rdb$procedure_name) as ParentId - , TRIM(pp.rdb$parameter_name) as Name - , pp.rdb$parameter_number+1 as Ordinal - , TRIM(CASE f.rdb$field_type - WHEN 7 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'smallint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 8 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'int' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 16 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'bigint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 10 THEN 'float' - WHEN 27 THEN 'double' - WHEN 12 THEN 'date' - WHEN 13 THEN 'time' - WHEN 35 THEN 'timestamp' - WHEN 261 THEN 'blob' - WHEN 37 THEN 'varchar' - WHEN 14 THEN 'char' - WHEN 40 THEN 'cstring' - END) as TypeName - , f.rdb$character_length as MaxLength - , f.rdb$field_precision as DblPrecision - , 0 as DateTimePrecision - , f.rdb$field_scale * (-1) as Scale - , null as CollationCatalog - , null as CollationSchema - , null CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , CAST(0 as smallint) as IsMultiSet - , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode - , NULL as DefaultType - FROM - rdb$procedure_parameters pp INNER JOIN rdb$fields f ON - (pp.rdb$field_source = f.rdb$field_name) - ) AS Extent3) AS UnionAll1 ON (0 = UnionAll1.C1) AND - (Extent1.Id = UnionAll1.ParentId) - UNION ALL - SELECT - Extent4.SchemaName AS SchemaName, - Extent4.Name AS Name, - CAST(NULL AS varchar(1000)) AS C1, - CAST(0 AS SMALLINT) AS C2, - CAST(0 AS SMALLINT) AS C3, - CAST(0 AS SMALLINT) AS C4, - CAST(0 AS SMALLINT) AS C5, - UnionAll2.Name AS C6, - UnionAll2.TypeName AS C7, - UnionAll2.Mode AS C8, - UnionAll2.Ordinal AS C9 - FROM ( - SELECT - TRIM(rdb$procedure_name) as Id - , null as CatalogName - , '' as SchemaName -- bug or not??? need to be not null - , TRIM(rdb$procedure_name) as Name - FROM - rdb$procedures - ) AS Extent4 - LEFT OUTER JOIN (SELECT - Extent5.Name AS Name, - Extent5.Ordinal AS Ordinal, - Extent5.TypeName AS TypeName, - Extent5.Mode AS Mode, - 0 AS C1, - Extent5.ParentId AS ParentId - FROM ( - SELECT - null as Id - , null as ParentId - , null as Name - , null as Ordinal - , null as TypeName - , null as MaxLength - , null as DblPrecision - , null as DateTimePrecision - , null as Scale - , null as CollationCatalog - , null as CollationSchema - , null as CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , null as IsMultiSet - , null as Mode - , null as DefaultType - FROM - rdb$database - WHERE - 0=1 - ) AS Extent5 - UNION ALL - SELECT - Extent6.Name AS Name, - Extent6.Ordinal AS Ordinal, - Extent6.TypeName AS TypeName, - Extent6.Mode AS Mode, - 6 AS C1, - Extent6.ParentId AS ParentId - FROM ( - SELECT - TRIM(pp.rdb$procedure_name) || 'x' || - TRIM(pp.rdb$parameter_name) as Id - , TRIM(pp.rdb$procedure_name) as ParentId - , TRIM(pp.rdb$parameter_name) as Name - , pp.rdb$parameter_number+1 as Ordinal - , TRIM(CASE f.rdb$field_type - WHEN 7 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'smallint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 8 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'int' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 16 THEN CASE f.rdb$field_sub_type - WHEN 0 THEN 'bigint' - WHEN 1 THEN 'numeric' - WHEN 2 THEN 'decimal' - END - WHEN 10 THEN 'float' - WHEN 27 THEN 'double' - WHEN 12 THEN 'date' - WHEN 13 THEN 'time' - WHEN 35 THEN 'timestamp' - WHEN 261 THEN 'blob' - WHEN 37 THEN 'varchar' - WHEN 14 THEN 'char' - WHEN 40 THEN 'cstring' - END) as TypeName - , f.rdb$character_length as MaxLength - , f.rdb$field_precision as DblPrecision - , 0 as DateTimePrecision - , f.rdb$field_scale * (-1) as Scale - , null as CollationCatalog - , null as CollationSchema - , null CollationName - , null as CharacterSetCatalog - , null as CharacterSetSchema - , null as CharacterSetName - , CAST(0 as smallint) as IsMultiSet - , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode - , NULL as DefaultType - FROM - rdb$procedure_parameters pp INNER JOIN rdb$fields f ON - (pp.rdb$field_source = f.rdb$field_name) - ) AS Extent6) AS UnionAll2 ON (6 = UnionAll2.C1) AND - (Extent4.Id = UnionAll2.ParentId)) AS UnionAll3 - ) AS Project7 - order by par_dir,par_name - ; - """, - 'expected_stdout': - """ - PAR_NAME A_01 - PAR_TYPE smallint - PAR_DIR IN - PAR_NAME A_02 - PAR_TYPE int - PAR_DIR IN - PAR_NAME A_03 - PAR_TYPE bigint - PAR_DIR IN - PAR_NAME A_04 - PAR_TYPE numeric - PAR_DIR IN - PAR_NAME A_05 - PAR_TYPE numeric - PAR_DIR IN - PAR_NAME A_06 - PAR_TYPE float - PAR_DIR IN - PAR_NAME A_07 - PAR_TYPE double - PAR_DIR IN - PAR_NAME A_08 - PAR_TYPE date - PAR_DIR IN - PAR_NAME A_09 - PAR_TYPE time - PAR_DIR IN - PAR_NAME A_10 - PAR_TYPE timestamp - PAR_DIR IN - PAR_NAME A_11 - PAR_TYPE varchar - PAR_DIR IN - PAR_NAME A_12 - PAR_TYPE char - PAR_DIR IN - PAR_NAME A_13 - PAR_TYPE blob - PAR_DIR IN - PAR_NAME O_01 - PAR_TYPE smallint - PAR_DIR OUT - PAR_NAME O_02 - PAR_TYPE int - PAR_DIR OUT - PAR_NAME O_03 - PAR_TYPE bigint - PAR_DIR OUT - PAR_NAME O_04 - PAR_TYPE numeric - PAR_DIR OUT - PAR_NAME O_05 - PAR_TYPE numeric - PAR_DIR OUT - PAR_NAME O_06 - PAR_TYPE float - PAR_DIR OUT - PAR_NAME O_07 - PAR_TYPE double - PAR_DIR OUT - PAR_NAME O_08 - PAR_TYPE date - PAR_DIR OUT - PAR_NAME O_09 - PAR_TYPE time - PAR_DIR OUT - PAR_NAME O_10 - PAR_TYPE timestamp - PAR_DIR OUT - PAR_NAME O_11 - PAR_TYPE varchar - PAR_DIR OUT - PAR_NAME O_12 - PAR_TYPE char - PAR_DIR OUT - PAR_NAME O_13 - PAR_TYPE blob - PAR_DIR OUT - """, - 'expected_stderr': - """ - """ -} -] -} Copied: qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_1.fbt (from rev 60817, qa/fbt-repository/trunk/tests/bugs/core_1992.fbt) =================================================================== --- qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_1.fbt (rev 0) +++ qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_1.fbt 2015-03-05 18:26:17 UTC (rev 60839) @@ -0,0 +1,418 @@ +{ +'id': 'bugs.core_1992_dialect_1', +'qmid': None, +'tracker_id': 'CORE-1992', +'title': 'bad BLR -- invalid stream for union select', +'description': '', +'min_versions': '2.5.2', +'versions': [ +{ + 'firebird_version': '2.5', + 'platform': 'All', + 'page_size': '4096', + 'test_type': 'ISQL', + 'sql_dialect': 1, + 'init_script': + """ + set term ^; + create or alter procedure + sp01( + a_01 smallint, + a_02 int, + --a_03 bigint, + a_04 numeric(9,0), + a_05 numeric(10,0), + a_06 float, + a_07 double precision, + --a_08 date, + --a_09 time, + a_10 timestamp, + a_11 varchar(1), + a_12 char(2), + a_13 blob + ) returns ( + o_01 smallint, + o_02 int, + --o_03 bigint, + o_04 numeric(9,0), + o_05 numeric(10,0), + o_06 float, + o_07 double precision, + --o_08 date, + --o_09 time, + o_10 timestamp, + o_11 varchar(1), + o_12 char(2), + o_13 blob + ) as + begin + suspend; + end + ^ + set term ;^ + commit; + """, + 'test_script': + """ + set list on; + SELECT + Project7.C8 AS par_name, + Project7.C9 AS par_type, + Project7.C10 AS par_dir + FROM ( SELECT + UnionAll3.SchemaName AS C1, + UnionAll3.Name AS C2, + UnionAll3.ReturnTypeName AS C3, + UnionAll3.IsAggregate AS C4, + UnionAll3.C1 AS C5, + UnionAll3.IsBuiltIn AS C6, + UnionAll3.IsNiladic AS C7, + UnionAll3.C2 AS C8, + UnionAll3.C3 AS C9, + UnionAll3.C4 AS C10, + UnionAll3.C5 AS C11, + 1 AS C12 + FROM (SELECT + Extent1.SchemaName AS SchemaName, + Extent1.Name AS Name, + Extent1.ReturnTypeName AS ReturnTypeName, + Extent1.IsAggregate AS IsAggregate, + CAST(1 AS SMALLINT) AS C1, + Extent1.IsBuiltIn AS IsBuiltIn, + Extent1.IsNiladic AS IsNiladic, + UnionAll1.Name AS C2, + UnionAll1.TypeName AS C3, + UnionAll1.Mode AS C4, + UnionAll1.Ordinal AS C5 + FROM ( + SELECT + TRIM(f.rdb$function_name) as Id + , null as CatalogName + , null as SchemaName + , TRIM(f.rdb$function_name) as Name + , TRIM(CASE fa.rdb$field_type + WHEN 7 THEN CASE fa.rdb$field_sub_type + WHEN 0 THEN 'smallint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 8 THEN CASE fa.rdb$field_sub_type + WHEN 0 THEN 'int' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 16 THEN CASE fa.rdb$field_sub_type + WHEN 0 THEN 'bigint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 10 THEN 'float' + WHEN 27 THEN 'double' + WHEN 12 THEN 'date' + WHEN 13 THEN 'time' + WHEN 35 THEN 'timestamp' + WHEN 261 THEN 'blob' + WHEN 37 THEN 'varchar' + WHEN 14 THEN 'char' + WHEN 40 THEN 'cstring' + END) as ReturnTypeName + , fa.rdb$character_length as ReturnMaxLength + , fa.rdb$field_precision as ReturnPrecision + , 0 as ReturnDateTimePrecision + , fa.rdb$field_scale * (-1) as ReturnScale + , null as ReturnCollationCatalog + , null as ReturnCollationSchema + , null as ReturnCollationName + , null as ReturnCharacterSetCatalog + , null as ReturnCharacterSetSchema + , null as ReturnCharacterSetName + , CAST(0 as smallint) as ReturnIsMultiSet + , CAST(0 as smallint) as IsAggregate + , CAST(0 as smallint) as IsBuiltIn + , CAST((select CASE COUNT(*) WHEN 1 THEN 1 ELSE 0 END FROM + rdb$function_arguments fa WHERE fa.rdb$function_name = + f.rdb$function_name) as smallint) as IsNiladic + FROM + rdb$functions f INNER JOIN rdb$function_arguments fa ON + (f.rdb$function_name = fa.rdb$function_name AND f.rdb$return_argument + = fa.rdb$argument_position) + WHERE f.rdb$system_flag = 0 -- ::: nb ::: need add alias f. in 3.0! + ) AS Extent1 + LEFT OUTER JOIN (SELECT + Extent2.Name AS Name, + Extent2.Ordinal AS Ordinal, + Extent2.TypeName AS TypeName, + Extent2.Mode AS Mode, + 0 AS C1, + Extent2.ParentId AS ParentId + FROM ( + SELECT + null as Id + , null as ParentId + , null as Name + , null as Ordinal + , null as TypeName + , null as MaxLength + , null as DblPrecision + , null as DateTimePrecision + , null as Scale + , null as CollationCatalog + , null as CollationSchema + , null as CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , null as IsMultiSet + + , null as Mode + , null as DefaultType + FROM + rdb$database + WHERE + 0=1 + ) AS Extent2 + UNION ALL + SELECT + Extent3.Name AS Name, + Extent3.Ordinal AS Ordinal, + Extent3.TypeName AS TypeName, + Extent3.Mode AS Mode, + 6 AS C1, + Extent3.ParentId AS ParentId + FROM ( + SELECT + TRIM(pp.rdb$procedure_name) || 'x' || + TRIM(pp.rdb$parameter_name) as Id + , TRIM(pp.rdb$procedure_name) as ParentId + , TRIM(pp.rdb$parameter_name) as Name + , pp.rdb$parameter_number+1 as Ordinal + , TRIM(CASE f.rdb$field_type + WHEN 7 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'smallint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 8 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'int' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 16 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'bigint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 10 THEN 'float' + WHEN 27 THEN 'double' + WHEN 12 THEN 'date' + WHEN 13 THEN 'time' + WHEN 35 THEN 'timestamp' + WHEN 261 THEN 'blob' + WHEN 37 THEN 'varchar' + WHEN 14 THEN 'char' + WHEN 40 THEN 'cstring' + END) as TypeName + , f.rdb$character_length as MaxLength + , f.rdb$field_precision as DblPrecision + , 0 as DateTimePrecision + , f.rdb$field_scale * (-1) as Scale + , null as CollationCatalog + , null as CollationSchema + , null CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , CAST(0 as smallint) as IsMultiSet + , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode + , NULL as DefaultType + FROM + rdb$procedure_parameters pp INNER JOIN rdb$fields f ON + (pp.rdb$field_source = f.rdb$field_name) + ) AS Extent3) AS UnionAll1 ON (0 = UnionAll1.C1) AND + (Extent1.Id = UnionAll1.ParentId) + UNION ALL + SELECT + Extent4.SchemaName AS SchemaName, + Extent4.Name AS Name, + CAST(NULL AS varchar(1000)) AS C1, + CAST(0 AS SMALLINT) AS C2, + CAST(0 AS SMALLINT) AS C3, + CAST(0 AS SMALLINT) AS C4, + CAST(0 AS SMALLINT) AS C5, + UnionAll2.Name AS C6, + UnionAll2.TypeName AS C7, + UnionAll2.Mode AS C8, + UnionAll2.Ordinal AS C9 + FROM ( + SELECT + TRIM(rdb$procedure_name) as Id + , null as CatalogName + , '' as SchemaName -- bug or not??? need to be not null + , TRIM(rdb$procedure_name) as Name + FROM + rdb$procedures + ) AS Extent4 + LEFT OUTER JOIN (SELECT + Extent5.Name AS Name, + Extent5.Ordinal AS Ordinal, + Extent5.TypeName AS TypeName, + Extent5.Mode AS Mode, + 0 AS C1, + Extent5.ParentId AS ParentId + FROM ( + SELECT + null as Id + , null as ParentId + , null as Name + , null as Ordinal + , null as TypeName + , null as MaxLength + , null as DblPrecision + , null as DateTimePrecision + , null as Scale + , null as CollationCatalog + , null as CollationSchema + , null as CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , null as IsMultiSet + , null as Mode + , null as DefaultType + FROM + rdb$database + WHERE + 0=1 + ) AS Extent5 + UNION ALL + SELECT + Extent6.Name AS Name, + Extent6.Ordinal AS Ordinal, + Extent6.TypeName AS TypeName, + Extent6.Mode AS Mode, + 6 AS C1, + Extent6.ParentId AS ParentId + FROM ( + SELECT + TRIM(pp.rdb$procedure_name) || 'x' || + TRIM(pp.rdb$parameter_name) as Id + , TRIM(pp.rdb$procedure_name) as ParentId + , TRIM(pp.rdb$parameter_name) as Name + , pp.rdb$parameter_number+1 as Ordinal + , TRIM(CASE f.rdb$field_type + WHEN 7 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'smallint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 8 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'int' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 16 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'bigint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 10 THEN 'float' + WHEN 27 THEN 'double' + WHEN 12 THEN 'date' + WHEN 13 THEN 'time' + WHEN 35 THEN 'timestamp' + WHEN 261 THEN 'blob' + WHEN 37 THEN 'varchar' + WHEN 14 THEN 'char' + WHEN 40 THEN 'cstring' + END) as TypeName + , f.rdb$character_length as MaxLength + , f.rdb$field_precision as DblPrecision + , 0 as DateTimePrecision + , f.rdb$field_scale * (-1) as Scale + , null as CollationCatalog + , null as CollationSchema + , null CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , CAST(0 as smallint) as IsMultiSet + , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode + , NULL as DefaultType + FROM + rdb$procedure_parameters pp INNER JOIN rdb$fields f ON + (pp.rdb$field_source = f.rdb$field_name) + ) AS Extent6) AS UnionAll2 ON (6 = UnionAll2.C1) AND + (Extent4.Id = UnionAll2.ParentId)) AS UnionAll3 + ) AS Project7 + order by par_dir,par_name + ; + """, + 'expected_stdout': + """ + PAR_NAME A_01 + PAR_TYPE smallint + PAR_DIR IN + PAR_NAME A_02 + PAR_TYPE int + PAR_DIR IN + PAR_NAME A_04 + PAR_TYPE numeric + PAR_DIR IN + PAR_NAME A_05 + PAR_TYPE double + PAR_DIR IN + PAR_NAME A_06 + PAR_TYPE float + PAR_DIR IN + PAR_NAME A_07 + PAR_TYPE double + PAR_DIR IN + PAR_NAME A_10 + PAR_TYPE timestamp + PAR_DIR IN + PAR_NAME A_11 + PAR_TYPE varchar + PAR_DIR IN + PAR_NAME A_12 + PAR_TYPE char + PAR_DIR IN + PAR_NAME A_13 + PAR_TYPE blob + PAR_DIR IN + PAR_NAME O_01 + PAR_TYPE smallint + PAR_DIR OUT + PAR_NAME O_02 + PAR_TYPE int + PAR_DIR OUT + PAR_NAME O_04 + PAR_TYPE numeric + PAR_DIR OUT + PAR_NAME O_05 + PAR_TYPE double + PAR_DIR OUT + PAR_NAME O_06 + PAR_TYPE float + PAR_DIR OUT + PAR_NAME O_07 + PAR_TYPE double + PAR_DIR OUT + PAR_NAME O_10 + PAR_TYPE timestamp + PAR_DIR OUT + PAR_NAME O_11 + PAR_TYPE varchar + PAR_DIR OUT + PAR_NAME O_12 + PAR_TYPE char + PAR_DIR OUT + PAR_NAME O_13 + PAR_TYPE blob + PAR_DIR OUT + """, + 'expected_stderr': + """ + """ +} +] +} Added: qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_3.fbt =================================================================== --- qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_3.fbt (rev 0) +++ qa/fbt-repository/trunk/tests/bugs/core_1992_dialect_3.fbt 2015-03-05 18:26:17 UTC (rev 60839) @@ -0,0 +1,438 @@ +{ +'id': 'bugs.core_1992_dialect_3', +'qmid': None, +'tracker_id': 'CORE-1992', +'title': 'bad BLR -- invalid stream for union select', +'description': '', +'min_versions': '2.5.2', +'versions': [ +{ + 'firebird_version': '2.5', + 'platform': 'All', + 'page_size': '4096', + 'test_type': 'ISQL', + 'sql_dialect': 3, + 'init_script': + """ + + set term ^; + create or alter procedure + sp01( + a_01 smallint, + a_02 int, + a_03 bigint, + a_04 numeric(9,0), + a_05 numeric(10,0), + a_06 float, + a_07 double precision, + a_08 date, + a_09 time, + a_10 timestamp, + a_11 varchar(1), + a_12 char(2), + a_13 blob + ) returns ( + o_01 smallint, + o_02 int, + o_03 bigint, + o_04 numeric(9,0), + o_05 numeric(10,0), + o_06 float, + o_07 double precision, + o_08 date, + o_09 time, + o_10 timestamp, + o_11 varchar(1), + o_12 char(2), + o_13 blob + ) as + begin + suspend; + end + ^ + set term ;^ + commit; + """, + 'test_script': + """ + + set list on; + SELECT + Project7.C8 AS par_name, + Project7.C9 AS par_type, + Project7.C10 AS par_dir + FROM ( SELECT + UnionAll3.SchemaName AS C1, + UnionAll3.Name AS C2, + UnionAll3.ReturnTypeName AS C3, + UnionAll3.IsAggregate AS C4, + UnionAll3.C1 AS C5, + UnionAll3.IsBuiltIn AS C6, + UnionAll3.IsNiladic AS C7, + UnionAll3.C2 AS C8, + UnionAll3.C3 AS C9, + UnionAll3.C4 AS C10, + UnionAll3.C5 AS C11, + 1 AS C12 + FROM (SELECT + Extent1.SchemaName AS SchemaName, + Extent1.Name AS Name, + Extent1.ReturnTypeName AS ReturnTypeName, + Extent1.IsAggregate AS IsAggregate, + CAST(1 AS SMALLINT) AS C1, + Extent1.IsBuiltIn AS IsBuiltIn, + Extent1.IsNiladic AS IsNiladic, + UnionAll1.Name AS C2, + UnionAll1.TypeName AS C3, + UnionAll1.Mode AS C4, + UnionAll1.Ordinal AS C5 + FROM ( + SELECT + TRIM(f.rdb$function_name) as Id + , null as CatalogName + , null as SchemaName + , TRIM(f.rdb$function_name) as Name + , TRIM(CASE fa.rdb$field_type + WHEN 7 THEN CASE fa.rdb$field_sub_type + WHEN 0 THEN 'smallint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 8 THEN CASE fa.rdb$field_sub_type + WHEN 0 THEN 'int' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 16 THEN CASE fa.rdb$field_sub_type + WHEN 0 THEN 'bigint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 10 THEN 'float' + WHEN 27 THEN 'double' + WHEN 12 THEN 'date' + WHEN 13 THEN 'time' + WHEN 35 THEN 'timestamp' + WHEN 261 THEN 'blob' + WHEN 37 THEN 'varchar' + WHEN 14 THEN 'char' + WHEN 40 THEN 'cstring' + END) as ReturnTypeName + , fa.rdb$character_length as ReturnMaxLength + , fa.rdb$field_precision as ReturnPrecision + , 0 as ReturnDateTimePrecision + , fa.rdb$field_scale * (-1) as ReturnScale + , null as ReturnCollationCatalog + , null as ReturnCollationSchema + , null as ReturnCollationName + , null as ReturnCharacterSetCatalog + , null as ReturnCharacterSetSchema + , null as ReturnCharacterSetName + , CAST(0 as smallint) as ReturnIsMultiSet + , CAST(0 as smallint) as IsAggregate + , CAST(0 as smallint) as IsBuiltIn + , CAST((select CASE COUNT(*) WHEN 1 THEN 1 ELSE 0 END FROM + rdb$function_arguments fa WHERE fa.rdb$function_name = + f.rdb$function_name) as smallint) as IsNiladic + FROM + rdb$functions f INNER JOIN rdb$function_arguments fa ON + (f.rdb$function_name = fa.rdb$function_name AND f.rdb$return_argument + = fa.rdb$argument_position) + WHERE f.rdb$system_flag = 0 -- ::: nb ::: need add alias f. in 3.0! + ) AS Extent1 + LEFT OUTER JOIN (SELECT + Extent2.Name AS Name, + Extent2.Ordinal AS Ordinal, + Extent2.TypeName AS TypeName, + Extent2.Mode AS Mode, + 0 AS C1, + Extent2.ParentId AS ParentId + FROM ( + SELECT + null as Id + , null as ParentId + , null as Name + , null as Ordinal + , null as TypeName + , null as MaxLength + , null as DblPrecision + , null as DateTimePrecision + , null as Scale + , null as CollationCatalog + , null as CollationSchema + , null as CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , null as IsMultiSet + + , null as Mode + , null as DefaultType + FROM + rdb$database + WHERE + 0=1 + ) AS Extent2 + UNION ALL + SELECT + Extent3.Name AS Name, + Extent3.Ordinal AS Ordinal, + Extent3.TypeName AS TypeName, + Extent3.Mode AS Mode, + 6 AS C1, + Extent3.ParentId AS ParentId + FROM ( + SELECT + TRIM(pp.rdb$procedure_name) || 'x' || + TRIM(pp.rdb$parameter_name) as Id + , TRIM(pp.rdb$procedure_name) as ParentId + , TRIM(pp.rdb$parameter_name) as Name + , pp.rdb$parameter_number+1 as Ordinal + , TRIM(CASE f.rdb$field_type + WHEN 7 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'smallint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 8 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'int' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 16 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'bigint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 10 THEN 'float' + WHEN 27 THEN 'double' + WHEN 12 THEN 'date' + WHEN 13 THEN 'time' + WHEN 35 THEN 'timestamp' + WHEN 261 THEN 'blob' + WHEN 37 THEN 'varchar' + WHEN 14 THEN 'char' + WHEN 40 THEN 'cstring' + END) as TypeName + , f.rdb$character_length as MaxLength + , f.rdb$field_precision as DblPrecision + , 0 as DateTimePrecision + , f.rdb$field_scale * (-1) as Scale + , null as CollationCatalog + , null as CollationSchema + , null CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , CAST(0 as smallint) as IsMultiSet + , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode + , NULL as DefaultType + FROM + rdb$procedure_parameters pp INNER JOIN rdb$fields f ON + (pp.rdb$field_source = f.rdb$field_name) + ) AS Extent3) AS UnionAll1 ON (0 = UnionAll1.C1) AND + (Extent1.Id = UnionAll1.ParentId) + UNION ALL + SELECT + Extent4.SchemaName AS SchemaName, + Extent4.Name AS Name, + CAST(NULL AS varchar(1000)) AS C1, + CAST(0 AS SMALLINT) AS C2, + CAST(0 AS SMALLINT) AS C3, + CAST(0 AS SMALLINT) AS C4, + CAST(0 AS SMALLINT) AS C5, + UnionAll2.Name AS C6, + UnionAll2.TypeName AS C7, + UnionAll2.Mode AS C8, + UnionAll2.Ordinal AS C9 + FROM ( + SELECT + TRIM(rdb$procedure_name) as Id + , null as CatalogName + , '' as SchemaName -- bug or not??? need to be not null + , TRIM(rdb$procedure_name) as Name + FROM + rdb$procedures + ) AS Extent4 + LEFT OUTER JOIN (SELECT + Extent5.Name AS Name, + Extent5.Ordinal AS Ordinal, + Extent5.TypeName AS TypeName, + Extent5.Mode AS Mode, + 0 AS C1, + Extent5.ParentId AS ParentId + FROM ( + SELECT + null as Id + , null as ParentId + , null as Name + , null as Ordinal + , null as TypeName + , null as MaxLength + , null as DblPrecision + , null as DateTimePrecision + , null as Scale + , null as CollationCatalog + , null as CollationSchema + , null as CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , null as IsMultiSet + , null as Mode + , null as DefaultType + FROM + rdb$database + WHERE + 0=1 + ) AS Extent5 + UNION ALL + SELECT + Extent6.Name AS Name, + Extent6.Ordinal AS Ordinal, + Extent6.TypeName AS TypeName, + Extent6.Mode AS Mode, + 6 AS C1, + Extent6.ParentId AS ParentId + FROM ( + SELECT + TRIM(pp.rdb$procedure_name) || 'x' || + TRIM(pp.rdb$parameter_name) as Id + , TRIM(pp.rdb$procedure_name) as ParentId + , TRIM(pp.rdb$parameter_name) as Name + , pp.rdb$parameter_number+1 as Ordinal + , TRIM(CASE f.rdb$field_type + WHEN 7 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'smallint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 8 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'int' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 16 THEN CASE f.rdb$field_sub_type + WHEN 0 THEN 'bigint' + WHEN 1 THEN 'numeric' + WHEN 2 THEN 'decimal' + END + WHEN 10 THEN 'float' + WHEN 27 THEN 'double' + WHEN 12 THEN 'date' + WHEN 13 THEN 'time' + WHEN 35 THEN 'timestamp' + WHEN 261 THEN 'blob' + WHEN 37 THEN 'varchar' + WHEN 14 THEN 'char' + WHEN 40 THEN 'cstring' + END) as TypeName + , f.rdb$character_length as MaxLength + , f.rdb$field_precision as DblPrecision + , 0 as DateTimePrecision + , f.rdb$field_scale * (-1) as Scale + , null as CollationCatalog + , null as CollationSchema + , null CollationName + , null as CharacterSetCatalog + , null as CharacterSetSchema + , null as CharacterSetName + , CAST(0 as smallint) as IsMultiSet + , TRIM(IIF(pp.rdb$parameter_type = 1, 'OUT', 'IN')) as Mode + , NULL as DefaultType + FROM + rdb$procedure_parameters pp INNER JOIN rdb$fields f ON + (pp.rdb$field_source = f.rdb$field_name) + ) AS Extent6) AS UnionAll2 ON (6 = UnionAll2.C1) AND + (Extent4.Id = UnionAll2.ParentId)) AS UnionAll3 + ) AS Project7 + order by par_dir,par_name + ; + """, + 'expected_stdout': + """ + PAR_NAME A_01 + PAR_TYPE smallint + PAR_DIR IN + PAR_NAME A_02 + PAR_TYPE int + PAR_DIR IN + PAR_NAME A_03 + PAR_TYPE bigint + PAR_DIR IN + PAR_NAME A_04 + PAR_TYPE numeric + PAR_DIR IN + PAR_NAME A_05 + PAR_TYPE numeric + PAR_DIR IN + PAR_NAME A_06 + PAR_TYPE float + PAR_DIR IN + PAR_NAME A_07 + PAR_TYPE double + PAR_DIR IN + PAR_NAME A_08 + PAR_TYPE date + PAR_DIR IN + PAR_NAME A_09 + PAR_TYPE time + PAR_DIR IN + PAR_NAME A_10 + PAR_TYPE timestamp + PAR_DIR IN + PAR_NAME A_11 + PAR_TYPE varchar + PAR_DIR IN + PAR_NAME A_12 + PAR_TYPE char + PAR_DIR IN + PAR_NAME A_13 + PAR_TYPE blob + PAR_DIR IN + PAR_NAME O_01 + PAR_TYPE smallint + PAR_DIR OUT + PAR_NAME O_02 + PAR_TYPE int + PAR_DIR OUT + PAR_NAME O_03 + PAR_TYPE bigint + PAR_DIR OUT + PAR_NAME ... [truncated message content] |