Skip site navigation (1) Skip section navigation (2)

pgsql: Avoid planner crash/Assert failure with joins to unflattenedsub

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Avoid planner crash/Assert failure with joins to unflattenedsub
Date: 2012-10-03 17:38:52
Message-ID: E1TJSuK-0003mf-7G@gemulon.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-committers
Avoid planner crash/Assert failure with joins to unflattened subqueries.

examine_simple_variable supposed that any RTE_SUBQUERY rel it gets pointed
at must have been planned already.  However, this isn't a safe assumption
because we must do selectivity estimation while generating indexscan paths,
and that code might look at join clauses involving a rel that the loop in
set_base_rel_sizes() hasn't reached yet.  The simplest fix is to play dumb
in such a situation, that is give up trying to extract any stats for the
Var.  This could possibly be improved by making a separate pass over the
RTE list to plan each unflattened subquery before we start the main
planning work --- but that would be pretty invasive and it doesn't seem
worth it, for now at least.  (We couldn't just break set_base_rel_sizes()
into two loops: the prescan would need to handle all subquery rels in the
query, not only those in the current join subproblem.)

This bug was introduced in commit 1cb108efb0e60d87e4adec38e7636b6e8efbeb57,
although I think that subsequent changes may have exposed it more than it
was originally.  Per bug #7580 from Maxim Boguk.

Branch
------
REL9_2_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/49bf146b7ad0b1751fb4d15853306dabf1ce83c6

Modified Files
--------------
src/backend/utils/adt/selfuncs.c |    6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

pgsql-committers by date

Next:From: Alvaro HerreraDate: 2012-10-03 21:22:21
Subject: pgsql: refactor ALTER some-obj SET OWNER implementation
Previous:From: Alvaro HerreraDate: 2012-10-03 15:42:41
Subject: pgsql: REASSIGN OWNED: consider grants on tablespaces, too

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group