Hi.

I've been trying to skim over some possibilities to investigate possible 
limitations. Here it follow my results and test cases:
- If you call Stored Procedures (SP's) with EXECUTE PROCEDURE statements, plans 
are not available;- If you call SP's via SELECT FROM, you got expected 
statement plans, if this SP in turn DOESN'T call any other SP;- If you call 
SP's via SELECT FROM, you got partially expected statement plans, if this SP in 
turn CALL any other SP. In this case you won't get called SP plans, and if you 
exec called SP's with EXECUTE PROCEDURE, even the execution of called SP's will 
be omitted;

This is the test case script I used (executed with FlameRobin):
    --
    -- CREATING OBJECTS    --RECREATE TABLE test (c1 INT, c2 INT, c3 
INT);CREATE INDEX test_ix1 ON test (c1);CREATE INDEX test_ix2 ON test (c2);

SET TERM ^ ;RECREATE PROCEDURE test_01_selectable_sub_sp (c_cons INT)RETURNS 
(c_ret INT)ASBEGIN    SELECT c1    FROM test    WHERE c1 = :c_cons    INTO 
:c_ret;
    SELECT c1    FROM test    WHERE c2 = :c_ret    INTO :c_ret;
    SELECT c1    FROM test    WHERE c3 = :c_ret    INTO :c_ret;        
SUSPEND;END^SET TERM ; ^


SET TERM ^ ;RECREATE PROCEDURE test_03_selectable_sp (c_cons INT)RETURNS (c_ret 
INT)ASBEGIN    SELECT c_ret    FROM test_01_selectable_sub_sp(:c_cons)    INTO 
:c_ret;
    SELECT c_ret    FROM test_01_selectable_sub_sp(:c_ret)    INTO :c_ret;      
  SUSPEND;END^SET TERM ; ^

SET TERM ^ ;RECREATE PROCEDURE test_04_selectable_sp (c_cons INT)RETURNS (c_ret 
INT)ASBEGIN    EXECUTE PROCEDURE test_01_selectable_sub_sp(:c_cons)        
RETURNING_VALUES (:c_ret);
    EXECUTE PROCEDURE test_01_selectable_sub_sp(:c_ret)        RETURNING_VALUES 
(:c_ret);        SUSPEND;END^SET TERM ; ^



    --    -- EXECUTING SP'S    --
EXECUTE PROCEDURE test_01_selectable_sub_sp(1);EXECUTE PROCEDURE 
test_03_selectable_sp(1);EXECUTE PROCEDURE test_04_selectable_sp(1);-- Got:--   
   Plan not available.

SELECT * FROM test_01_selectable_sub_sp(1);-- Expected (something like):--    
PLAN (test INDEX (test_ix1))(test INDEX (test_ix2))(test NATURAL)---- Got:--    
PLAN (TEST INDEX (TEST_IX1))(TEST INDEX (TEST_IX2))(TEST NATURAL)---- 
Analysis:--    Ok
SELECT * FROM test_03_selectable_sp(1);-- Expected (something like):--    PLAN 
--         (test_01_selectable_sub_sp NATURAL)--                  (test INDEX 
(test_ix1))(test INDEX (test_ix2))(test NATURAL)--         
(test_01_selectable_sub_sp NATURAL)--                  (test INDEX 
(test_ix1))(test INDEX (test_ix2))(test NATURAL)---- Got:--    PLAN 
(TEST_01_SELECTABLE_SUB_SP NATURAL)(TEST_01_SELECTABLE_SUB_SP NATURAL)---- 
Analysis:--    Missing called stored procedure plans

SELECT * FROM test_04_selectable_sp(1);-- Expected (something like):--    PLAN 
--         (test_01_selectable_sub_sp NATURAL)--                  (test INDEX 
(test_ix1))(test INDEX (test_ix2))(test NATURAL)--         
(test_01_selectable_sub_sp NATURAL)--                  (test INDEX 
(test_ix1))(test INDEX (test_ix2))(test NATURAL)---- Got:--    PLAN 
(TEST_04_SELECTABLE_SP NATURAL)---- Analysis:--    Missing called stored 
procedure plans and indication of called stored procedures execution 


Att.João Paulo

 
      DE: "Gabriel Frones [email protected] [firebird-support]" 
<[email protected]>
 Para: [email protected] 
 Enviadas: Terça-feira, 31, Maio 2016 14:39:56
 Assunto: Re: [firebird-support] Stored Procedures Execution Plan
   
    It was sent and received... but this is working for me out of the box in FB 
2.5.4. I just write the select * from SP and ask for plan and it gives me the 
plan for the inside statements. Haven't tested on non-selectable SPs.
Em qua, 25 de mai de 2016 às 08:20, João Paulo Carvalho [email protected] 
[firebird-support] <[email protected]> escreveu:

     Hi.

Since this was my first post in this list, I'm not sure if it was sent.
If you already get it, or this is not the right place to discuss this kind of 
topic, I would be very grateful if you tell me where is.
Att.João Paulo

 
      DE: "[email protected] [firebird-support]" 
<[email protected]>
 Para: [email protected] 
 Enviadas: Sexta-feira, 20, Maio 2016 15:54:07
 Assunto: [firebird-support] Stored Procedures Execution Plan
 

 
    Hi.

I would like to know if it is possible to display the plan of stored procedure 
statements.
I'm interested in the plan of the statements inside the stored procedure (SP), 
not the plan just informing that I'm executing an SP.
We are running also selectable SP's.
Att.João Paulo
  

  

 
    
  #yiv5385826863 #yiv5385826863 -- #yiv5385826863ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5385826863 
#yiv5385826863ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5385826863 
#yiv5385826863ygrp-mkp #yiv5385826863hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv5385826863 #yiv5385826863ygrp-mkp #yiv5385826863ads 
{margin-bottom:10px;}#yiv5385826863 #yiv5385826863ygrp-mkp .yiv5385826863ad 
{padding:0 0;}#yiv5385826863 #yiv5385826863ygrp-mkp .yiv5385826863ad p 
{margin:0;}#yiv5385826863 #yiv5385826863ygrp-mkp .yiv5385826863ad a 
{color:#0000ff;text-decoration:none;}#yiv5385826863 #yiv5385826863ygrp-sponsor 
#yiv5385826863ygrp-lc {font-family:Arial;}#yiv5385826863 
#yiv5385826863ygrp-sponsor #yiv5385826863ygrp-lc #yiv5385826863hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5385826863 
#yiv5385826863ygrp-sponsor #yiv5385826863ygrp-lc .yiv5385826863ad 
{margin-bottom:10px;padding:0 0;}#yiv5385826863 #yiv5385826863actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv5385826863 
#yiv5385826863activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv5385826863
 #yiv5385826863activity span {font-weight:700;}#yiv5385826863 
#yiv5385826863activity span:first-child 
{text-transform:uppercase;}#yiv5385826863 #yiv5385826863activity span a 
{color:#5085b6;text-decoration:none;}#yiv5385826863 #yiv5385826863activity span 
span {color:#ff7900;}#yiv5385826863 #yiv5385826863activity span 
.yiv5385826863underline {text-decoration:underline;}#yiv5385826863 
.yiv5385826863attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv5385826863 .yiv5385826863attach div a 
{text-decoration:none;}#yiv5385826863 .yiv5385826863attach img 
{border:none;padding-right:5px;}#yiv5385826863 .yiv5385826863attach label 
{display:block;margin-bottom:5px;}#yiv5385826863 .yiv5385826863attach label a 
{text-decoration:none;}#yiv5385826863 blockquote {margin:0 0 0 
4px;}#yiv5385826863 .yiv5385826863bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv5385826863 
.yiv5385826863bold a {text-decoration:none;}#yiv5385826863 dd.yiv5385826863last 
p a {font-family:Verdana;font-weight:700;}#yiv5385826863 dd.yiv5385826863last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv5385826863 
dd.yiv5385826863last p span.yiv5385826863yshortcuts 
{margin-right:0;}#yiv5385826863 div.yiv5385826863attach-table div div a 
{text-decoration:none;}#yiv5385826863 div.yiv5385826863attach-table 
{width:400px;}#yiv5385826863 div.yiv5385826863file-title a, #yiv5385826863 
div.yiv5385826863file-title a:active, #yiv5385826863 
div.yiv5385826863file-title a:hover, #yiv5385826863 div.yiv5385826863file-title 
a:visited {text-decoration:none;}#yiv5385826863 div.yiv5385826863photo-title a, 
#yiv5385826863 div.yiv5385826863photo-title a:active, #yiv5385826863 
div.yiv5385826863photo-title a:hover, #yiv5385826863 
div.yiv5385826863photo-title a:visited {text-decoration:none;}#yiv5385826863 
div#yiv5385826863ygrp-mlmsg #yiv5385826863ygrp-msg p a 
span.yiv5385826863yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv5385826863 
.yiv5385826863green {color:#628c2a;}#yiv5385826863 .yiv5385826863MsoNormal 
{margin:0 0 0 0;}#yiv5385826863 o {font-size:0;}#yiv5385826863 
#yiv5385826863photos div {float:left;width:72px;}#yiv5385826863 
#yiv5385826863photos div div {border:1px solid 
#666666;height:62px;overflow:hidden;width:62px;}#yiv5385826863 
#yiv5385826863photos div label 
{color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv5385826863
 #yiv5385826863reco-category {font-size:77%;}#yiv5385826863 
#yiv5385826863reco-desc {font-size:77%;}#yiv5385826863 .yiv5385826863replbq 
{margin:4px;}#yiv5385826863 #yiv5385826863ygrp-actbar div a:first-child 
{margin-right:2px;padding-right:5px;}#yiv5385826863 #yiv5385826863ygrp-mlmsg 
{font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv5385826863 
#yiv5385826863ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv5385826863 
#yiv5385826863ygrp-mlmsg select, #yiv5385826863 input, #yiv5385826863 textarea 
{font:99% Arial, Helvetica, clean, sans-serif;}#yiv5385826863 
#yiv5385826863ygrp-mlmsg pre, #yiv5385826863 code {font:115% 
monospace;}#yiv5385826863 #yiv5385826863ygrp-mlmsg * 
{line-height:1.22em;}#yiv5385826863 #yiv5385826863ygrp-mlmsg #yiv5385826863logo 
{padding-bottom:10px;}#yiv5385826863 #yiv5385826863ygrp-msg p a 
{font-family:Verdana;}#yiv5385826863 #yiv5385826863ygrp-msg 
p#yiv5385826863attach-count span {color:#1E66AE;font-weight:700;}#yiv5385826863 
#yiv5385826863ygrp-reco #yiv5385826863reco-head 
{color:#ff7900;font-weight:700;}#yiv5385826863 #yiv5385826863ygrp-reco 
{margin-bottom:20px;padding:0px;}#yiv5385826863 #yiv5385826863ygrp-sponsor 
#yiv5385826863ov li a {font-size:130%;text-decoration:none;}#yiv5385826863 
#yiv5385826863ygrp-sponsor #yiv5385826863ov li 
{font-size:77%;list-style-type:square;padding:6px 0;}#yiv5385826863 
#yiv5385826863ygrp-sponsor #yiv5385826863ov ul {margin:0;padding:0 0 0 
8px;}#yiv5385826863 #yiv5385826863ygrp-text 
{font-family:Georgia;}#yiv5385826863 #yiv5385826863ygrp-text p {margin:0 0 1em 
0;}#yiv5385826863 #yiv5385826863ygrp-text tt {font-size:120%;}#yiv5385826863 
#yiv5385826863ygrp-vital ul li:last-child {border-right:none 
!important;}#yiv5385826863 

   

Reply via email to