diff options
Diffstat (limited to 'src/test/regress/sql/jsonb.sql')
-rw-r--r-- | src/test/regress/sql/jsonb.sql | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/test/regress/sql/jsonb.sql b/src/test/regress/sql/jsonb.sql index 6dae715afd8..97bc2242a13 100644 --- a/src/test/regress/sql/jsonb.sql +++ b/src/test/regress/sql/jsonb.sql @@ -679,6 +679,43 @@ SELECT rec FROM jsonb_populate_record( '{"rec": {"a": "abc", "c": "01.02.2003", "x": 43.2}}' ) q; +-- Tests to check soft-error support for populate_record_field() + +-- populate_scalar() +create type jsb_char2 as (a char(2)); +select jsonb_populate_record_valid(NULL::jsb_char2, '{"a": "aaa"}'); +select * from jsonb_populate_record(NULL::jsb_char2, '{"a": "aaa"}') q; +select jsonb_populate_record_valid(NULL::jsb_char2, '{"a": "aa"}'); +select * from jsonb_populate_record(NULL::jsb_char2, '{"a": "aa"}') q; + +-- populate_array() +create type jsb_ia as (a int[]); +create type jsb_ia2 as (a int[][]); +select jsonb_populate_record_valid(NULL::jsb_ia, '{"a": 43.2}'); +select * from jsonb_populate_record(NULL::jsb_ia, '{"a": 43.2}') q; +select jsonb_populate_record_valid(NULL::jsb_ia, '{"a": [1, 2]}'); +select * from jsonb_populate_record(NULL::jsb_ia, '{"a": [1, 2]}') q; +select jsonb_populate_record_valid(NULL::jsb_ia2, '{"a": [[1], [2, 3]]}'); +select * from jsonb_populate_record(NULL::jsb_ia2, '{"a": [[1], [2, 3]]}') q; +select jsonb_populate_record_valid(NULL::jsb_ia2, '{"a": [[1, 0], [2, 3]]}'); +select * from jsonb_populate_record(NULL::jsb_ia2, '{"a": [[1, 0], [2, 3]]}') q; + +-- populate_domain() +create domain jsb_i_not_null as int not null; +create domain jsb_i_gt_1 as int check (value > 1); +create type jsb_i_not_null_rec as (a jsb_i_not_null); +create type jsb_i_gt_1_rec as (a jsb_i_gt_1); +select jsonb_populate_record_valid(NULL::jsb_i_not_null_rec, '{"a": null}'); +select * from jsonb_populate_record(NULL::jsb_i_not_null_rec, '{"a": null}') q; +select jsonb_populate_record_valid(NULL::jsb_i_not_null_rec, '{"a": 1}'); +select * from jsonb_populate_record(NULL::jsb_i_not_null_rec, '{"a": 1}') q; +select jsonb_populate_record_valid(NULL::jsb_i_gt_1_rec, '{"a": 1}'); +select * from jsonb_populate_record(NULL::jsb_i_gt_1_rec, '{"a": 1}') q; +select jsonb_populate_record_valid(NULL::jsb_i_gt_1_rec, '{"a": 2}'); +select * from jsonb_populate_record(NULL::jsb_i_gt_1_rec, '{"a": 2}') q; +drop type jsb_ia, jsb_ia2, jsb_char2, jsb_i_not_null_rec, jsb_i_gt_1_rec; +drop domain jsb_i_not_null, jsb_i_gt_1; + -- anonymous record type SELECT jsonb_populate_record(null::record, '{"x": 0, "y": 1}'); SELECT jsonb_populate_record(row(1,2), '{"f1": 0, "f2": 1}'); |