aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/varlena.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/varlena.c')
-rw-r--r--src/backend/utils/adt/varlena.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index cb07a066ef1..aab4897f618 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -3834,16 +3834,15 @@ concat_internal(const char *sepstr, int argidx,
return NULL;
/*
- * Non-null argument had better be an array
- *
- * Correct values are ensured by parser check, but this function
- * can be called directly, bypassing the parser, so we should do
- * some minimal check too - this form of call requires correctly set
- * expr argtype in flinfo.
+ * Non-null argument had better be an array. We assume that any call
+ * context that could let get_fn_expr_variadic return true will have
+ * checked that a VARIADIC-labeled parameter actually is an array. So
+ * it should be okay to just Assert that it's an array rather than
+ * doing a full-fledged error check.
*/
- Assert(OidIsValid(get_fn_expr_argtype(fcinfo->flinfo, argidx)));
- Assert(OidIsValid(get_element_type(get_fn_expr_argtype(fcinfo->flinfo, argidx))));
+ Assert(OidIsValid(get_base_element_type(get_fn_expr_argtype(fcinfo->flinfo, argidx))));
+ /* OK, safe to fetch the array value */
arr = PG_GETARG_ARRAYTYPE_P(argidx);
/*
@@ -4063,16 +4062,15 @@ text_format(PG_FUNCTION_ARGS)
else
{
/*
- * Non-null argument had better be an array
- *
- * Correct values are ensured by parser check, but this function
- * can be called directly, bypassing the parser, so we should do
- * some minimal check too - this form of call requires correctly set
- * expr argtype in flinfo.
+ * Non-null argument had better be an array. We assume that any
+ * call context that could let get_fn_expr_variadic return true
+ * will have checked that a VARIADIC-labeled parameter actually is
+ * an array. So it should be okay to just Assert that it's an
+ * array rather than doing a full-fledged error check.
*/
- Assert(OidIsValid(get_fn_expr_argtype(fcinfo->flinfo, 1)));
- Assert(OidIsValid(get_element_type(get_fn_expr_argtype(fcinfo->flinfo, 1))));
+ Assert(OidIsValid(get_base_element_type(get_fn_expr_argtype(fcinfo->flinfo, 1))));
+ /* OK, safe to fetch the array value */
arr = PG_GETARG_ARRAYTYPE_P(1);
/* Get info about array element type */