|
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] |