Optimizer fails applying stream-local predicates before merging [CORE2832] #3218
Labels
affect-version: 2.0.0
affect-version: 2.0.1
affect-version: 2.0.2
affect-version: 2.0.3
affect-version: 2.0.4
affect-version: 2.0.5
affect-version: 2.1.0
affect-version: 2.1.1
affect-version: 2.1.2
affect-version: 2.1.3
affect-version: 2.5 Alpha 1
affect-version: 2.5 Beta 1
affect-version: 2.5 Beta 2
affect-version: 2.5 RC1
affect-version: 3.0 Initial
component: engine
fix-version: 5.0 Beta 1
priority: minor
qa: done successfully
type: bug
Submitted by: Nikolay Ponomarenko (pnv82)
There is different number of reading for joined table RDB$RELATION_FIELDS, when "hint" SKIP 0 is added:
SELECT * FROM (
SELECT R.*
FROM RDB$RELATIONS_SEL R
WHERE R.RDB$RELATION_ID < 10
) REL
JOIN RDB$RELATION_FIELDS F ON F.RDB$RELATION_NAME = REL.RDB$RELATION_NAME
SELECT * FROM (
SELECT SKIP 0 R.*
FROM RDB$RELATIONS_SEL R
WHERE R.RDB$RELATION_ID < 10
) REL
JOIN RDB$RELATION_FIELDS F ON F.RDB$RELATION_NAME = REL.RDB$RELATION_NAME
Predicate WHERE R.RDB$RELATION_ID < 10 is applied after merging flows
CREATE OR ALTER PROCEDURE RDB$RELATIONS_SEL
RETURNS (
RDB$RELATION_ID SMALLINT,
RDB$SYSTEM_FLAG SMALLINT,
RDB$DBKEY_LENGTH SMALLINT,
RDB$FORMAT SMALLINT,
RDB$FIELD_ID SMALLINT,
RDB$RELATION_NAME CHAR(31),
RDB$SECURITY_CLASS CHAR(31),
RDB$EXTERNAL_FILE VARCHAR(255),
RDB$OWNER_NAME CHAR(31),
RDB$DEFAULT_CLASS CHAR(31),
RDB$FLAGS SMALLINT,
RDB$RELATION_TYPE SMALLINT)
AS
BEGIN
FOR SELECT RDB$RELATION_ID,
RDB$SYSTEM_FLAG,
RDB$DBKEY_LENGTH,
RDB$FORMAT,
RDB$FIELD_ID,
RDB$RELATION_NAME,
RDB$SECURITY_CLASS,
RDB$EXTERNAL_FILE,
RDB$OWNER_NAME,
RDB$DEFAULT_CLASS,
RDB$FLAGS,
RDB$RELATION_TYPE
FROM RDB$RELATIONS
INTO :RDB$RELATION_ID,
:RDB$SYSTEM_FLAG,
:RDB$DBKEY_LENGTH,
:RDB$FORMAT,
:RDB$FIELD_ID,
:RDB$RELATION_NAME,
:RDB$SECURITY_CLASS,
:RDB$EXTERNAL_FILE,
:RDB$OWNER_NAME,
:RDB$DEFAULT_CLASS,
:RDB$FLAGS,
:RDB$RELATION_TYPE
DO
BEGIN
SUSPEND;
END
END
Commits: 71e4f9a
The text was updated successfully, but these errors were encountered: