Skip to content

bad plan joining view including union [CORE4049] #1476

Open
@firebird-automations

Description

@firebird-automations

Submitted by: Attila Molnár (e_pluribus_unum)

Relate to CORE4976

Votes: 3

Hi!

CREATE TABLE a (id INTEGER PRIMARY KEY, code VARCHAR (10) UNIQUE, name VARCHAR (10));
CREATE TABLE b (id INTEGER PRIMARY KEY, code VARCHAR (10) UNIQUE, name VARCHAR (10));
CREATE TABLE c (id INTEGER PRIMARY KEY, code VARCHAR (10) UNIQUE, name VARCHAR (10));

CREATE VIEW v (
id,
code,
name)
AS
SELECT
id, code, name
FROM a
UNION
SELECT
id, code, name
FROM b

SELECT *
FROM c
JOIN v ON v.code = c.code
WHERE c.id=0

This has the following plan now :
PLAN JOIN ((V A NATURAL)
PLAN (V B NATURAL), C INDEX (RDB$8))

This is wrong. It shold be (same as the select with left join) :
PLAN JOIN (C INDEX (RDB$PRIMARY7)(V A INDEX (RDB$2))
PLAN (V B INDEX (RDB$4)))

Index statistics ha no effect at all, the plan is always wrong.

Thank You!