-
-
Notifications
You must be signed in to change notification settings - Fork 260
Description
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