pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Kyle Bateman <kyle@actarg.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: unplanned sub-select error?
Date: Wed, 23 Nov 2005 12:23:00 -0500
Message-ID: <22945.1132766580@sss.pgh.pa.us> (raw)
In-Reply-To: <43837E9B.20306@actarg.com>
References: <43826850.1020302@actarg.com>
	<6603.1132621854@sss.pgh.pa.us>
	<43837E9B.20306@actarg.com>

Kyle Bateman <kyle@actarg.com> writes:
> Sorry, you're right.  I have now confirmed that this only happens when 
> updating via a view/rule (as you suspected).  Attached is a minimalist 
> sql file that demonstrates the same error message from a blank 
> database.  I'm using 8.1.0.  I'm pretty sure this problem did not exist 
> on 8.0.3.

Fixed --- attached is the patch if you need it right away.  Thanks for
the report!

			regards, tom lane


inline patch 1: src/backend/rewrite/rewriteHandler.c, src/backend/rewrite/rewriteManip.c (+26/-4 lines) download inline-1.patchIndex: src/backend/rewrite/rewriteHandler.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v retrieving revision 1.159 diff -c -r1.159 rewriteHandler.c *** src/backend/rewrite/rewriteHandler.c 22 Nov 2005 18:17:19 -0000 1.159 --- src/backend/rewrite/rewriteHandler.c 23 Nov 2005 17:10:01 -0000 *************** *** 374,379 **** --- 374,387 ---- sub_action->jointree->fromlist = list_concat(newjointree, sub_action->jointree->fromlist); + + /* + * There could have been some SubLinks in newjointree, in which + * case we'd better mark the sub_action correctly. + */ + if (parsetree->hasSubLinks && !sub_action->hasSubLinks) + sub_action->hasSubLinks = + checkExprHasSubLink((Node *) newjointree); } } Index: src/backend/rewrite/rewriteManip.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v retrieving revision 1.93 diff -c -r1.93 rewriteManip.c *** src/backend/rewrite/rewriteManip.c 22 Nov 2005 18:17:19 -0000 1.93 --- src/backend/rewrite/rewriteManip.c 23 Nov 2005 17:10:01 -0000 *************** *** 930,935 **** --- 930,936 ---- RangeTblEntry *target_rte, List *targetlist, int event, int update_varno) { + Node *result; ResolveNew_context context; context.target_varno = target_varno; *************** *** 944,951 **** * Must be prepared to start with a Query or a bare expression tree; if * it's a Query, we don't want to increment sublevels_up. */ ! return query_or_expression_tree_mutator(node, ! ResolveNew_mutator, ! (void *) &context, ! 0); } --- 945,965 ---- * Must be prepared to start with a Query or a bare expression tree; if * it's a Query, we don't want to increment sublevels_up. */ ! result = query_or_expression_tree_mutator(node, ! ResolveNew_mutator, ! (void *) &context, ! 0); ! ! if (context.inserted_sublink) ! { ! if (IsA(result, Query)) ! ((Query *) result)->hasSubLinks = true; ! /* ! * Note: if we're called on a non-Query node then it's the caller's ! * responsibility to update hasSubLinks in the ancestor Query. ! * This is pretty fragile and perhaps should be rethought ... ! */ ! } ! ! return result; }

view thread (5+ messages)

Message-ID: <22945.1132766580@sss.pgh.pa.us>
Permalink:  ../22945.1132766580@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/22945.1132766580@sss.pgh.pa.us

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: tgl@sss.pgh.pa.us, kyle@actarg.com
  Subject: Re: unplanned sub-select error?
  In-Reply-To: <22945.1132766580@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox