analyzeOid = findTypeAnalyzeFunction(analyzeName, typoid);
/*
- * Likewise look up the subscripting procedure if any. If it is not
+ * Likewise look up the subscripting function if any. If it is not
* specified, but a typelem is specified, allow that if
* raw_array_subscript_handler can be used. (This is for backwards
* compatibility; maybe someday we should throw an error instead.)
else
ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("element type cannot be specified without a valid subscripting procedure")));
+ errmsg("element type cannot be specified without a subscripting function")));
}
/*
analyzeProcedure = baseType->typanalyze;
/*
- * Domains don't need a subscript procedure, since they are not
+ * Domains don't need a subscript function, since they are not
* subscriptable on their own. If the base type is subscriptable, the
* parser will reduce the type to the base type before subscripting.
*/
* connection continue, either.
*/
ereport(FATAL,
- (errmsg("connection was re-authenticated"),
- errdetail_log("previous ID: \"%s\"; new ID: \"%s\"",
+ (errmsg("authentication identifier set more than once"),
+ errdetail_log("previous identifier: \"%s\"; new identifier: \"%s\"",
port->authn_id, id)));
}
if (membuf == NULL)
ereport(ERROR,
(errcode(ERRCODE_OUT_OF_MEMORY),
- errmsg("failed to create BIO")));
+ errmsg("could not create BIO")));
(void) BIO_set_close(membuf, BIO_CLOSE);
for (i = 0; i < count; i++)
if (targetType != UNKNOWNOID)
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("subscript type is not supported"),
- errhint("Jsonb subscript must be coerced "
- "only to one type, integer or text."),
+ errmsg("subscript type %s is not supported", format_type_be(subExprType)),
+ errhint("jsonb subscript must be coercible to only one type, integer or text."),
parser_errposition(pstate, exprLocation(subExpr))));
targetType = targets[i];
if (targetType == UNKNOWNOID)
ereport(ERROR,
(errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("subscript type is not supported"),
- errhint("Jsonb subscript must be coerced to either integer or text"),
+ errmsg("subscript type %s is not supported", format_type_be(subExprType)),
+ errhint("jsonb subscript must be coercible to either integer or text."),
parser_errposition(pstate, exprLocation(subExpr))));
}
else
if (PG_ARGISNULL(0))
elog(ERROR,
- "multirange values cannot contain NULL members");
+ "multirange values cannot contain null members");
rangeArray = PG_GETARG_ARRAYTYPE_P(0);
rngtypid = ARR_ELEMTYPE(rangeArray);
if (rngtypid != rangetyp->type_id)
- ereport(ERROR,
- (errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("type %u does not match constructor type", rngtypid)));
+ elog(ERROR, "type %u does not match constructor type", rngtypid);
/*
* Be careful: we can still be called with zero ranges, like this:
if (nulls[i])
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
- errmsg("multirange values cannot contain NULL members")));
+ errmsg("multirange values cannot contain null members")));
/* make_multirange will do its own copy */
ranges[i] = DatumGetRangeTypeP(elements[i]);
if (PG_ARGISNULL(0))
elog(ERROR,
- "multirange values cannot contain NULL members");
+ "multirange values cannot contain null members");
range = PG_GETARG_RANGE_P(0);
/* Make sure the range type matches. */
rngtypid = RangeTypeGetOid(range);
if (rngtypid != rangetyp->type_id)
- ereport(ERROR,
- (errcode(ERRCODE_DATATYPE_MISMATCH),
- errmsg("type %u does not match constructor type", rngtypid)));
+ elog(ERROR, "type %u does not match constructor type", rngtypid);
PG_RETURN_MULTIRANGE_P(make_multirange(mltrngtypid, rangetyp, 1, &range));
}
(1 row)
select ('[1, "2", null]'::jsonb)[1.0];
-ERROR: subscript type is not supported
+ERROR: subscript type numeric is not supported
LINE 1: select ('[1, "2", null]'::jsonb)[1.0];
^
-HINT: Jsonb subscript must be coerced to either integer or text
+HINT: jsonb subscript must be coercible to either integer or text.
select ('[1, "2", null]'::jsonb)[2];
jsonb
-------