diff options
author | Amit Langote <amitlan@postgresql.org> | 2024-07-26 16:08:13 +0900 |
---|---|---|
committer | Amit Langote <amitlan@postgresql.org> | 2024-07-26 16:36:10 +0900 |
commit | 3c3ccd4ca80136939abf97a7c19b67486dfda3af (patch) | |
tree | f904c2d24c6870deec2d88fbf1f411972ed04bfa /src/test/regress/sql/sqljson_queryfuncs.sql | |
parent | d1dc4ae5608d9c0e83d5b5d32de238a7ac3d9a1a (diff) | |
download | postgresql-3c3ccd4ca80136939abf97a7c19b67486dfda3af.tar.gz postgresql-3c3ccd4ca80136939abf97a7c19b67486dfda3af.zip |
SQL/JSON: Respect OMIT QUOTES when RETURNING domains over jsonb
populate_domain() didn't take into account the omit_quotes flag passed
down to json_populate_type() by ExecEvalJsonCoercion() and that led
to incorrect behavior when the RETURNING type is a domain over
jsonb. Fix that by passing the flag by adding a new function
parameter to populate_domain().
Reported-by: Jian He <jian.universality@gmail.com>
Discussion: https://postgr.es/m/CACJufxEo4sUjKCYtda0_qt9tazqqKPmF1cqhW9KBOUeJFqQd2g@mail.gmail.com
Backpatch-through: 17
Diffstat (limited to 'src/test/regress/sql/sqljson_queryfuncs.sql')
-rw-r--r-- | src/test/regress/sql/sqljson_queryfuncs.sql | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/test/regress/sql/sqljson_queryfuncs.sql b/src/test/regress/sql/sqljson_queryfuncs.sql index be5593b3324..e9005d3d4eb 100644 --- a/src/test/regress/sql/sqljson_queryfuncs.sql +++ b/src/test/regress/sql/sqljson_queryfuncs.sql @@ -214,6 +214,11 @@ SELECT JSON_QUERY(jsonb'{"rec": "{1,2,3}"}', '$.rec' returning int[] keep quotes SELECT JSON_QUERY(jsonb'{"rec": "[1,2]"}', '$.rec' returning int4range omit quotes); SELECT JSON_QUERY(jsonb'{"rec": "[1,2]"}', '$.rec' returning int4range keep quotes); SELECT JSON_QUERY(jsonb'{"rec": "[1,2]"}', '$.rec' returning int4range keep quotes error on error); +CREATE DOMAIN qf_char_domain AS char(1); +CREATE DOMAIN qf_jsonb_domain AS jsonb; +SELECT JSON_QUERY(jsonb '"1"', '$' RETURNING qf_char_domain OMIT QUOTES ERROR ON ERROR); +SELECT JSON_QUERY(jsonb '"1"', '$' RETURNING qf_jsonb_domain OMIT QUOTES ERROR ON ERROR); +DROP DOMAIN qf_char_domain, qf_jsonb_domain; SELECT JSON_QUERY(jsonb '[]', '$[*]'); SELECT JSON_QUERY(jsonb '[]', '$[*]' NULL ON EMPTY); |