Re: "JPPD bypassed: DISTINCT clause" in 19c
Date: Fri, 4 Sep 2020 15:55:12 +0300
Message-ID: <CAOVevU5Wh9zUJAQFq-a+ZKiRNqSc9brP__d=nO2qoKAe0BSpPg_at_mail.gmail.com>
Hi Nenad,
Yes, JPPD doesn't work in case of table(), XMLTABLE and JSON_TABLE: http://orasql.org/2019/05/30/workarounds-for-jppd-with-view-and-tablekokbf-xmltable-or-json_table-functions/
On Fri, Sep 4, 2020 at 3:26 PM Noveljic Nenad <nenad.noveljic_at_vontobel.com> wrote:
> Believe it or not, JSON is the culprit. The problem is much more serious
> than initially reported. JSON entirely shuts off cost based JPPD in 19c!
>
>
>
> Find the queries below (the table definitions are from
> https://nenadnoveljic.com/blog/join-predicate-push-down-additional-phase/
> ):
>
>
>
> With distinct:
>
>
>
> explain plan for
>
> select /*+ qb_name(QB_MAIN) */
>
> JSON_OBJECT (
>
> 'id' VALUE 1
>
> RETURNING VARCHAR2 (10)
>
> STRICT)
>
> from t1 left outer join
>
> ( select /*+ qb_name(QB_MIDDLE) */ distinct t2.n2
>
> from
>
> t2 ,
>
> ( select /*+ qb_name(QB_INNER ) */ distinct t3.n2
>
> from t3, t4
>
> where t4.n1 = t3.n1
>
> ) v2
>
> where v2.n2(+) = t2.n1
>
> ) v1 on v1.n2 = t1.n1
>
> ;
>
>
>
> JPPD: JPPD bypassed: DISTINCT clause.
>
> JPPD: JPPD bypassed: DISTINCT clause.
>
>
>
> Without distinct:
>
>
>
> explain plan for
>
> select /*+ qb_name(QB_MAIN) */
>
> JSON_OBJECT (
>
> 'id' VALUE 1
>
> RETURNING VARCHAR2 (10)
>
> STRICT)
>
> from t1 left outer join
>
> ( select /*+ qb_name(QB_MIDDLE) */ t2.n2
>
> from
>
> t2 ,
>
> ( select /*+ qb_name(QB_INNER ) */ t3.n2
>
> from t3, t4
>
> where t4.n1 = t3.n1
>
> ) v2
>
> where v2.n2(+) = t2.n1
>
> ) v1 on v1.n2 = t1.n1
>
> ;
>
>
>
> JPPD: JPPD bypassed: View has unsupported constructs.
>
>
>
> Without JSON:
>
>
>
> explain plan for
>
> select /*+ qb_name(QB_MAIN) */
>
> 1
>
> from t1 left outer join
>
> ( select /*+ qb_name(QB_MIDDLE) */ t2.n2
>
> from
>
> t2 ,
>
> ( select /*+ qb_name(QB_INNER ) */ t3.n2
>
> from t3, t4
>
> where t4.n1 = t3.n1
>
> ) v2
>
> where v2.n2(+) = t2.n1
>
> ) v1 on v1.n2 = t1.n1
>
> ;
>
>
>
> JPPD: Considering Cost-based predicate pushdown from query block
> SEL$1A44BB0C (#1)
>
> Cost-based predicate pushdown (JPPD)
>
> JPPD: Checking validity of push-down in query block QB_MIDDLE (#2)
>
> JPPD: Checking validity of push-down from query block QB_MIDDLE (#2) to
> query block QB_INNER (#3)
>
> JPPD: Passed validity checks
>
> JPPD: JPPD: Pushdown from query block QB_MIDDLE (#2) passed validity
> checks.
>
>
>
> Best regards,
>
>
>
> Nenad
>
>
>
> ____________________________________________________
>
> Please consider the environment before printing this e-mail.
>
> Bitte denken Sie an die Umwelt, bevor Sie dieses E-Mail drucken.
>
>
> Important Notice
> This message is intended only for the individual named. It may contain
> confidential or privileged information. If you are not the named addressee
> you should in particular not disseminate, distribute, modify or copy this
> e-mail. Please notify the sender immediately by e-mail, if you have
> received this message by mistake and delete it from your system.
> Without prejudice to any contractual agreements between you and us which
> shall prevail in any case, we take it as your authorization to correspond
> with you by e-mail if you send us messages by e-mail. However, we reserve
> the right not to execute orders and instructions transmitted by e-mail at
> any time and without further explanation.
> E-mail transmission may not be secure or error-free as information could
> be intercepted, corrupted, lost, destroyed, arrive late or incomplete. Also
> processing of incoming e-mails cannot be guaranteed. All liability of
> Vontobel Holding Ltd. and any of its affiliates (hereinafter collectively
> referred to as "Vontobel Group") for any damages resulting from e-mail use
> is excluded. You are advised that urgent and time sensitive messages should
> not be sent by e-mail and if verification is required please request a
> printed version. Please note that all e-mail communications to and from the
> Vontobel Group are subject to electronic storage and review by Vontobel
> Group. Unless stated to the contrary and without prejudice to any
> contractual agreements between you and Vontobel Group which shall prevail
> in any case, e-mail-communication is for informational purposes only and is
> not intended as an offer or solicitation for the purchase or sale of any
> financial instrument or as an official confirmation of any transaction.
> The legal basis for the processing of your personal data is the legitimate
> interest to develop a commercial relationship with you, as well as your
> consent to forward you commercial communications. You can exercise, at any
> time and under the terms established under current regulation, your rights.
> If you prefer not to receive any further communications, please contact
> your client relationship manager if you are a client of Vontobel Group or
> notify the sender. Please note for an exact reference to the affected group
> entity the corporate e-mail signature. For further information about data
> privacy at Vontobel Group please consult www.vontobel.com.
>
-- Best regards, Sayan Malakshinov Oracle performance tuning engineer Oracle ACE Associate http://orasql.org -- http://www.freelists.org/webpage/oracle-lReceived on Fri Sep 04 2020 - 14:55:12 CEST