pgsql: Pass collations to functions in FunctionCallInfoData, not FmgrIn
От | Tom Lane |
---|---|
Тема | pgsql: Pass collations to functions in FunctionCallInfoData, not FmgrIn |
Дата | |
Msg-id | E1Q9msd-0001gM-C6@gemulon.postgresql.org обсуждение исходный текст |
Список | 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 по дате отправления: