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

Re: BUG #6662: Database do not push condition to subquery, test case for bug 6658

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: maxim(dot)boguk(at)gmail(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #6662: Database do not push condition to subquery, test case for bug 6658
Date: 2012-05-23 01:46:04
Message-ID: 18199.1337737564@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-bugs
maxim(dot)boguk(at)gmail(dot)com writes:
> I managed create simple self-contained test case for 6658.

This works fine in HEAD.  The reason it doesn't work fine in 9.1 (or
9.0) is that in those branches, anytextcat() and textanycat() are marked
volatile, for reasons that were good at the time but were superseded by
later policy changes.  So you have a subselect containing a volatile
output expression, which prevents flattening of the subselect, so the
restriction clause doesn't get pushed down to where it could be used
with the index.  For some history see
http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=c82d931dd180965a9a0c06acc764404f91de8170
http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=aab353a60b95aadc00f81da0c6d99bde696c4b75
http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=3db6524fe63f0598dcb2b307bb422bc126f2b15d

If this is a big problem for you, you could safely adjust the
provolatile marking of those functions by hand in 9.1.  It might be
better just to include an explicit cast to text, though, instead of
relying on the assumption that the system will let you concat an integer
directly to a text string.

			regards, tom lane

In response to

Responses

pgsql-bugs by date

Next:From: Maxim BogukDate: 2012-05-23 01:53:37
Subject: Re: BUG #6662: Database do not push condition to subquery, test case for bug 6658
Previous:From: maxim.bogukDate: 2012-05-23 01:13:04
Subject: BUG #6662: Database do not push condition to subquery,test case for bug 6658

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