~ubuntu-branches/ubuntu/lucid/postgresql-8.4/lucid-proposed

« back to all changes in this revision

Viewing changes to src/backend/optimizer/path/allpaths.c

  • Committer: Package Import Robot
  • Author(s): Martin Pitt
  • Date: 2012-09-25 07:38:24 UTC
  • mfrom: (1.3.8) (12.1.6 lucid-security)
  • Revision ID: package-import@ubuntu.com-20120925073824-w62lp3agkr8dwnoc
Tags: 8.4.14-0ubuntu10.04
* New upstream bug fix release: (LP: #1055944)
  - Fix planner's assignment of executor parameters, and fix executor's
    rescan logic for CTE plan nodes.
    These errors could result in wrong answers from queries that scan
    the same WITH subquery multiple times.
  - Improve page-splitting decisions in GiST indexes.
    Multi-column GiST indexes might suffer unexpected bloat due to this
    error.
  - Fix cascading privilege revoke to stop if privileges are still held.
    If we revoke a grant option from some role "X", but "X" still holds
    that option via a grant from someone else, we should not
    recursively revoke the corresponding privilege from role(s) "Y"
    that "X" had granted it to.
  - Fix handling of SIGFPE when PL/Perl is in use.
    Perl resets the process's SIGFPE handler to SIG_IGN, which could
    result in crashes later on. Restore the normal Postgres signal
    handler after initializing PL/Perl.
  - Prevent PL/Perl from crashing if a recursive PL/Perl function is
    redefined while being executed.
  - Work around possible misoptimization in PL/Perl.
    Some Linux distributions contain an incorrect version of
    "pthread.h" that results in incorrect compiled code in PL/Perl,
    leading to crashes if a PL/Perl function calls another one that
    throws an error.

Show diffs side-by-side

added added

removed removed

Lines of Context:
626
626
        else
627
627
                tuple_fraction = root->tuple_fraction;
628
628
 
 
629
        /* plan_params should not be in use in current query level */
 
630
        Assert(root->plan_params == NIL);
 
631
 
629
632
        /* Generate the plan for the subquery */
630
633
        rel->subplan = subquery_planner(root->glob, subquery,
631
634
                                                                        root,
633
636
                                                                        &subroot);
634
637
        rel->subrtable = subroot->parse->rtable;
635
638
 
 
639
        /*
 
640
         * Since we don't yet support LATERAL, it should not be possible for the
 
641
         * sub-query to have requested parameters of this level.
 
642
         */
 
643
        if (root->plan_params)
 
644
                elog(ERROR, "unexpected outer reference in subquery in FROM");
 
645
 
636
646
        /* Copy number of output rows from subplan */
637
647
        rel->tuples = rel->subplan->plan_rows;
638
648