You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hawq.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2015/11/13 19:34:11 UTC

[jira] [Commented] (HAWQ-161) Port GPDB planner fixes to HAWQ

    [ https://issues.apache.org/jira/browse/HAWQ-161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15004461#comment-15004461 ] 

ASF GitHub Bot commented on HAWQ-161:
-------------------------------------

GitHub user hsyuan opened a pull request:

    https://github.com/apache/incubator-hawq/pull/110

    HAWQ-161. Port GPDB planner fixes to HAWQ

    Port GPDB planner fixes to HAWQ

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/hsyuan/incubator-hawq HAWQ-161

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-hawq/pull/110.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #110
    
----
commit 8c1f5cd316ee5deef086ba01072649ea8c9fcf94
Author: Kenan Yao <ky...@pivotal.io>
Date:   2014-11-24T03:31:47Z

    HAWQ-161. Port GPDB planner fixes to HAWQ
    Query crashed with segmentation fault with optimizer=off.
    
    The crash happened in executor, while the root cause is in planner. The planner
    mistakenly believe that, when both the root node of subplan and the corresponding
    main plan node are executed in QD, there is no need to call function
    ParallelizeCorrelatedSubPlan. While, actually, in this situation presented in
    the JIRA, both the main plan node Window and subplan node Agg are executed in QD,
    we still need to do the subplan parallelization, otherwise, the SeqScan node
    cannot get the parameter from main plan, because they are in different slices.

commit d89b3c28e8448bdcc4c41a0c1fdbec2c04dd38d5
Author: Kenan Yao <ky...@pivotal.io>
Date:   2014-12-24T06:17:24Z

    HAWQ-161. Port GPDB planner fixes to HAWQ
    Query Crashes with "Error on receive...server closed the connection unexpectedly".
    
    Same issue as MPP-24563; after applying the fix for MPP-24563, this case still
    failed because of assert failure in apply_shareinput_xslice. Root cause is that
    cdbparallelize changes the plan but does not update the flow of the upper nodes,
    therefore, once ParallelizeCorrelatedSubPlanMutator takes action, then we cannot
    gurantee the correctness of the upper nodes' flow. Fix is to update the flow after
    transforming the lower nodes. Note that, the function
    ParallelizeCorrelatedSubPlanUpdateFlowMutator currently only handles the three
    known situations, if more cases of this kind found, just twickle that function
    can solve the problem.

commit 13f165fe2c5b78ed90092543f1616039446fd1fb
Author: Kenan Yao <ky...@pivotal.io>
Date:   2015-11-12T23:13:16Z

    HAWQ-161. Port GPDB planner fixes to HAWQ
    Planner generated unnecessary motion node for nested subplan which scan catalog table.

commit 06a85b6e32bf1388036d88f88130ddcd4d417530
Author: Kenan Yao <ky...@pivotal.io>
Date:   2015-11-12T23:36:37Z

    HAWQ-161. Port GPDB planner fixes to HAWQ
    SIGSEGV happened in HashJoin.
    
    This issue was caused by a previous fix for MPP-12637, and therefore a wrong
    plan was generated for query like:
    
    select c.relname from pg_class c where c.relname in (select b.table_name from
    information_schema.tables b where c.relname like '%id%');
    
    The RC for MPP-25724 is that, planner believes the subquery should not be pulled
    up because it contains CoerceToDomain node, while actually the subquery MUST be
    pulled up, otherwise HashJoin would fail.
    
    However, after I make planner pull up that subquery, the problem in MPP-12637
    would happen again, i.e, for query like below, planner would error out.
    
    select * FROM (select attnum::information_schema.cardinal_number from
    pg_attribute where attnum > 0) q where attnum = 4;
    
    The key problem here is the order of quals, including the pulled up ones, i.e,
    the order of "attnum = 4" and "attnum > 0", my solution is replacing
    RangeTblRef of pulled up subquery with the resulting FromExpr, which is
    consistent with PostgreSQL's style, instead of separately appending the fromlist
    and quals of the resulting FromExpr to the parent query in previous GPDB.
    
    The final problem here now is in function deconstruct_jointree(). Previous
    assumption is that the quals must be compatible with the same level relids,
    however for query #1 mentioned above, we should break this assumption, so I
    introduced the PostponedQual feature of PostgreSQL. Meanwhile, we should make
    some corresponding changes in pull_up_simple_query to appropriately do the
    ResolveNew procedure now.

----


> Port GPDB planner fixes to HAWQ
> -------------------------------
>
>                 Key: HAWQ-161
>                 URL: https://issues.apache.org/jira/browse/HAWQ-161
>             Project: Apache HAWQ
>          Issue Type: Improvement
>          Components: Optimizer
>            Reporter: Haisheng Yuan
>            Assignee: Amr El-Helw
>            Priority: Minor
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)