Further improve jsonb_sqljson parallel test
authorAndrew Dunstan <andrew@dunslane.net>
Wed, 6 Apr 2022 17:48:26 +0000 (13:48 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Wed, 6 Apr 2022 17:53:11 +0000 (13:53 -0400)
Instead of using a very large table, use some settings to encourage use
of parallelism. Also, drop the table so it doesn't upset the recovery
test.

per suggestion from Andres Freund

Discussion: https://postgr.es/m/20220406022118.3ocqvhxr6kciw5am@alap3.anarazel.de

src/test/regress/expected/jsonb_sqljson.out
src/test/regress/sql/jsonb_sqljson.sql

index 230cfd3bfd527cea8cfd0c3b8598f5a6d95b45d1..28338b4d193c0ad269abc1cd1918168b476a161d 100644 (file)
@@ -2090,7 +2090,13 @@ LINE 1: SELECT * FROM JSON_TABLE(jsonb '{"a": 123}', '$' || '.' || '...
 -- Test parallel JSON_VALUE()
 CREATE UNLOGGED TABLE test_parallel_jsonb_value AS
 SELECT i::text::jsonb AS js
-FROM generate_series(1, 500000) i;
+FROM generate_series(1, 50000) i;
+-- encourage use of parallel plans
+set parallel_setup_cost=0;
+set parallel_tuple_cost=0;
+set min_parallel_table_scan_size=0;
+set max_parallel_workers_per_gather=4;
+set parallel_leader_participation = off;
 -- Should be non-parallel due to subtransactions
 EXPLAIN (COSTS OFF)
 SELECT sum(JSON_VALUE(js, '$' RETURNING numeric)) FROM test_parallel_jsonb_value;
@@ -2101,9 +2107,9 @@ SELECT sum(JSON_VALUE(js, '$' RETURNING numeric)) FROM test_parallel_jsonb_value
 (2 rows)
 
 SELECT sum(JSON_VALUE(js, '$' RETURNING numeric)) FROM test_parallel_jsonb_value;
-     sum      
---------------
- 125000250000
+    sum     
+------------
+ 1250025000
 (1 row)
 
 -- Should be parallel
@@ -2113,14 +2119,15 @@ SELECT sum(JSON_VALUE(js, '$' RETURNING numeric ERROR ON ERROR)) FROM test_paral
 ------------------------------------------------------------------
  Finalize Aggregate
    ->  Gather
-         Workers Planned: 2
+         Workers Planned: 4
          ->  Partial Aggregate
                ->  Parallel Seq Scan on test_parallel_jsonb_value
 (5 rows)
 
 SELECT sum(JSON_VALUE(js, '$' RETURNING numeric ERROR ON ERROR)) FROM test_parallel_jsonb_value;
-     sum      
---------------
- 125000250000
+    sum     
+------------
+ 1250025000
 (1 row)
 
+DROP TABLE test_parallel_jsonb_value;
index 866c708a4d7721c62ca98cfdaa246d913aac76e4..ba1895d42db66e9679133fdf8956acf13c1728fd 100644 (file)
@@ -948,9 +948,19 @@ SELECT JSON_QUERY(jsonb '{"a": 123}', 'error' || ' ' || 'error');
 SELECT * FROM JSON_TABLE(jsonb '{"a": 123}', '$' || '.' || 'a' COLUMNS (foo int));
 
 -- Test parallel JSON_VALUE()
+
+
 CREATE UNLOGGED TABLE test_parallel_jsonb_value AS
 SELECT i::text::jsonb AS js
-FROM generate_series(1, 500000) i;
+FROM generate_series(1, 50000) i;
+
+
+-- encourage use of parallel plans
+set parallel_setup_cost=0;
+set parallel_tuple_cost=0;
+set min_parallel_table_scan_size=0;
+set max_parallel_workers_per_gather=4;
+set parallel_leader_participation = off;
 
 -- Should be non-parallel due to subtransactions
 EXPLAIN (COSTS OFF)
@@ -961,3 +971,5 @@ SELECT sum(JSON_VALUE(js, '$' RETURNING numeric)) FROM test_parallel_jsonb_value
 EXPLAIN (COSTS OFF)
 SELECT sum(JSON_VALUE(js, '$' RETURNING numeric ERROR ON ERROR)) FROM test_parallel_jsonb_value;
 SELECT sum(JSON_VALUE(js, '$' RETURNING numeric ERROR ON ERROR)) FROM test_parallel_jsonb_value;
+
+DROP TABLE test_parallel_jsonb_value;