Re: Aggregate transition state merging vs. hypothetical set functions
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: David Rowley <david.rowley@2ndquadrant.com>, pgsql-hackers@postgresql.org
Date: 2017-10-13T23:01:18Z
Lists: pgsql-hackers
Attachments
- mark-aggregate-finalfn-safety-explicitly.patch (text/x-diff) patch
I wrote: > Moving on to the exact color of the bikeshed: it seems like the right > way to present this to users of CREATE AGGREGATE is in terms of "does > the final function modify the transition state?". So maybe the values > could be spelled > SMODIFY = READ_ONLY ffunc never touches state, ok as window agg > SMODIFY = SHARABLE ffunc does some one-time change like sorting, > so state merging is OK but not window agg > SMODIFY = READ_WRITE ffunc trashes state, can't do merging either > I'm not set on these names by any means; anyone have a better idea? After contemplating the existing CREATE AGGREGATE parameters, particularly [M]FINALFUNC_EXTRA, it seemed to me that better nomenclature is [M]FINALFUNC_MODIFY = READ_ONLY [M]FINALFUNC_MODIFY = STOP_UPDATES [M]FINALFUNC_MODIFY = READ_WRITE where "stop updates" is intended to imply "you can't call the transfn anymore after the first finalfn call". I'm still not that much in love with that terminology, but don't have a better idea now. Attached is a WIP patch; I believe it's code-complete but the SGML docs are lacking. Barring objections I'll finish up the docs and push this. regards, tom lane
Commits
-
Improve spelling of new FINALFUNC_MODIFY aggregate attribute.
- f755a152d4e3 11.0 landed
-
Explicitly track whether aggregate final functions modify transition state.
- 4de2d4fba38f 11.0 landed