| From: | "Joel Burton" <jburton(at)scw(dot)org> | 
|---|---|
| To: | Alfred Perlstein <bright(at)wintelcom(dot)net> | 
| Cc: | pgsql-hackers(at)postgresql(dot)org | 
| Subject: | Re: abstract: fix poor constant folding in 7.0.x, fixed in 7.1? | 
| Date: | 2000-12-08 02:52:04 | 
| Message-ID: | 3A2FDC54.10663.4CC338@localhost | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
> We had problem with a query taking way too long, basically
> we had this:
> 
> select
>   date_part('hour',t_date) as hour,
>   transval as val
> from st
> where
>   id = 500 
>   AND hit_date >= '2000-12-07 14:27:24-08'::timestamp - '24
>   hours'::timespan AND hit_date <= '2000-12-07 14:27:24-08'::timestamp
> ;
> 
> turning it into:
> 
> select
>   date_part('hour',t_date) as hour,
>   transval as val
> from st
> where
>   id = 500 
>   AND hit_date >= '2000-12-07 14:27:24-08'::timestamp
>   AND hit_date <= '2000-12-07 14:27:24-08'::timestamp
> ;
Perhaps I'm being daft, but why should hit_date be both >= and <= 
the exact same time and date? (or did you mean to subtract 24 
hours from your example and forgot?)
> (doing the -24 hours seperately)
> 
> The values of cost went from:
> (cost=0.00..127.24 rows=11 width=12)
> to:
> (cost=0.00..4.94 rows=1 width=12)
> 
> By simply assigning each sql "function" a taint value for constness
> one could easily reduce:
>   '2000-12-07 14:27:24-08'::timestamp - '24 hours'::timespan
> to:
>   '2000-12-07 14:27:24-08'::timestamp
You mean '2000-12-06', don't you?
> Each function should have a marker that explains whether when given a
> const input if the output might vary, that way subexpressions can be
> collapsed until an input becomes non-const.
There is "with (iscachable)".
Does
CREATE FUNCTION YESTERDAY(timestamp) RETURNS timestamp AS
'SELECT $1-''24 hours''::interval' WITH (iscachable)
work faster?
--
Joel Burton, Director of Information Systems -*- jburton(at)scw(dot)org
Support Center of Washington (www.scw.org)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alfred Perlstein | 2000-12-08 03:07:17 | Re: Patches with vacuum fixes available for 7.0.x | 
| Previous Message | Joel Burton | 2000-12-08 02:15:21 | Re: v7.1 beta 1 (ODBC driver?) |