Add PLAN used by SELECTABLE STORED PROCEDURE also into PLAN where it used
-------------------------------------------------------------------------
Key: CORE-5035
URL: http://tracker.firebirdsql.org/browse/CORE-5035
Project: Firebird Core
Issue Type: New Feature
Components: Engine
Affects Versions: 4.0 Initial
Environment: Any
Reporter: Arno Brinkman
Priority: Minor
PLAN Output (At least the detailed PLAN) should contain also the information
from a selectable STORED PROCEDURE used in a statement.
Example DDL/DML to show issue:
--------------------------------------------------------------------------------
CREATE TABLE AUCTIONS
(
AUCTIONID BIGINT NOT NULL,
DESCRIPTION VARCHAR( 200) NOT NULL,
STARTPRICE NUMERIC( 12, 2) NOT NULL,
STEPPRICE NUMERIC( 8, 2),
CONSTRAINT PK_AUCTIONS PRIMARY KEY (AUCTIONID)
);
CREATE TABLE AUCTIONBIDS
(
AUCTIONBIDID BIGINT NOT NULL,
AUCTIONID BIGINT NOT NULL,
BIDPRICE NUMERIC( 12, 2) NOT NULL,
BIDDER VARCHAR( 100) NOT NULL,
BIDDATETIME TIMESTAMP NOT NULL,
CONSTRAINT PK_AUCTIONBIDS PRIMARY KEY (AUCTIONBIDID),
CONSTRAINT FK_AUCTIONBIDS_AUCTIONS FOREIGN KEY (AUCTIONID)
REFERENCES AUCTIONS (AUCTIONID)
ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE DESC INDEX I_AUCTIONBIDS_AUCTID_PRICE_DESC ON AUCTIONBIDS (AUCTIONID,
BIDPRICE);
SET TERM ^^ ;
CREATE PROCEDURE P_GET_LASTBID (
AUCTIONID BigInt)
returns (
AUCTIONBIDID BigInt,
BIDDER VarChar(100),
BIDPRICE Numeric(12,2))
AS
BEGIN
FOR
SELECT
ab.AUCTIONBIDID, ab.BIDDER, ab.BIDPRICE
FROM
AUCTIONBIDS ab
WHERE
ab.AUCTIONID = :AUCTIONID
ORDER BY
ab.BIDPRICE DESC
FETCH FIRST 1 ROWS ONLY
INTO
:AUCTIONBIDID, :BIDDER, :BIDPRICE
DO
BEGIN
SUSPEND;
END
END ^^
SET TERM ; ^^
COMMIT;
INSERT INTO AUCTIONS (AUCTIONID, DESCRIPTION, STARTPRICE, STEPPRICE) VALUES (1,
'Firebird SQL mascot', 80, 10);
INSERT INTO AUCTIONS (AUCTIONID, DESCRIPTION, STARTPRICE, STEPPRICE) VALUES (2,
'Firebird SQL QA collection', 50, 5);
INSERT INTO AUCTIONBIDS (AUCTIONBIDID, AUCTIONID, BIDPRICE, BIDDER,
BIDDATETIME) VALUES (1, 2, 50, 'Cheapo', '11/25/2015 11:00:00.000');
INSERT INTO AUCTIONBIDS (AUCTIONBIDID, AUCTIONID, BIDPRICE, BIDDER,
BIDDATETIME) VALUES (2, 2, 55, 'ICanDoBetter', '11/25/2015 11:00:24.000');
INSERT INTO AUCTIONBIDS (AUCTIONBIDID, AUCTIONID, BIDPRICE, BIDDER,
BIDDATETIME) VALUES (3, 2, 75, 'IWantIt', '11/25/2015 11:01:07.000');
INSERT INTO AUCTIONBIDS (AUCTIONBIDID, AUCTIONID, BIDPRICE, BIDDER,
BIDDATETIME) VALUES (4, 1, 100, 'IWantIt', '11/25/2015 11:14:30.000');
COMMIT;
--------------------------------------------------------------------------------
Running next query:
SELECT
*
FROM
AUCTIONS a
LEFT JOIN P_GET_LASTBID(a.AUCTIONID) ON (1 = 1)
Current (FB3.0 RC1) will output PLAN:
PLAN JOIN (A NATURAL, P_GET_LASTBID NATURAL)
Expected something like:
PLAN JOIN (A NATURAL, P_GET_LASTBID (PLAN (AB ORDER
I_AUCTIONBIDS_AUCTID_PRICE_DESC)))
Current (FB3.0 RC1) will output detailed PLAN:
Select Expression
-> Nested Loop Join (outer)
-> Table "AUCTIONS" as "A" Full Scan
-> Procedure "P_GET_LASTBID" Scan
Expected something like :
Select Expression
-> Nested Loop Join (outer)
-> Table "AUCTIONS" as "A" Full Scan
-> Procedure "P_GET_LASTBID" Scan
Select Expression
-> First N Records
-> Filter
-> Table "AUCTIONBIDS" as "AB" Access By ID
-> Index "I_AUCTIONBIDS_AUCTID_PRICE_DESC" Range Scan
(partial match: 1/2)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel