From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
Cc: | Gavin Flower <GavinFlower(at)archidevsys(dot)co(dot)nz>, Seref Arikan <serefarikan(at)kurumsalteknoloji(dot)com>, PG-General Mailing List <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Does it make sense to break a large query into separate functions? |
Date: | 2013-05-09 15:15:35 |
Message-ID: | 20549.1368112535@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Merlin Moncure <mmoncure(at)gmail(dot)com> writes:
> right. note I think that (reduced invocation of immutable function) is
> the correct behavior. If I say something is immutable, rightly or
> wrongly, I am giving postgres a free hand to reduce function calls.
> But (wandering off topic here), But I'm wondering why the stable
> wrapper doesn't exhibit the same behavior.
The reason it won't inline such a wrapper is that if it expands foo(x)
to to_date(x, 'YYYY'), the latter expression will be considered stable,
not immutable; so for example any subsequent opportunity to
constant-fold it would not be taken.
It's conceivable that we could somehow decorate the parsetree so that
the function call node for to_date() would still be considered immutable
because it came out of inlining an immutable function. But that's not
how things work now, and I'm dubious that it'd be worth the trouble.
Really the right answer here is to label the wrapper with the same
mutability level as its contents.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Achilleas Mantzios | 2013-05-09 15:20:06 | Re: Storing small image files |
Previous Message | Nelson Green | 2013-05-09 15:04:18 | Storing small image files |