@@ -5014,3 +5014,133 @@ select '12345.0000000000000000000000000000000000000000000005'::jsonb::int8;
5014
5014
12345
5015
5015
(1 row)
5016
5016
5017
+ -- test mapping of jsonb to SQL/JSON JSON type
5018
+ select json(' { "aa": 1, "b" : 2 }');
5019
+ json
5020
+ -----------------------
5021
+ { "aa": 1, "b" : 2 }
5022
+ (1 row)
5023
+
5024
+ select json ' { "aa": 1, "b" : 2 }';
5025
+ json
5026
+ -----------------------
5027
+ { "aa": 1, "b" : 2 }
5028
+ (1 row)
5029
+
5030
+ select json text ' { "aa": 1, "b" : 2 }';
5031
+ json
5032
+ -----------------------
5033
+ { "aa": 1, "b" : 2 }
5034
+ (1 row)
5035
+
5036
+ create table test_json_as_json (js json, jb jsonb);
5037
+ \d test_json_as_json
5038
+ Table "public.test_json_as_json"
5039
+ Column | Type | Collation | Nullable | Default
5040
+ --------+-------+-----------+----------+---------
5041
+ js | json | | |
5042
+ jb | jsonb | | |
5043
+
5044
+ set sql_json = jsonb;
5045
+ select json(' { "aa": 1, "b" : 2 }');
5046
+ jsonb
5047
+ -------------------
5048
+ {"b": 2, "aa": 1}
5049
+ (1 row)
5050
+
5051
+ select json ' { "aa": 1, "b" : 2 }';
5052
+ jsonb
5053
+ -------------------
5054
+ {"b": 2, "aa": 1}
5055
+ (1 row)
5056
+
5057
+ select json text ' { "aa": 1, "b" : 2 }';
5058
+ json
5059
+ -----------------------
5060
+ { "aa": 1, "b" : 2 }
5061
+ (1 row)
5062
+
5063
+ \d test_json_as_json
5064
+ Table "public.test_json_as_json"
5065
+ Column | Type | Collation | Nullable | Default
5066
+ --------+-----------+-----------+----------+---------
5067
+ js | json text | | |
5068
+ jb | json | | |
5069
+
5070
+ create table test_json_as_jsonb (js json, jb jsonb, jt json text);
5071
+ \d test_json_as_jsonb
5072
+ Table "public.test_json_as_jsonb"
5073
+ Column | Type | Collation | Nullable | Default
5074
+ --------+-----------+-----------+----------+---------
5075
+ js | json | | |
5076
+ jb | json | | |
5077
+ jt | json text | | |
5078
+
5079
+ insert into test_json_as_jsonb values ('{ "a" : 1 }', '{ "a" : 1 }', '{ "a" : 1 }');
5080
+ select * from test_json_as_jsonb;
5081
+ js | jb | jt
5082
+ ----------+----------+-------------
5083
+ {"a": 1} | {"a": 1} | { "a" : 1 }
5084
+ (1 row)
5085
+
5086
+ select jsonb_object_field(js, 'a') from test_json_as_jsonb;
5087
+ jsonb_object_field
5088
+ --------------------
5089
+ 1
5090
+ (1 row)
5091
+
5092
+ select jsonb_object_field(jb, 'a') from test_json_as_jsonb;
5093
+ jsonb_object_field
5094
+ --------------------
5095
+ 1
5096
+ (1 row)
5097
+
5098
+ select jsonb_object_field(jt, 'a') from test_json_as_jsonb;
5099
+ ERROR: function jsonb_object_field(json text, unknown) does not exist
5100
+ LINE 1: select jsonb_object_field(jt, 'a') from test_json_as_jsonb;
5101
+ ^
5102
+ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
5103
+ select json_object_field(jt, 'a') from test_json_as_jsonb;
5104
+ json_object_field
5105
+ -------------------
5106
+ 1
5107
+ (1 row)
5108
+
5109
+ set sql_json = json;
5110
+ \d test_json_as_jsonb
5111
+ Table "public.test_json_as_jsonb"
5112
+ Column | Type | Collation | Nullable | Default
5113
+ --------+-------+-----------+----------+---------
5114
+ js | jsonb | | |
5115
+ jb | jsonb | | |
5116
+ jt | json | | |
5117
+
5118
+ select * from test_json_as_jsonb;
5119
+ js | jb | jt
5120
+ ----------+----------+-------------
5121
+ {"a": 1} | {"a": 1} | { "a" : 1 }
5122
+ (1 row)
5123
+
5124
+ select jsonb_object_field(js, 'a') from test_json_as_jsonb;
5125
+ jsonb_object_field
5126
+ --------------------
5127
+ 1
5128
+ (1 row)
5129
+
5130
+ select jsonb_object_field(jb, 'a') from test_json_as_jsonb;
5131
+ jsonb_object_field
5132
+ --------------------
5133
+ 1
5134
+ (1 row)
5135
+
5136
+ select jsonb_object_field(jt, 'a') from test_json_as_jsonb;
5137
+ ERROR: function jsonb_object_field(json, unknown) does not exist
5138
+ LINE 1: select jsonb_object_field(jt, 'a') from test_json_as_jsonb;
5139
+ ^
5140
+ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
5141
+ select json_object_field(jt, 'a') from test_json_as_jsonb;
5142
+ json_object_field
5143
+ -------------------
5144
+ 1
5145
+ (1 row)
5146
+
0 commit comments