From 2b39467a79159764f70028d857f7449af34a7d7c Mon Sep 17 00:00:00 2001 From: Kouhei Sutou Date: Wed, 23 Sep 2015 20:19:02 +0900 Subject: [PATCH] json test: add tests for element value --- expected/jsonb/element/boolean/bitmapscan.out | 22 +++++++++++++++++++ expected/jsonb/element/boolean/indexscan.out | 22 +++++++++++++++++++ expected/jsonb/element/number/bitmapscan.out | 22 +++++++++++++++++++ expected/jsonb/element/number/indexscan.out | 22 +++++++++++++++++++ expected/jsonb/element/string/bitmapscan.out | 22 +++++++++++++++++++ expected/jsonb/element/string/indexscan.out | 22 +++++++++++++++++++ sql/jsonb/element/boolean/bitmapscan.sql | 21 ++++++++++++++++++ sql/jsonb/element/boolean/indexscan.sql | 21 ++++++++++++++++++ sql/jsonb/element/number/bitmapscan.sql | 21 ++++++++++++++++++ sql/jsonb/element/number/indexscan.sql | 21 ++++++++++++++++++ sql/jsonb/element/string/bitmapscan.sql | 21 ++++++++++++++++++ sql/jsonb/element/string/indexscan.sql | 21 ++++++++++++++++++ 12 files changed, 258 insertions(+) create mode 100644 expected/jsonb/element/boolean/bitmapscan.out create mode 100644 expected/jsonb/element/boolean/indexscan.out create mode 100644 expected/jsonb/element/number/bitmapscan.out create mode 100644 expected/jsonb/element/number/indexscan.out create mode 100644 expected/jsonb/element/string/bitmapscan.out create mode 100644 expected/jsonb/element/string/indexscan.out create mode 100644 sql/jsonb/element/boolean/bitmapscan.sql create mode 100644 sql/jsonb/element/boolean/indexscan.sql create mode 100644 sql/jsonb/element/number/bitmapscan.sql create mode 100644 sql/jsonb/element/number/indexscan.sql create mode 100644 sql/jsonb/element/string/bitmapscan.sql create mode 100644 sql/jsonb/element/string/indexscan.sql diff --git a/expected/jsonb/element/boolean/bitmapscan.out b/expected/jsonb/element/boolean/bitmapscan.out new file mode 100644 index 00000000..8ae422db --- /dev/null +++ b/expected/jsonb/element/boolean/bitmapscan.out @@ -0,0 +1,22 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); +INSERT INTO fruits VALUES (1, '[true]'); +INSERT INTO fruits VALUES (2, '[false]'); +INSERT INTO fruits VALUES (3, '[true]'); +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); +SET enable_seqscan = off; +SET enable_indexscan = off; +SET enable_bitmapscan = on; +SELECT id, items + FROM fruits + WHERE items @@ 'boolean == true' + ORDER BY id; + id | items +----+-------- + 1 | [true] + 3 | [true] +(2 rows) + +DROP TABLE fruits; diff --git a/expected/jsonb/element/boolean/indexscan.out b/expected/jsonb/element/boolean/indexscan.out new file mode 100644 index 00000000..519a44e0 --- /dev/null +++ b/expected/jsonb/element/boolean/indexscan.out @@ -0,0 +1,22 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); +INSERT INTO fruits VALUES (1, '[true]'); +INSERT INTO fruits VALUES (2, '[false]'); +INSERT INTO fruits VALUES (3, '[true]'); +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); +SET enable_seqscan = off; +SET enable_indexscan = on; +SET enable_bitmapscan = off; +SELECT id, items + FROM fruits + WHERE items @@ 'boolean == true' + ORDER BY id; + id | items +----+-------- + 1 | [true] + 3 | [true] +(2 rows) + +DROP TABLE fruits; diff --git a/expected/jsonb/element/number/bitmapscan.out b/expected/jsonb/element/number/bitmapscan.out new file mode 100644 index 00000000..975c3e5d --- /dev/null +++ b/expected/jsonb/element/number/bitmapscan.out @@ -0,0 +1,22 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); +INSERT INTO fruits VALUES (1, '[100]'); +INSERT INTO fruits VALUES (2, '[200, 30]'); +INSERT INTO fruits VALUES (3, '[150]'); +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); +SET enable_seqscan = off; +SET enable_indexscan = off; +SET enable_bitmapscan = on; +SELECT id, items + FROM fruits + WHERE items @@ 'number <= 100' + ORDER BY id; + id | items +----+----------- + 1 | [100] + 2 | [200, 30] +(2 rows) + +DROP TABLE fruits; diff --git a/expected/jsonb/element/number/indexscan.out b/expected/jsonb/element/number/indexscan.out new file mode 100644 index 00000000..c8dc8a79 --- /dev/null +++ b/expected/jsonb/element/number/indexscan.out @@ -0,0 +1,22 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); +INSERT INTO fruits VALUES (1, '[100]'); +INSERT INTO fruits VALUES (2, '[200, 30]'); +INSERT INTO fruits VALUES (3, '[150]'); +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); +SET enable_seqscan = off; +SET enable_indexscan = on; +SET enable_bitmapscan = off; +SELECT id, items + FROM fruits + WHERE items @@ 'number <= 100' + ORDER BY id; + id | items +----+----------- + 1 | [100] + 2 | [200, 30] +(2 rows) + +DROP TABLE fruits; diff --git a/expected/jsonb/element/string/bitmapscan.out b/expected/jsonb/element/string/bitmapscan.out new file mode 100644 index 00000000..2258ddb4 --- /dev/null +++ b/expected/jsonb/element/string/bitmapscan.out @@ -0,0 +1,22 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); +INSERT INTO fruits VALUES (1, '["apple"]'); +INSERT INTO fruits VALUES (2, '["banana", "apple"]'); +INSERT INTO fruits VALUES (3, '["peach"]'); +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); +SET enable_seqscan = off; +SET enable_indexscan = off; +SET enable_bitmapscan = on; +SELECT id, items + FROM fruits + WHERE items @@ 'string == "apple"' + ORDER BY id; + id | items +----+--------------------- + 1 | ["apple"] + 2 | ["banana", "apple"] +(2 rows) + +DROP TABLE fruits; diff --git a/expected/jsonb/element/string/indexscan.out b/expected/jsonb/element/string/indexscan.out new file mode 100644 index 00000000..7e2c99c1 --- /dev/null +++ b/expected/jsonb/element/string/indexscan.out @@ -0,0 +1,22 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); +INSERT INTO fruits VALUES (1, '["apple"]'); +INSERT INTO fruits VALUES (2, '["banana", "apple"]'); +INSERT INTO fruits VALUES (3, '["peach"]'); +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); +SET enable_seqscan = off; +SET enable_indexscan = on; +SET enable_bitmapscan = off; +SELECT id, items + FROM fruits + WHERE items @@ 'string == "apple"' + ORDER BY id; + id | items +----+--------------------- + 1 | ["apple"] + 2 | ["banana", "apple"] +(2 rows) + +DROP TABLE fruits; diff --git a/sql/jsonb/element/boolean/bitmapscan.sql b/sql/jsonb/element/boolean/bitmapscan.sql new file mode 100644 index 00000000..9bc33020 --- /dev/null +++ b/sql/jsonb/element/boolean/bitmapscan.sql @@ -0,0 +1,21 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); + +INSERT INTO fruits VALUES (1, '[true]'); +INSERT INTO fruits VALUES (2, '[false]'); +INSERT INTO fruits VALUES (3, '[true]'); + +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); + +SET enable_seqscan = off; +SET enable_indexscan = off; +SET enable_bitmapscan = on; + +SELECT id, items + FROM fruits + WHERE items @@ 'boolean == true' + ORDER BY id; + +DROP TABLE fruits; diff --git a/sql/jsonb/element/boolean/indexscan.sql b/sql/jsonb/element/boolean/indexscan.sql new file mode 100644 index 00000000..07207731 --- /dev/null +++ b/sql/jsonb/element/boolean/indexscan.sql @@ -0,0 +1,21 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); + +INSERT INTO fruits VALUES (1, '[true]'); +INSERT INTO fruits VALUES (2, '[false]'); +INSERT INTO fruits VALUES (3, '[true]'); + +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); + +SET enable_seqscan = off; +SET enable_indexscan = on; +SET enable_bitmapscan = off; + +SELECT id, items + FROM fruits + WHERE items @@ 'boolean == true' + ORDER BY id; + +DROP TABLE fruits; diff --git a/sql/jsonb/element/number/bitmapscan.sql b/sql/jsonb/element/number/bitmapscan.sql new file mode 100644 index 00000000..e4544ceb --- /dev/null +++ b/sql/jsonb/element/number/bitmapscan.sql @@ -0,0 +1,21 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); + +INSERT INTO fruits VALUES (1, '[100]'); +INSERT INTO fruits VALUES (2, '[200, 30]'); +INSERT INTO fruits VALUES (3, '[150]'); + +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); + +SET enable_seqscan = off; +SET enable_indexscan = off; +SET enable_bitmapscan = on; + +SELECT id, items + FROM fruits + WHERE items @@ 'number <= 100' + ORDER BY id; + +DROP TABLE fruits; diff --git a/sql/jsonb/element/number/indexscan.sql b/sql/jsonb/element/number/indexscan.sql new file mode 100644 index 00000000..7cf95f57 --- /dev/null +++ b/sql/jsonb/element/number/indexscan.sql @@ -0,0 +1,21 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); + +INSERT INTO fruits VALUES (1, '[100]'); +INSERT INTO fruits VALUES (2, '[200, 30]'); +INSERT INTO fruits VALUES (3, '[150]'); + +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); + +SET enable_seqscan = off; +SET enable_indexscan = on; +SET enable_bitmapscan = off; + +SELECT id, items + FROM fruits + WHERE items @@ 'number <= 100' + ORDER BY id; + +DROP TABLE fruits; diff --git a/sql/jsonb/element/string/bitmapscan.sql b/sql/jsonb/element/string/bitmapscan.sql new file mode 100644 index 00000000..1343f1af --- /dev/null +++ b/sql/jsonb/element/string/bitmapscan.sql @@ -0,0 +1,21 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); + +INSERT INTO fruits VALUES (1, '["apple"]'); +INSERT INTO fruits VALUES (2, '["banana", "apple"]'); +INSERT INTO fruits VALUES (3, '["peach"]'); + +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); + +SET enable_seqscan = off; +SET enable_indexscan = off; +SET enable_bitmapscan = on; + +SELECT id, items + FROM fruits + WHERE items @@ 'string == "apple"' + ORDER BY id; + +DROP TABLE fruits; diff --git a/sql/jsonb/element/string/indexscan.sql b/sql/jsonb/element/string/indexscan.sql new file mode 100644 index 00000000..3829339c --- /dev/null +++ b/sql/jsonb/element/string/indexscan.sql @@ -0,0 +1,21 @@ +CREATE TABLE fruits ( + id int, + items jsonb +); + +INSERT INTO fruits VALUES (1, '["apple"]'); +INSERT INTO fruits VALUES (2, '["banana", "apple"]'); +INSERT INTO fruits VALUES (3, '["peach"]'); + +CREATE INDEX pgroonga_index ON fruits USING pgroonga (items); + +SET enable_seqscan = off; +SET enable_indexscan = on; +SET enable_bitmapscan = off; + +SELECT id, items + FROM fruits + WHERE items @@ 'string == "apple"' + ORDER BY id; + +DROP TABLE fruits;