aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/analyze.c11
-rw-r--r--src/backend/commands/trigger.c3
-rw-r--r--src/backend/commands/tsearchcmds.c7
3 files changed, 14 insertions, 7 deletions
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index dde301b89aa..0568a1bcf86 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -1930,8 +1930,6 @@ compute_minimal_stats(VacAttrStatsP stats,
track_cnt = 0;
fmgr_info(mystats->eqfunc, &f_cmpeq);
- /* We always use the default collation for statistics */
- fmgr_info_set_collation(DEFAULT_COLLATION_OID, &f_cmpeq);
for (i = 0; i < samplerows; i++)
{
@@ -1990,7 +1988,10 @@ compute_minimal_stats(VacAttrStatsP stats,
firstcount1 = track_cnt;
for (j = 0; j < track_cnt; j++)
{
- if (DatumGetBool(FunctionCall2(&f_cmpeq, value, track[j].value)))
+ /* We always use the default collation for statistics */
+ if (DatumGetBool(FunctionCall2Coll(&f_cmpeq,
+ DEFAULT_COLLATION_OID,
+ value, track[j].value)))
{
match = true;
break;
@@ -2253,8 +2254,6 @@ compute_scalar_stats(VacAttrStatsP stats,
SelectSortFunction(mystats->ltopr, false, &cmpFn, &cmpFlags);
fmgr_info(cmpFn, &f_cmpfn);
- /* We always use the default collation for statistics */
- fmgr_info_set_collation(DEFAULT_COLLATION_OID, &f_cmpfn);
/* Initial scan to find sortable values */
for (i = 0; i < samplerows; i++)
@@ -2729,7 +2728,9 @@ compare_scalars(const void *a, const void *b, void *arg)
CompareScalarsContext *cxt = (CompareScalarsContext *) arg;
int32 compare;
+ /* We always use the default collation for statistics */
compare = ApplySortFunction(cxt->cmpFn, cxt->cmpFlags,
+ DEFAULT_COLLATION_OID,
da, false, db, false);
if (compare != 0)
return compare;
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 6b1ade89903..ce36ea8be45 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -1822,7 +1822,8 @@ ExecCallTriggerFunc(TriggerData *trigdata,
/*
* Call the function, passing no arguments but setting a context.
*/
- InitFunctionCallInfoData(fcinfo, finfo, 0, (Node *) trigdata, NULL);
+ InitFunctionCallInfoData(fcinfo, finfo, 0,
+ InvalidOid, (Node *) trigdata, NULL);
pgstat_init_function_usage(&fcinfo, &fcusage);
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
index ce0086ffa17..d08c9bbbc5c 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -96,6 +96,11 @@ get_ts_parser_func(DefElem *defel, int attnum)
break;
case Anum_pg_ts_parser_prslextype:
nargs = 1;
+ /*
+ * Note: because the lextype method returns type internal, it must
+ * have an internal-type argument for security reasons. The
+ * argument is not actually used, but is just passed as a zero.
+ */
break;
default:
/* should not be here */
@@ -1947,7 +1952,7 @@ getTokenTypes(Oid prsId, List *tokennames)
elog(ERROR, "method lextype isn't defined for text search parser %u",
prsId);
- /* OidFunctionCall0 is absent */
+ /* lextype takes one dummy argument */
list = (LexDescr *) DatumGetPointer(OidFunctionCall1(prs->lextypeOid,
(Datum) 0));