Skip to content

Commit f50cbfc

Browse files
authored
test(sql): fix json array/map ordering in test to be deterministic (#9599)
1 parent 85ea9da commit f50cbfc

File tree

9 files changed

+125
-124
lines changed

9 files changed

+125
-124
lines changed

ci/schema/bigquery.sql

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,24 +56,25 @@ INSERT INTO {dataset}.numeric_table VALUES
5656
('2nd value', 0.000000002);
5757

5858
CREATE OR REPLACE TABLE {dataset}.json_t (
59+
rowid INT64,
5960
js JSON
6061
);
6162

6263
INSERT INTO {dataset}.json_t VALUES
63-
(JSON '{{"a": [1,2,3,4], "b": 1}}'),
64-
(JSON '{{"a":null,"b":2}}'),
65-
(JSON '{{"a":"foo", "c":null}}'),
66-
(JSON 'null'),
67-
(JSON '[42,47,55]'),
68-
(JSON '[]'),
69-
(JSON '"a"'),
70-
(JSON '""'),
71-
(JSON '"b"'),
72-
(NULL),
73-
(JSON 'true'),
74-
(JSON 'false'),
75-
(JSON '42'),
76-
(JSON '37.37');
64+
(1, JSON '{{"a": [1,2,3,4], "b": 1}}'),
65+
(2, JSON '{{"a":null,"b":2}}'),
66+
(3, JSON '{{"a":"foo", "c":null}}'),
67+
(4, JSON 'null'),
68+
(5, JSON '[42,47,55]'),
69+
(6, JSON '[]'),
70+
(7, JSON '"a"'),
71+
(8, JSON '""'),
72+
(9, JSON '"b"'),
73+
(10, NULL),
74+
(11, JSON 'true'),
75+
(12, JSON 'false'),
76+
(13, JSON '42'),
77+
(14, JSON '37.37');
7778

7879

7980
LOAD DATA OVERWRITE {dataset}.functional_alltypes (

ci/schema/duckdb.sql

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,23 @@ INSERT INTO struct VALUES
2929
(NULL),
3030
({'a': 3.0, 'b': 'orange', 'c': NULL});
3131

32-
CREATE OR REPLACE TABLE json_t (js JSON);
32+
CREATE OR REPLACE TABLE json_t (rowid BIGINT, js JSON);
3333

3434
INSERT INTO json_t VALUES
35-
('{"a": [1,2,3,4], "b": 1}'),
36-
('{"a":null,"b":2}'),
37-
('{"a":"foo", "c":null}'),
38-
('null'),
39-
('[42,47,55]'),
40-
('[]'),
41-
('"a"'),
42-
('""'),
43-
('"b"'),
44-
(NULL),
45-
('true'),
46-
('false'),
47-
('42'),
48-
('37.37');
35+
(1, '{"a": [1,2,3,4], "b": 1}'),
36+
(2, '{"a":null,"b":2}'),
37+
(3, '{"a":"foo", "c":null}'),
38+
(4, 'null'),
39+
(5, '[42,47,55]'),
40+
(6, '[]'),
41+
(7, '"a"'),
42+
(8, '""'),
43+
(9, '"b"'),
44+
(10, NULL),
45+
(11, 'true'),
46+
(12, 'false'),
47+
(13, '42'),
48+
(14, '37.37');
4949

5050
CREATE OR REPLACE TABLE win (g TEXT, x BIGINT NOT NULL, y BIGINT);
5151
INSERT INTO win VALUES

ci/schema/mysql.sql

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -100,23 +100,23 @@ CREATE TABLE functional_alltypes (
100100

101101
DROP TABLE IF EXISTS json_t CASCADE;
102102

103-
CREATE TABLE IF NOT EXISTS json_t (js JSON);
103+
CREATE TABLE IF NOT EXISTS json_t (rowid BIGINT, js JSON);
104104

105105
INSERT INTO json_t VALUES
106-
('{"a": [1,2,3,4], "b": 1}'),
107-
('{"a":null,"b":2}'),
108-
('{"a":"foo", "c":null}'),
109-
('null'),
110-
('[42,47,55]'),
111-
('[]'),
112-
('"a"'),
113-
('""'),
114-
('"b"'),
115-
(NULL),
116-
('true'),
117-
('false'),
118-
('42'),
119-
('37.37');
106+
(1, '{"a": [1,2,3,4], "b": 1}'),
107+
(2, '{"a":null,"b":2}'),
108+
(3, '{"a":"foo", "c":null}'),
109+
(4, 'null'),
110+
(5, '[42,47,55]'),
111+
(6, '[]'),
112+
(7, '"a"'),
113+
(8, '""'),
114+
(9, '"b"'),
115+
(10, NULL),
116+
(11, 'true'),
117+
(12, 'false'),
118+
(13, '42'),
119+
(14, '37.37');
120120

121121
DROP TABLE IF EXISTS win CASCADE;
122122

ci/schema/postgres.sql

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -250,23 +250,23 @@ CREATE INDEX IF NOT EXISTS idx_geo_geo_polygon ON geo USING GIST (geo_polygon);
250250

251251
DROP TABLE IF EXISTS json_t CASCADE;
252252

253-
CREATE TABLE IF NOT EXISTS json_t (js JSON);
253+
CREATE TABLE IF NOT EXISTS json_t (rowid BIGINT, js JSON);
254254

255255
INSERT INTO json_t VALUES
256-
('{"a": [1,2,3,4], "b": 1}'),
257-
('{"a":null,"b":2}'),
258-
('{"a":"foo", "c":null}'),
259-
('null'),
260-
('[42,47,55]'),
261-
('[]'),
262-
('"a"'),
263-
('""'),
264-
('"b"'),
265-
(NULL),
266-
('true'),
267-
('false'),
268-
('42'),
269-
('37.37');
256+
(1, '{"a": [1,2,3,4], "b": 1}'),
257+
(2, '{"a":null,"b":2}'),
258+
(3, '{"a":"foo", "c":null}'),
259+
(4, 'null'),
260+
(5, '[42,47,55]'),
261+
(6, '[]'),
262+
(7, '"a"'),
263+
(8, '""'),
264+
(9, '"b"'),
265+
(10, NULL),
266+
(11, 'true'),
267+
(12, 'false'),
268+
(13, '42'),
269+
(14, '37.37');
270270

271271
DROP TABLE IF EXISTS win CASCADE;
272272
CREATE TABLE win (g TEXT, x BIGINT NOT NULL, y BIGINT);

ci/schema/risingwave.sql

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -157,23 +157,23 @@ INSERT INTO "array_types" VALUES
157157

158158
DROP TABLE IF EXISTS "json_t" CASCADE;
159159

160-
CREATE TABLE IF NOT EXISTS "json_t" ("js" JSONB);
160+
CREATE TABLE IF NOT EXISTS "json_t" (rowid BIGINT, "js" JSONB);
161161

162162
INSERT INTO "json_t" VALUES
163-
('{"a": [1,2,3,4], "b": 1}'),
164-
('{"a":null,"b":2}'),
165-
('{"a":"foo", "c":null}'),
166-
('null'),
167-
('[42,47,55]'),
168-
('[]'),
169-
('"a"'),
170-
('""'),
171-
('"b"'),
172-
(NULL),
173-
('true'),
174-
('false'),
175-
('42'),
176-
('37.37');
163+
(1, '{"a": [1,2,3,4], "b": 1}'),
164+
(2, '{"a":null,"b":2}'),
165+
(3, '{"a":"foo", "c":null}'),
166+
(4, 'null'),
167+
(5, '[42,47,55]'),
168+
(6, '[]'),
169+
(7, '"a"'),
170+
(8, '""'),
171+
(9, '"b"'),
172+
(10, NULL),
173+
(11, 'true'),
174+
(12, 'false'),
175+
(13, '42'),
176+
(14, '37.37');
177177

178178
DROP TABLE IF EXISTS "win" CASCADE;
179179
CREATE TABLE "win" ("g" TEXT, "x" BIGINT, "y" BIGINT);

ci/schema/snowflake.sql

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -123,23 +123,23 @@ INSERT INTO "struct" ("abc")
123123
SELECT NULL UNION
124124
SELECT {'a': 3.0, 'b': 'orange', 'c': NULL};
125125

126-
CREATE OR REPLACE TABLE "json_t" ("js" VARIANT);
126+
CREATE OR REPLACE TABLE "json_t" ("rowid" BIGINT, "js" VARIANT);
127127

128-
INSERT INTO "json_t" ("js")
129-
SELECT parse_json('{"a": [1,2,3,4], "b": 1}') UNION
130-
SELECT parse_json('{"a":null,"b":2}') UNION
131-
SELECT parse_json('{"a":"foo", "c":null}') UNION
132-
SELECT parse_json('null') UNION
133-
SELECT parse_json('[42,47,55]') UNION
134-
SELECT parse_json('[]') UNION
135-
SELECT parse_json('"a"') UNION
136-
SELECT parse_json('""') UNION
137-
SELECT parse_json('"b"') UNION
138-
SELECT NULL UNION
139-
SELECT parse_json('true') UNION
140-
SELECT parse_json('false') UNION
141-
SELECT parse_json('42') UNION
142-
SELECT parse_json('37.37');
128+
INSERT INTO "json_t" ("rowid", "js")
129+
SELECT 1, parse_json('{"a": [1,2,3,4], "b": 1}') UNION
130+
SELECT 2, parse_json('{"a":null,"b":2}') UNION
131+
SELECT 3, parse_json('{"a":"foo", "c":null}') UNION
132+
SELECT 4, parse_json('null') UNION
133+
SELECT 5, parse_json('[42,47,55]') UNION
134+
SELECT 6, parse_json('[]') UNION
135+
SELECT 7, parse_json('"a"') UNION
136+
SELECT 8, parse_json('""') UNION
137+
SELECT 9, parse_json('"b"') UNION
138+
SELECT 10, NULL UNION
139+
SELECT 11, parse_json('true') UNION
140+
SELECT 12, parse_json('false') UNION
141+
SELECT 13, parse_json('42') UNION
142+
SELECT 14, parse_json('37.37');
143143

144144
CREATE OR REPLACE TABLE "win" ("g" TEXT, "x" BIGINT NOT NULL, "y" BIGINT);
145145
INSERT INTO "win" VALUES

ci/schema/sqlite.sql

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -101,23 +101,23 @@ CREATE TABLE diamonds (
101101

102102
DROP TABLE IF EXISTS json_t;
103103

104-
CREATE TABLE json_t (js JSON);
104+
CREATE TABLE json_t (rowid BIGINT, js JSON);
105105

106106
INSERT INTO json_t VALUES
107-
('{"a": [1,2,3,4], "b": 1}'),
108-
('{"a":null,"b":2}'),
109-
('{"a":"foo", "c":null}'),
110-
('null'),
111-
('[42,47,55]'),
112-
('[]'),
113-
('"a"'),
114-
('""'),
115-
('"b"'),
116-
(NULL),
117-
('true'),
118-
('false'),
119-
('42'),
120-
('37.37');
107+
(1, '{"a": [1,2,3,4], "b": 1}'),
108+
(2, '{"a":null,"b":2}'),
109+
(3, '{"a":"foo", "c":null}'),
110+
(4, 'null'),
111+
(5, '[42,47,55]'),
112+
(6, '[]'),
113+
(7, '"a"'),
114+
(8, '""'),
115+
(9, '"b"'),
116+
(10, NULL),
117+
(11, 'true'),
118+
(12, 'false'),
119+
(13, '42'),
120+
(14, '37.37');
121121

122122
DROP TABLE IF EXISTS win;
123123
CREATE TABLE win (g TEXT, x BIGINT NOT NULL, y BIGINT);

ci/schema/trino.sql

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -156,23 +156,23 @@ INSERT INTO struct
156156

157157
DROP TABLE IF EXISTS memory.default.json_t;
158158

159-
CREATE TABLE IF NOT EXISTS memory.default.json_t (js JSON);
159+
CREATE TABLE IF NOT EXISTS memory.default.json_t (rowid BIGINT, js JSON);
160160

161161
INSERT INTO memory.default.json_t VALUES
162-
(JSON '{"a": [1,2,3,4], "b": 1}'),
163-
(JSON '{"a":null,"b":2}'),
164-
(JSON '{"a":"foo", "c":null}'),
165-
(JSON 'null'),
166-
(JSON '[42,47,55]'),
167-
(JSON '[]'),
168-
(JSON '"a"'),
169-
(JSON '""'),
170-
(JSON '"b"'),
171-
(NULL),
172-
(JSON 'true'),
173-
(JSON 'false'),
174-
(JSON '42'),
175-
(JSON '37.37');
162+
(1, JSON '{"a": [1,2,3,4], "b": 1}'),
163+
(2, JSON '{"a":null,"b":2}'),
164+
(3, JSON '{"a":"foo", "c":null}'),
165+
(4, JSON 'null'),
166+
(5, JSON '[42,47,55]'),
167+
(6, JSON '[]'),
168+
(7, JSON '"a"'),
169+
(8, JSON '""'),
170+
(9, JSON '"b"'),
171+
(10, NULL),
172+
(11, JSON 'true'),
173+
(12, JSON 'false'),
174+
(13, JSON '42'),
175+
(14, JSON '37.37');
176176

177177
DROP TABLE IF EXISTS win;
178178
CREATE TABLE win (g VARCHAR, x BIGINT, y BIGINT);

ibis/backends/tests/test_json.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ def test_json_getitem_array(json_t):
6969
["pyspark", "flink"], reason="should work but doesn't deserialize JSON"
7070
)
7171
def test_json_map(backend, json_t):
72-
expr = json_t.js.map.name("res")
73-
result = expr.execute()
72+
expr = json_t.mutate("rowid", res=json_t.js.map).order_by("rowid")
73+
result = expr.execute().res
7474
expected = pd.Series(
7575
[
7676
{"a": [1, 2, 3, 4], "b": 1},
@@ -91,8 +91,8 @@ def test_json_map(backend, json_t):
9191
)
9292
@pytest.mark.notyet(["bigquery"], reason="doesn't allow null in arrays")
9393
def test_json_array(backend, json_t):
94-
expr = json_t.js.array.name("res")
95-
result = expr.execute()
94+
expr = json_t.mutate("rowid", res=json_t.js.array).order_by("rowid")
95+
result = expr.execute().res
9696
expected = pd.Series(
9797
[None, None, None, None, [42, 47, 55], []] + [None] * 8,
9898
name="res",

0 commit comments

Comments
 (0)