Using minvalue in a join condition can cause the effect that records are not in the result set although they should be. Affects Firebird 5 and up, Firebird 4 and lower are not affected.
CREATE TABLE TBL1 (
DS INTEGER NOT NULL,
RU SMALLINT DEFAULT 0 NOT NULL,
WI SMALLINT DEFAULT 0 NOT NULL,
KO SMALLINT DEFAULT 0 NOT NULL
);
commit work;
CREATE TABLE TBL2 (
ID INTEGER NOT NULL,
RU SMALLINT DEFAULT 0 NOT NULL,
RU_TXT VARCHAR(100) NOT NULL,
WI SMALLINT DEFAULT 0 NOT NULL,
WI_TXT VARCHAR(100) NOT NULL,
KO SMALLINT DEFAULT 0 NOT NULL,
KO_TXT VARCHAR(100) NOT NULL
);
commit work;
INSERT INTO TBL1 (DS, RU, WI, KO) VALUES(50, 1, 1, 0);
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(1, 1, 'a', 1, 'a', 1, 'a');
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(2, 1, 'b', 1, 'b', 0, 'b');
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(3, 1, 'c', 0, 'c', 1, 'c');
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(4, 1, 'd', 0, 'd', 0, 'd');
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(5, 0, 'e', 1, 'e', 1, 'e');
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(6, 0, 'f', 1, 'f', 0, 'f');
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(7, 0, 'g', 0, 'g', 1, 'g');
INSERT INTO TBL2 (ID, RU, RU_TXT, WI, WI_TXT, KO, KO_TXT) VALUES(8, 0, 'h', 0, 'h', 0, 'h');
commit work;
Using minvalue in a join condition can cause the effect that records are not in the result set although they should be. Affects Firebird 5 and up, Firebird 4 and lower are not affected.
Test case: