@@ -1222,6 +1222,63 @@ LINE 1: SELECT JSON_QUERY(js, '$' RETURNING int DEFAULT (SELECT 1) ...
1222
1222
^
1223
1223
DROP TABLE test_jsonb_mutability;
1224
1224
DROP FUNCTION ret_setint;
1225
+ CREATE DOMAIN jsonb_test_domain AS text CHECK (value <> 'foo');
1226
+ SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING jsonb_test_domain DEFAULT 'foo'::jsonb_test_domain ON ERROR);
1227
+ ERROR: value for domain jsonb_test_domain violates check constraint "jsonb_test_domain_check"
1228
+ SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING jsonb_test_domain DEFAULT 'foo1'::jsonb_test_domain ON ERROR);
1229
+ json_value
1230
+ ------------
1231
+ foo1
1232
+ (1 row)
1233
+
1234
+ SELECT JSON_VALUE(jsonb '{"d1": "H"}', '$.a2' RETURNING jsonb_test_domain DEFAULT '"foo1"'::jsonb::text ON ERROR);
1235
+ json_value
1236
+ ------------
1237
+ "foo1"
1238
+ (1 row)
1239
+
1240
+ SELECT JSON_VALUE(jsonb '{"d1": "foo"}', '$.a2' RETURNING jsonb_test_domain DEFAULT 'foo1'::jsonb_test_domain ON ERROR);
1241
+ json_value
1242
+ ------------
1243
+ foo1
1244
+ (1 row)
1245
+
1246
+ -- Check the cases where a coercion-related expression is masking an
1247
+ -- unsupported expressions
1248
+ -- CoerceViaIO
1249
+ SELECT JSON_QUERY('"a"', '$.a' RETURNING int DEFAULT (SELECT '"1"')::jsonb ON ERROR);
1250
+ ERROR: can only specify a constant, non-aggregate function, or operator expression for DEFAULT
1251
+ LINE 1: ...CT JSON_QUERY('"a"', '$.a' RETURNING int DEFAULT (SELECT '"...
1252
+ ^
1253
+ -- CoerceToDomain
1254
+ SELECT JSON_QUERY('"a"', '$.a' RETURNING jsonb_test_domain DEFAULT (select '"1"')::jsonb_test_domain ON ERROR);
1255
+ ERROR: can only specify a constant, non-aggregate function, or operator expression for DEFAULT
1256
+ LINE 1: ...('"a"', '$.a' RETURNING jsonb_test_domain DEFAULT (select '"...
1257
+ ^
1258
+ -- RelabelType
1259
+ SELECT JSON_QUERY('"a"', '$.a' RETURNING int DEFAULT (SELECT 1)::oid::int ON ERROR);
1260
+ ERROR: can only specify a constant, non-aggregate function, or operator expression for DEFAULT
1261
+ LINE 1: ...CT JSON_QUERY('"a"', '$.a' RETURNING int DEFAULT (SELECT 1)...
1262
+ ^
1263
+ -- ArrayCoerceExpr
1264
+ SELECT JSON_QUERY('"a"', '$.a' RETURNING int[] DEFAULT (SELECT '{1}')::oid[]::int[] ON ERROR);
1265
+ ERROR: can only specify a constant, non-aggregate function, or operator expression for DEFAULT
1266
+ LINE 1: ... JSON_QUERY('"a"', '$.a' RETURNING int[] DEFAULT (SELECT '{...
1267
+ ^
1268
+ -- CollateExpr
1269
+ SELECT JSON_QUERY('"a"', '$.a' RETURNING int[] DEFAULT (SELECT '{1}')::text COLLATE "C" ON ERROR);
1270
+ ERROR: can only specify a constant, non-aggregate function, or operator expression for DEFAULT
1271
+ LINE 1: ... JSON_QUERY('"a"', '$.a' RETURNING int[] DEFAULT (SELECT '{...
1272
+ ^
1273
+ -- ConvertRowtypeExpr
1274
+ CREATE TABLE someparent (a int);
1275
+ CREATE TABLE somechild () INHERITS (someparent);
1276
+ SELECT JSON_QUERY('"a"', '$.a' RETURNING someparent DEFAULT (SELECT '(1)')::somechild::someparent ON ERROR);
1277
+ ERROR: can only specify a constant, non-aggregate function, or operator expression for DEFAULT
1278
+ LINE 1: ..._QUERY('"a"', '$.a' RETURNING someparent DEFAULT (SELECT '(...
1279
+ ^
1280
+ DROP DOMAIN jsonb_test_domain;
1281
+ DROP TABLE someparent, somechild;
1225
1282
-- Extension: non-constant JSON path
1226
1283
SELECT JSON_EXISTS(jsonb '{"a": 123}', '$' || '.' || 'a');
1227
1284
json_exists
0 commit comments