Re: [HACKERS] Transition functions for SUM(::int2), SUM(::int4, SUM(::int8])
Caleb Welton [EMAIL PROTECTED] writes: Forgive me if I'm being dense, but could you explain why int4_sum(bigint,int) must not be strict, but int4_avg_accum(bytea, int) can be strict? The former is used with a NULL initial value, the latter isn't. Read the fine print in the CREATE AGGREGATE man page about behavior with strict transition functions. regards, tom lane ---(end of broadcast)--- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq
Re: [HACKERS] Transition functions for SUM(::int2), SUM(::int4, SUM(::int8])
Thanks Tom, Forgive me if I'm being dense, but could you explain why int4_sum(bigint,int) must not be strict, but int4_avg_accum(bytea, int) can be strict? It seems that both of them have transition datatypes that are different from the input. -Caleb On 1/28/08 7:31 PM, Tom Lane [EMAIL PROTECTED] wrote: Caleb Welton [EMAIL PROTECTED] writes: Is there any reason that int2_sum, int4_sum, and int8_sum are not marked as being strict? They wouldn't work otherwise, because the transition datatypes aren't the same as the inputs. regards, tom lane ---(end of broadcast)--- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq
[HACKERS] Transition functions for SUM(::int2), SUM(::int4, SUM(::int8])
Is there any reason that int2_sum, int4_sum, and int8_sum are not marked as being strict? All the other transition functions for sum, and every other built in aggregation function is marked as strict, as demonstrated with: select x.proname, t.proname, t.proisstrict from ((pg_aggregate a left join pg_proc x on (a.aggfnoid = x.oid)) left join pg_proc t on (a.aggtransfn = t.oid)) where not t.proisstrict; proname | proname | proisstrict -+--+- sum | int2_sum | f sum | int4_sum | f sum | int8_sum | f select x.proname, t.proname, t.proisstrict from ((pg_aggregate a left join pg_proc x on (a.aggfnoid = x.oid)) left join pg_proc t on (a.aggtransfn = t.oid)) where x.proname = 'sum'; proname | proname | proisstrict -+-+- sum | int8_sum| f sum | int4_sum| f sum | int2_sum| f sum | float4pl| t sum | float8pl| t sum | cash_pl | t sum | interval_pl | t sum | numeric_add | t (8 rows) Thanks, Caleb ---(end of broadcast)--- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq
Re: [HACKERS] Transition functions for SUM(::int2), SUM(::int4, SUM(::int8])
Caleb Welton [EMAIL PROTECTED] writes: Is there any reason that int2_sum, int4_sum, and int8_sum are not marked as being strict? They wouldn't work otherwise, because the transition datatypes aren't the same as the inputs. regards, tom lane ---(end of broadcast)--- TIP 5: don't forget to increase your free space map settings