pgsql: Pass collations to functions in FunctionCallInfoData, not FmgrIn - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Pass collations to functions in FunctionCallInfoData, not FmgrIn
Date
Msg-id E1Q9msd-0001gM-C6@gemulon.postgresql.org
Whole thread Raw
List 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(-)


pgsql-committers by date:

Previous
From: achernow@pgfoundry.org (User Achernow)
Date:
Subject: libpqtypes - libpqtypes: removed -no-undefined from ldflags in
Next
From: achernow@pgfoundry.org (User Achernow)
Date:
Subject: libpqtypes - libpqtypes: shortened lines that exceeded 78 characters