🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.interbase.sql
Article #86

no current record for fetch operation mining explicit left joins and implicit inner joins

#86
From: Massimiliano Trezzi
Date: Wed, 28 May 2008 16:26
82 lines
3018 bytes
Hi,

I have a problem with Interbase 2007.

If I make a query with some explicit left outer join (all in from clause) 
and some implicit inner join (tables in from clause, conditions in where 
clause) I have some chance to get an error: no current record for fetch 
operation.

The problem can arise using a view with left outer join in a query with only 
implicit joins too.

I agree that is not the best way to make a query, but some tools do so and 
this make this trouble a big trouble!

Here are the steps to reproduce the problem:

CREATE TABLE A (
    ID INTEGER NOT NULL PRIMARY KEY,
    DES VARCHAR(128)
);

COMMIT;

CREATE TABLE B (
    ID INTEGER NOT NULL PRIMARY KEY,
    A_ID INTEGER,
    DES VARCHAR(128)
);

COMMIT;

ALTER TABLE B ADD CONSTRAINT FK_B_A FOREIGN KEY (A_ID) REFERENCES A(ID);

COMMIT;

CREATE TABLE C (
    ID INTEGER NOT NULL PRIMARY KEY,
    B_ID INTEGER,
    DES VARCHAR(128)
);

COMMIT;

ALTER TABLE C ADD CONSTRAINT FK_C_B FOREIGN KEY (B_ID) REFERENCES B(ID);

COMMIT;

COMMIT;

INSERT INTO A (ID, DES) VALUES (1,'A-ONE');
INSERT INTO A (ID, DES) VALUES (2,'A-TWO');
INSERT INTO A (ID, DES) VALUES (3,'A-THREE');
INSERT INTO A (ID, DES) VALUES (4,'A-FOUR');
INSERT INTO A (ID, DES) VALUES (5,'A-FIVE');

INSERT INTO B (ID, DES, A_ID) VALUES (1,'B-ONE',1);
INSERT INTO B (ID, DES, A_ID) VALUES (2,'B-TWO',2);
INSERT INTO B (ID, DES, A_ID) VALUES (3,'B-THREE',3);
INSERT INTO B (ID, DES, A_ID) VALUES (4,'B-FOUR',NULL);

INSERT INTO C (ID, DES, B_ID) VALUES (1,'C-ONE',1);
INSERT INTO C (ID, DES, B_ID) VALUES (2,'C-TWO',2);
INSERT INTO C (ID, DES, B_ID) VALUES (3,'C-THREE',3);
INSERT INTO C (ID, DES, B_ID) VALUES (4,'C-FOUR',4);

COMMIT;


/******************* TEST QUERIES *******************/

/* OK! */
SELECT * FROM C INNER JOIN AB ON C.B_ID = AB.B_ID;

/* NO CURRENT RECORD FOR FETCH OPERATION */
SELECT * FROM A, C LEFT OUTER JOIN B ON B.A_ID = A.ID WHERE C.B_ID = B.ID

/* OK */
SELECT * FROM A LEFT OUTER JOIN B ON B.A_ID = A.ID, C WHERE C.B_ID = B.ID

Thank you in advance.
Massimiliano Trezzi
Technical Details
Message-ID: <483d879c$1@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.germany.com!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 114a0e,c962a98f7a2cfe5f,start
X-Google-Attributes: gid114a0e,domainid0,public,usenet
X-Google-Language: ENGLISH,ASCII-7-bit
From: "Massimiliano Trezzi" <support_leavethis_@intesanet.it>
Newsgroups: borland.public.interbase.sql
Subject: no current record for fetch operation mining explicit left joins and implicit inner joins
Date: Wed, 28 May 2008 18:26:05 +0200
Lines: 96
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.3138
X-RFC2646: Format=Flowed; Original
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198
NNTP-Posting-Host: 88.34.236.154
Message-ID: <483d879c$1@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1211991964 88.34.236.154 (28 May 2008 09:26:04 -0700)
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.germany.com!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail