From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql(at)mohawksoft(dot)com |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Function call order dependency |
Date: | 2008-09-03 17:13:33 |
Message-ID: | 27126.1220462013@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
pgsql(at)mohawksoft(dot)com writes:
> I need to perform an operation during query time and there are multiple
> results based on the outcome. For instance: (Lets try this)
> select myrank(t1.column1, t2.column2, 1) as rank,
> myscore(t1.column1,t2.column2, 1) as score from t1, t2 where
> myrank(t1.column1,t2.column2) > 10 order by myscore(t1.column1,
> t2.column2, 1) desc;
Why not have one function that produces multiple output columns?
> Now, can I assume that in the above select statement, that each
> permutation of t1.column1 and t2.column2 will only be evaluated once and
> that myscore(...) and myrank(...) will all be called before the next
> permutation is evaluated?
You can assume that functions in the SELECT target list are evaluated
exactly once per output row (at least as long as no
SRFs-in-the-targetlist are involved). I don't think it'd be wise to
assume anything about order of evaluation, though it's probably true
that it's left-to-right at the moment.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Chernow | 2008-09-03 17:14:03 | Re: libpq object hooks (libpq events) |
Previous Message | Andrew Sullivan | 2008-09-03 17:11:24 | Re: [PATCH] Cleanup of GUC units code |