v0-0001-Add-a-reproducible-test-case-for-verify_gin-error.patch.no_apply

application/octet-stream

Filename: v0-0001-Add-a-reproducible-test-case-for-verify_gin-error.patch.no_apply
Type: application/octet-stream
Part: 0
Message: Re: Amcheck verification of GiST and GIN
From d2ec9b8f77bf40ed258f5d12bc58877b6f1109ef Mon Sep 17 00:00:00 2001
From: Mark Dilger <mark.dilger@enterprisedb.com>
Date: Fri, 21 Feb 2025 14:45:12 -0800
Subject: [PATCH v0] Add a reproducible test case for verify_gin errors

The test t/006_gin_concurrency.pl works fairly well at triggering
the bug, at least for me, but it is hard to step through a TAP test.
Convert the statements in the log output of a failed TAP run into a
regression test, and find a setseed() value that makes it
deterministically fail, and add that test.

If you use this test and it does not fail, perhaps that is due to
architectural differences between your system and my laptop.  I
found that I could find a seed by guess-and-check within no more
than 10 attempts, so the reader can probably do likewise.
---
 contrib/amcheck/Makefile                |     2 +-
 contrib/amcheck/expected/stress_gin.out | 12925 ++++++++++++++++++++++
 contrib/amcheck/sql/stress_gin.sql      | 11432 +++++++++++++++++++
 3 files changed, 24358 insertions(+), 1 deletion(-)
 create mode 100644 contrib/amcheck/expected/stress_gin.out
 create mode 100644 contrib/amcheck/sql/stress_gin.sql

diff --git a/contrib/amcheck/Makefile b/contrib/amcheck/Makefile
index 1b7a63cbaa4..66686f522ff 100644
--- a/contrib/amcheck/Makefile
+++ b/contrib/amcheck/Makefile
@@ -13,7 +13,7 @@ DATA = amcheck--1.2--1.3.sql amcheck--1.1--1.2.sql amcheck--1.0--1.1.sql amcheck
 		amcheck--1.3--1.4.sql amcheck--1.4--1.5.sql
 PGFILEDESC = "amcheck - function for verifying relation integrity"
 
-REGRESS = check check_btree check_gin check_heap
+REGRESS = check check_btree check_gin check_heap stress_gin
 
 EXTRA_INSTALL = contrib/pg_walinspect
 TAP_TESTS = 1
