pgsql: Pass collations to functions in FunctionCallInfoData, not FmgrIn

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Pass collations to functions in FunctionCallInfoData, not FmgrIn
Date: 2011-04-12 23:20:19
Message-ID: E1Q9msd-0001gM-C6@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Pass collations to functions in FunctionCallInfoData, not FmgrInfo.

Since collation is effectively an argument, not a property of the function,
FmgrInfo is really the wrong place for it; and this becomes critical in
cases where a cached FmgrInfo is used for varying purposes that might need
different collation settings. Fix by passing it in FunctionCallInfoData
instead. In particular this allows a clean fix for bug #5970 (record_cmp
not working). This requires touching a bit more code than the original
method, but nobody ever thought that collations would not be an invasive
patch...

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/d64713df7e5996ab3ab337b5e0901cf2c53773f9

Modified Files
--------------
contrib/btree_gin/btree_gin.c | 2 +-
contrib/btree_gist/btree_text.c | 30 +++++-
src/backend/access/common/reloptions.c | 2 +-
src/backend/access/common/scankey.c | 6 +-
src/backend/access/gin/ginget.c | 33 ++++---
src/backend/access/gin/ginutil.c | 52 +++++-----
src/backend/access/gist/gistget.c | 24 +++--
src/backend/access/gist/gistscan.c | 10 +--
src/backend/access/hash/hashutil.c | 3 +-
src/backend/access/index/indexam.c | 1 -
src/backend/access/nbtree/nbtinsert.c | 7 +-
src/backend/access/nbtree/nbtsearch.c | 11 +-
src/backend/access/nbtree/nbtsort.c | 8 +-
src/backend/access/nbtree/nbtutils.c | 40 +++++---
src/backend/commands/analyze.c | 11 +-
src/backend/commands/trigger.c | 3 +-
src/backend/commands/tsearchcmds.c | 7 +-
src/backend/executor/execGrouping.c | 4 +
src/backend/executor/execQual.c | 25 +++--
src/backend/executor/execUtils.c | 7 +-
src/backend/executor/functions.c | 8 +-
src/backend/executor/nodeAgg.c | 13 ++-
src/backend/executor/nodeIndexscan.c | 2 +-
src/backend/executor/nodeMergeAppend.c | 5 +-
src/backend/executor/nodeMergejoin.c | 9 +-
src/backend/executor/nodeSubplan.c | 4 -
src/backend/executor/nodeWindowAgg.c | 10 ++-
src/backend/optimizer/path/indxpath.c | 3 +-
src/backend/tcop/fastpath.c | 6 +-
src/backend/tsearch/wparser.c | 2 +-
src/backend/utils/adt/arrayfuncs.c | 26 +++--
src/backend/utils/adt/int.c | 3 +-
src/backend/utils/adt/like.c | 6 +-
src/backend/utils/adt/oid.c | 3 +-
src/backend/utils/adt/ri_triggers.c | 5 +-
src/backend/utils/adt/rowtypes.c | 22 ++++-
src/backend/utils/adt/selfuncs.c | 114 +++++++++++----------
src/backend/utils/cache/catcache.c | 2 +-
src/backend/utils/fmgr/README | 21 ++--
src/backend/utils/fmgr/fmgr.c | 172 +++++++++++---------------------
src/backend/utils/sort/tuplesort.c | 38 +++++---
src/include/access/gin_private.h | 2 +
src/include/access/skey.h | 17 ++--
src/include/access/valid.h | 5 +-
src/include/fmgr.h | 171 +++++++++++++++++++++++--------
src/include/nodes/execnodes.h | 1 +
src/include/utils/selfuncs.h | 3 +-
src/include/utils/tuplesort.h | 7 +-
src/pl/plpgsql/src/pl_comp.c | 4 +-
49 files changed, 552 insertions(+), 418 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message User Achernow 2011-04-13 01:32:49 libpqtypes - libpqtypes: shortened lines that exceeded 78 characters
Previous Message User Achernow 2011-04-12 14:05:51 libpqtypes - libpqtypes: removed -no-undefined from ldflags in