diff --git a/contrib/amcheck/expected/stress_gin.out b/contrib/amcheck/expected/stress_gin.out
new file mode 100644
index 00000000000..e2ace3cbf13
--- /dev/null
+++ b/contrib/amcheck/expected/stress_gin.out
@@ -0,0 +1,12925 @@
+SELECT setseed(0.2);
+ setseed 
+---------
+ 
+(1 row)
+
+CREATE TABLE tbl(i integer[], j jsonb, k jsonb);
+CREATE INDEX ginidx ON tbl USING gin(i, j, k);
+CREATE TABLE jsondata (i serial, j jsonb);
+INSERT INTO jsondata (j) VALUES
+	('1'),
+	('91'),
+	('[5]'),
+	('true'),
+	('"zxI"'),
+	('[1, 7]'),
+	('["", 4]'),
+	('"utDFBz"'),
+	('[[9], ""]'),
+	('"eCvxKPML"'),
+	('["1VMQNQM"]'),
+	('{"": "562c"}'),
+	('[58, 8, null]'),
+	('{"": {"": 62}}'),
+	('["", 6, 19, ""]'),
+	('{"ddfWTQ": true}'),
+	('["", 734.2, 9, 5]'),
+	('"GMV27mjtuuqmlltw"'),
+	('{"dabe": -5, "": 6}'),
+	('"hgihykirQGIYTcCA30"'),
+	('[9, {"Utrn": -6}, ""]'),
+	('"BJTZUMST1_WWEgyqgka_"'),
+	('["", -4, "", [-2], -47]'),
+	('{"": [3], "": {"": "y"}}'),
+	('{"myuijj": "YUWIUZXXLGS"}'),
+	('{"3": false, "C": "1sHTX"}'),
+	('"ZGUORVDE_ACF1QXJ_hipgwrks"'),
+	('{"072": [3, -4], "oh": "eL"}'),
+	('[{"de": 9, "JWHPMRZJW": [0]}]'),
+	('"EACJUZEBAFFBEE6706SZLWVGO635"'),
+	('["P", {"TZW": [""]}, {"": [0]}]'),
+	('{"": -6, "YMb": -22, "__": [""]}'),
+	('{"659": [8], "bfc": [0], "V": ""}'),
+	('{"8776": "1tryl", "Q": 2, "": 4.6}'),
+	('[[1], "", 9, 0, [1, 0], -1, 0, "C"]'),
+	('"635321pnpjlfFzhGTIYP9265iA_19D8260"'),
+	('"klmxsoCFDtzxrhotsqlnmvmzlcbdde34twj"'),
+	('"GZSXSZVS19ecbe_ZJJED0379c1j9_GSU9167"'),
+	('{"F18s": {"": -84194}, "ececab2": [""]}'),
+	('["", {"SVAvgg": "Q"}, 1, 9, "gypy", [1]]'),
+	('[[""], {"": 5}, "GVZGGVGSWM", 2, ["", 8]]'),
+	('{"V": 8, "TPNL": [826, null], "4": -9.729}'),
+	('{"HTJP_DAptxn6": 9, "": "r", "hji4124": ""}'),
+	('[1, ["9", 5, 6, ""], {"": "", "": "efb"}, 7]'),
+	('{"": 6, "1251e_cajrgkyzuxBEDM017444EFD": 548}'),
+	('{"853": -60, "TGLUG_jxmrggv": null, "pjx": ""}'),
+	('[0, "wsgnnvCfJVV_KOMLVXOUIS9FIQLPXXBbbaohjrpj"]'),
+	('"nizvkl36908OLW22ecbdeEBMHMiCEEACcikwkjpmu30X_m"'),
+	('{"bD24eeVZWY": 1, "Bt": 9, "": 6052, "FT": ["h"]}'),
+	('"CDBnouyzlAMSHJCtguxxizpzgkNYfaNLURVITNLYVPSNLYNy"'),
+	('{"d": [[4, "N"], null, 6, true], "1PKV": 6, "9": 6}'),
+	('[-7326, [83, 55], -63, [0, {"": 1}], {"ri0": false}]'),
+	('{"": 117.38, "FCkx3608szztpvjolomzvlyrshyvrgz": -4.2}'),
+	('["", 8, {"WXHNG": {"6": 4}}, [null], 7, 2, "", 299, 6]'),
+	('[[-992.2, "TPm", "", "cedeff79BD8", "t", [1]], 0, [-7]]'),
+	('[9, 34, ["LONuyiYGQZ"], [7, 88], ["c"], 1, 6, "", [[2]]]'),
+	('[20, 5, null, "eLHTXRWNV", 8, ["pnpvrum", -3], "FINY", 3]'),
+	('[{"": "", "b": 2, "d": "egu"}, "aPNK", 2, 9, {"": -79946}]'),
+	('[1, {"769": 9}, 5, 9821, 22, 0, 2.7, 5, 4, 191, 54.599, 24]'),
+	('["c", 77, "b_0lplvHJNLMxw", "VN76dhFadaafadfe5dfbco", false]'),
+	('"TYIHXebbPK_86QMP_199bEEIS__8205986vdC_CFAEFBFCEFCJQRHYoqztv"'),
+	('"cdmxxxzrhtxpwuyrxinmhb5577NSPHIHMTPQYTXSUVVGJPUUMCBEDb_1569e"'),
+	('[[5, null, "C"], "ORNR", "mnCb", 1, -800, "6953", ["K", 0], ""]'),
+	('"SSKLTHJxjxywwquhiwsde353eCIJJjkyvn9946c2cdVadcboiyZFAYMHJWGMMT"'),
+	('"5185__D5AtvhizvmEVceF3jxtghlCF0789_owmsztJHRMOJ7rlowxqq51XLXJbF"'),
+	('{"D": 565206, "xupqtmfedff": "ZGJN9", "9": 1, "glzv": -47, "": -8}'),
+	('{"": 9, "": {"": [null], "ROP": 842}, "": ["5FFD", 7, 5, 1, 94, 1]}'),
+	('{"JLn": ["8s"], "": "_ahxizrzhivyzvhr", "XSAt": 5, "P": 2838, "": 5}'),
+	('[51, 3, {"": 9, "": -9, "": [[6]]}, 7, 7, {"": 0}, "TXLQL", 7.6, [7]]'),
+	('[-38.7, "kre40", 5, {"": null}, "tvuv", 8, "", "", "uizygprwwvh", "1"]'),
+	('"z934377_nxmzjnuqglgyukjteefeihjyot1irkvwnnrqinptlpzwjgmkjbQMUVxxwvbdz"'),
+	('[165.9, "dAFD_60JQPYbafh", false, {"": 6, "": "fcfd"}, [[2], "c"], 4, 2]'),
+	('"ffHOOPVSSACDqiyeecTNWJMWPNRXU283aHRXNUNZZZQPUGYSQTTQXQVJM5eeafcIPGIHcac"'),
+	('[2, 8, -53, {"": 5}, "F9", 8, "SGUJPNVI", "7OLOZH", 9.84, {"": 6}, 207, 6]'),
+	('"xqmqmyljhq__ZGWJVNefagsxrsktruhmlinhxloupuVQW0804901NKGGMNNSYYXWQOosz8938"'),
+	('{"FEoLfaab1160167": {"L": [42, 0]}, "938": "FCCUPGYYYMQSQVZJKM", "knqmk": 2}'),
+	('"0igyurmOMSXIYHSZQEAcxlvgqdxkhwtrbaabfaaMC138Z_BDRLrythpi30_MPRXMTOILRLswmoy"'),
+	('"1129BBCABFFAACA9VGVKipnwohaccc9TSIMTOQKHmcGYVeFE_PWKLHmpyj60137672qugtsstugg"'),
+	('"D3BDA069074174vx48A37IVHWVXLUP9382542ypsl1465pixtryzCBgrkkhrvCC_BDDFatkyXHLIe"'),
+	('[{"esx7": -53, "ec60834YGVMYoXAAvgxmmqnojyzmiklhdovFipl": 2, "os": 66433}, 9.13]'),
+	('{"": ["", 4, null, 5, null], "": "3", "5_GMMHTIhPB_F_vsebc1": "Er", "GY": 121.32}'),
+	('["krTVPYDEd", 5, 8, [6, -6], [[-9], 3340, [[""]]], "", 5, [6, true], 3, "", 1, ""]'),
+	('{"rBNPKN8446080wruOLeceaCBDCKWNUYYMONSJUlCDFExr": {"": "EE0", "6826": 5, "": 7496}}'),
+	('[3, {"": -8}, "101dboMVSNKZLVPITLHLPorwwuxxjmjsh", "", "LSQPRVYKWVYK945imrh", 4, 51]'),
+	('[["HY6"], "", "bcdB", [2, [85, 1], 3, 3, 3, [8]], "", ["_m"], "2", -33, 8, 3, "_xwj"]'),
+	('["", 0, -3.7, 8, false, null, {"": 5}, 9, "06FccxFcdb283bbZGGVRSMWLJH2_PBAFpwtkbceto"]'),
+	('[52, "", -39, -7, [1], "c", {"": 9, "": 45528, "G": {"": 7}}, 3, false, 0, "EB", 8, -6]'),
+	('"qzrkvrlG78CCCEBCptzwwok808805243QXVSYed3efZSKLSNXPxhrS357KJMWSKgrfcFFDFDWKSXJJSIJ_yqJu"'),
+	('[43, 8, {"": ""}, "uwtv__HURKGJLGGPPW", 9, 66, "yqrvghxuw", {"J": false}, false, 2, 0, 4]'),
+	('[{"UVL": 7, "": 1}, false, [6, "H"], "boxlgqgm", 3, "znhm", [true], 0, ["e", 3.7], 9, 9.4]'),
+	('{"825634870117somzqw": 1, "": [5], "gYH": "_XT", "b22412631709RZP": 3, "": "", "FDB": [""]}'),
+	('[8, ["_bae"], "", "WN", 80, {"o": 2, "aff": 16}, false, true, 4, 6, {"nutzkzikolsxZRQ": 30}]'),
+	('["588BD9c_xzsn", {"k": 0, "_Ecezlkslrwvjpwrukiqzl": 3, "Ej": "4"}, "TUXwghn1dTNRXJZpswmD", 5]'),
+	('[{"dC": 7}, {"": 1, "4": 41, "": "", "": "adKS"}, {"": "ypv"}, 6, 9, 2, [-61.46], [1, 3.9], 2]'),
+	('{"8": 8, "": -364, "855": -238.1, "zj": 9, "SNHJG413": 3, "UMNVI73": [60, 0], "iwvqse": -1.833}'),
+	('"VTUKMLZKQPHIEniCFZ_cjrhvspxzulvxhqykjzmrw89OGOGISWdcrvpOPLOFALGK809896999xzqnkm63254_xrmcfcedb"'),
+	('["", "USNQbcexyFDCdBAFWJIphloxwytplyZZR008400FmoiYXVYOHVGV79795644463Aug_aeoDDEjzoziisxoykuijhz"]'),
+	('{"": 1, "5abB58gXVQVTTMWU3jSHXMMNV": "", "nv": 934, "kjsnhtj": 8, "": [{"xm": [71, 425]}], "": -9}'),
+	('"__oliqCcbwwyqmtECsqivplcb1NTMOQRZTYRJONOIPWNHKWLJRIHKROMJNZLNGTTKRcedebccdbMTQXSzhynxmllqxuhnxBA_"'),
+	('["thgACBWGNGMkFFEA", [0, -1349, {"18": "RM", "F3": 6, "dP": "_AF"}, 64, 0, {"f": [8]}], 5, [[0]], 2]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+ gin_index_check 
+-----------------
+ 
+(1 row)
+
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
diff --git a/contrib/amcheck/sql/stress_gin.sql b/contrib/amcheck/sql/stress_gin.sql
new file mode 100644
index 00000000000..881a7d442a5
--- /dev/null
+++ b/contrib/amcheck/sql/stress_gin.sql
@@ -0,0 +1,11432 @@
+SELECT setseed(0.2);
+CREATE TABLE tbl(i integer[], j jsonb, k jsonb);
+CREATE INDEX ginidx ON tbl USING gin(i, j, k);
+CREATE TABLE jsondata (i serial, j jsonb);
+INSERT INTO jsondata (j) VALUES
+	('1'),
+	('91'),
+	('[5]'),
+	('true'),
+	('"zxI"'),
+	('[1, 7]'),
+	('["", 4]'),
+	('"utDFBz"'),
+	('[[9], ""]'),
+	('"eCvxKPML"'),
+	('["1VMQNQM"]'),
+	('{"": "562c"}'),
+	('[58, 8, null]'),
+	('{"": {"": 62}}'),
+	('["", 6, 19, ""]'),
+	('{"ddfWTQ": true}'),
+	('["", 734.2, 9, 5]'),
+	('"GMV27mjtuuqmlltw"'),
+	('{"dabe": -5, "": 6}'),
+	('"hgihykirQGIYTcCA30"'),
+	('[9, {"Utrn": -6}, ""]'),
+	('"BJTZUMST1_WWEgyqgka_"'),
+	('["", -4, "", [-2], -47]'),
+	('{"": [3], "": {"": "y"}}'),
+	('{"myuijj": "YUWIUZXXLGS"}'),
+	('{"3": false, "C": "1sHTX"}'),
+	('"ZGUORVDE_ACF1QXJ_hipgwrks"'),
+	('{"072": [3, -4], "oh": "eL"}'),
+	('[{"de": 9, "JWHPMRZJW": [0]}]'),
+	('"EACJUZEBAFFBEE6706SZLWVGO635"'),
+	('["P", {"TZW": [""]}, {"": [0]}]'),
+	('{"": -6, "YMb": -22, "__": [""]}'),
+	('{"659": [8], "bfc": [0], "V": ""}'),
+	('{"8776": "1tryl", "Q": 2, "": 4.6}'),
+	('[[1], "", 9, 0, [1, 0], -1, 0, "C"]'),
+	('"635321pnpjlfFzhGTIYP9265iA_19D8260"'),
+	('"klmxsoCFDtzxrhotsqlnmvmzlcbdde34twj"'),
+	('"GZSXSZVS19ecbe_ZJJED0379c1j9_GSU9167"'),
+	('{"F18s": {"": -84194}, "ececab2": [""]}'),
+	('["", {"SVAvgg": "Q"}, 1, 9, "gypy", [1]]'),
+	('[[""], {"": 5}, "GVZGGVGSWM", 2, ["", 8]]'),
+	('{"V": 8, "TPNL": [826, null], "4": -9.729}'),
+	('{"HTJP_DAptxn6": 9, "": "r", "hji4124": ""}'),
+	('[1, ["9", 5, 6, ""], {"": "", "": "efb"}, 7]'),
+	('{"": 6, "1251e_cajrgkyzuxBEDM017444EFD": 548}'),
+	('{"853": -60, "TGLUG_jxmrggv": null, "pjx": ""}'),
+	('[0, "wsgnnvCfJVV_KOMLVXOUIS9FIQLPXXBbbaohjrpj"]'),
+	('"nizvkl36908OLW22ecbdeEBMHMiCEEACcikwkjpmu30X_m"'),
+	('{"bD24eeVZWY": 1, "Bt": 9, "": 6052, "FT": ["h"]}'),
+	('"CDBnouyzlAMSHJCtguxxizpzgkNYfaNLURVITNLYVPSNLYNy"'),
+	('{"d": [[4, "N"], null, 6, true], "1PKV": 6, "9": 6}'),
+	('[-7326, [83, 55], -63, [0, {"": 1}], {"ri0": false}]'),
+	('{"": 117.38, "FCkx3608szztpvjolomzvlyrshyvrgz": -4.2}'),
+	('["", 8, {"WXHNG": {"6": 4}}, [null], 7, 2, "", 299, 6]'),
+	('[[-992.2, "TPm", "", "cedeff79BD8", "t", [1]], 0, [-7]]'),
+	('[9, 34, ["LONuyiYGQZ"], [7, 88], ["c"], 1, 6, "", [[2]]]'),
+	('[20, 5, null, "eLHTXRWNV", 8, ["pnpvrum", -3], "FINY", 3]'),
+	('[{"": "", "b": 2, "d": "egu"}, "aPNK", 2, 9, {"": -79946}]'),
+	('[1, {"769": 9}, 5, 9821, 22, 0, 2.7, 5, 4, 191, 54.599, 24]'),
+	('["c", 77, "b_0lplvHJNLMxw", "VN76dhFadaafadfe5dfbco", false]'),
+	('"TYIHXebbPK_86QMP_199bEEIS__8205986vdC_CFAEFBFCEFCJQRHYoqztv"'),
+	('"cdmxxxzrhtxpwuyrxinmhb5577NSPHIHMTPQYTXSUVVGJPUUMCBEDb_1569e"'),
+	('[[5, null, "C"], "ORNR", "mnCb", 1, -800, "6953", ["K", 0], ""]'),
+	('"SSKLTHJxjxywwquhiwsde353eCIJJjkyvn9946c2cdVadcboiyZFAYMHJWGMMT"'),
+	('"5185__D5AtvhizvmEVceF3jxtghlCF0789_owmsztJHRMOJ7rlowxqq51XLXJbF"'),
+	('{"D": 565206, "xupqtmfedff": "ZGJN9", "9": 1, "glzv": -47, "": -8}'),
+	('{"": 9, "": {"": [null], "ROP": 842}, "": ["5FFD", 7, 5, 1, 94, 1]}'),
+	('{"JLn": ["8s"], "": "_ahxizrzhivyzvhr", "XSAt": 5, "P": 2838, "": 5}'),
+	('[51, 3, {"": 9, "": -9, "": [[6]]}, 7, 7, {"": 0}, "TXLQL", 7.6, [7]]'),
+	('[-38.7, "kre40", 5, {"": null}, "tvuv", 8, "", "", "uizygprwwvh", "1"]'),
+	('"z934377_nxmzjnuqglgyukjteefeihjyot1irkvwnnrqinptlpzwjgmkjbQMUVxxwvbdz"'),
+	('[165.9, "dAFD_60JQPYbafh", false, {"": 6, "": "fcfd"}, [[2], "c"], 4, 2]'),
+	('"ffHOOPVSSACDqiyeecTNWJMWPNRXU283aHRXNUNZZZQPUGYSQTTQXQVJM5eeafcIPGIHcac"'),
+	('[2, 8, -53, {"": 5}, "F9", 8, "SGUJPNVI", "7OLOZH", 9.84, {"": 6}, 207, 6]'),
+	('"xqmqmyljhq__ZGWJVNefagsxrsktruhmlinhxloupuVQW0804901NKGGMNNSYYXWQOosz8938"'),
+	('{"FEoLfaab1160167": {"L": [42, 0]}, "938": "FCCUPGYYYMQSQVZJKM", "knqmk": 2}'),
+	('"0igyurmOMSXIYHSZQEAcxlvgqdxkhwtrbaabfaaMC138Z_BDRLrythpi30_MPRXMTOILRLswmoy"'),
+	('"1129BBCABFFAACA9VGVKipnwohaccc9TSIMTOQKHmcGYVeFE_PWKLHmpyj60137672qugtsstugg"'),
+	('"D3BDA069074174vx48A37IVHWVXLUP9382542ypsl1465pixtryzCBgrkkhrvCC_BDDFatkyXHLIe"'),
+	('[{"esx7": -53, "ec60834YGVMYoXAAvgxmmqnojyzmiklhdovFipl": 2, "os": 66433}, 9.13]'),
+	('{"": ["", 4, null, 5, null], "": "3", "5_GMMHTIhPB_F_vsebc1": "Er", "GY": 121.32}'),
+	('["krTVPYDEd", 5, 8, [6, -6], [[-9], 3340, [[""]]], "", 5, [6, true], 3, "", 1, ""]'),
+	('{"rBNPKN8446080wruOLeceaCBDCKWNUYYMONSJUlCDFExr": {"": "EE0", "6826": 5, "": 7496}}'),
+	('[3, {"": -8}, "101dboMVSNKZLVPITLHLPorwwuxxjmjsh", "", "LSQPRVYKWVYK945imrh", 4, 51]'),
+	('[["HY6"], "", "bcdB", [2, [85, 1], 3, 3, 3, [8]], "", ["_m"], "2", -33, 8, 3, "_xwj"]'),
+	('["", 0, -3.7, 8, false, null, {"": 5}, 9, "06FccxFcdb283bbZGGVRSMWLJH2_PBAFpwtkbceto"]'),
+	('[52, "", -39, -7, [1], "c", {"": 9, "": 45528, "G": {"": 7}}, 3, false, 0, "EB", 8, -6]'),
+	('"qzrkvrlG78CCCEBCptzwwok808805243QXVSYed3efZSKLSNXPxhrS357KJMWSKgrfcFFDFDWKSXJJSIJ_yqJu"'),
+	('[43, 8, {"": ""}, "uwtv__HURKGJLGGPPW", 9, 66, "yqrvghxuw", {"J": false}, false, 2, 0, 4]'),
+	('[{"UVL": 7, "": 1}, false, [6, "H"], "boxlgqgm", 3, "znhm", [true], 0, ["e", 3.7], 9, 9.4]'),
+	('{"825634870117somzqw": 1, "": [5], "gYH": "_XT", "b22412631709RZP": 3, "": "", "FDB": [""]}'),
+	('[8, ["_bae"], "", "WN", 80, {"o": 2, "aff": 16}, false, true, 4, 6, {"nutzkzikolsxZRQ": 30}]'),
+	('["588BD9c_xzsn", {"k": 0, "_Ecezlkslrwvjpwrukiqzl": 3, "Ej": "4"}, "TUXwghn1dTNRXJZpswmD", 5]'),
+	('[{"dC": 7}, {"": 1, "4": 41, "": "", "": "adKS"}, {"": "ypv"}, 6, 9, 2, [-61.46], [1, 3.9], 2]'),
+	('{"8": 8, "": -364, "855": -238.1, "zj": 9, "SNHJG413": 3, "UMNVI73": [60, 0], "iwvqse": -1.833}'),
+	('"VTUKMLZKQPHIEniCFZ_cjrhvspxzulvxhqykjzmrw89OGOGISWdcrvpOPLOFALGK809896999xzqnkm63254_xrmcfcedb"'),
+	('["", "USNQbcexyFDCdBAFWJIphloxwytplyZZR008400FmoiYXVYOHVGV79795644463Aug_aeoDDEjzoziisxoykuijhz"]'),
+	('{"": 1, "5abB58gXVQVTTMWU3jSHXMMNV": "", "nv": 934, "kjsnhtj": 8, "": [{"xm": [71, 425]}], "": -9}'),
+	('"__oliqCcbwwyqmtECsqivplcb1NTMOQRZTYRJONOIPWNHKWLJRIHKROMJNZLNGTTKRcedebccdbMTQXSzhynxmllqxuhnxBA_"'),
+	('["thgACBWGNGMkFFEA", [0, -1349, {"18": "RM", "F3": 6, "dP": "_AF"}, 64, 0, {"f": [8]}], 5, [[0]], 2]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k)
+	(SELECT gs.i, j.j, j.j || j.j
+	FROM jsondata j,
+	 (SELECT array_agg(gs) AS i FROM generate_series(random(0,100), random(101,200)) gs) gs
+	WHERE j.i = random(1,100)
+	);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+UPDATE tbl
+	SET k = (SELECT k || k FROM tbl ORDER BY random() LIMIT 1)
+	WHERE i = (SELECT i FROM tbl ORDER BY random() LIMIT 1);
+UPDATE tbl
+	SET i = (SELECT i || i FROM tbl ORDER BY random() LIMIT 1)
+	WHERE j = (SELECT j FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k) VALUES
+	(null,               null, null),
+	(null,               null, '[]'),
+	(null,               '[]', null),
+	(ARRAY[]::INTEGER[], null, null),
+	(null,               '[]', '[]'),
+	(ARRAY[]::INTEGER[], '[]', null),
+	(ARRAY[]::INTEGER[], '[]', '[]');
+DELETE FROM tbl
+	WHERE random(1,5) = 3;
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+INSERT INTO tbl (i, j, k)
+	(SELECT ARRAY[x.i, y.i, random(0,100000), random(0,100000)], x.j, y.j
+	FROM jsondata x, jsondata y
+	WHERE x.i = random(1,100)
+	  AND y.i = random(1,100)
+	);
+SELECT gin_index_check('ginidx');
+UPDATE tbl
+	SET j = (SELECT j || j FROM tbl ORDER BY random() LIMIT 1)
+	WHERE k = (SELECT k FROM tbl ORDER BY random() LIMIT 1);
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
+SELECT gin_index_check('ginidx');
-- 
2.39.3 (Apple Git-145)