diff options
author | Tomas Vondra | 2017-01-19 14:30:06 +0000 |
---|---|---|
committer | Tomas Vondra | 2017-01-19 14:30:06 +0000 |
commit | 6ed7c32a4903af763f14920327862db38d558e3c (patch) | |
tree | 44f42f4b33471695dcf1eaa81a4e83292068738f | |
parent | b42ae78afe60e2a179bedbc76478ae344f70eeba (diff) |
resolve most differences in create_index test suite
Most of the differences were trivial consequence of using partial
aggregates, instead of the XL-specific 2-phase aggregate. The
main difference is that that EXPLAIN now prefixes the Aggregate
nodes with either "Finalize" or "Partial" (while before it used
just Aggregate).
There's one remaining plan change, but that also switches from
plain Index Scan to Bitmap Index Scan. That probably deserves
a bit more attention and further investigation.
-rw-r--r-- | src/test/regress/expected/create_index.out | 351 |
1 files changed, 171 insertions, 180 deletions
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index 4ee3748d38..23dd1f7747 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -432,9 +432,9 @@ EXPLAIN (COSTS OFF, NODES OFF) SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; QUERY PLAN ------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using grect2ind on fast_emp4000 Index Cond: (home_base && '(1000,1000),(0,0)'::box) (5 rows) @@ -449,9 +449,9 @@ EXPLAIN (COSTS OFF, NODES OFF) SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using grect2ind on fast_emp4000 Index Cond: (home_base IS NULL) (5 rows) @@ -505,14 +505,13 @@ SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) EXPLAIN (COSTS OFF, NODES OFF) SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; - QUERY PLAN ------------------------------------------------------------------------- + QUERY PLAN +------------------------------------------------------------------ Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Index Scan using ggpolygonind on gpolygon_tbl - Index Cond: (f1 && '((1000,1000),(0,0))'::polygon) -(5 rows) + -> Index Scan using ggpolygonind on gpolygon_tbl + Index Cond: (f1 && '((1000,1000),(0,0))'::polygon) +(4 rows) SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; count @@ -522,14 +521,13 @@ SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; EXPLAIN (COSTS OFF, NODES OFF) SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle; - QUERY PLAN -------------------------------------------------------------------- + QUERY PLAN +------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Index Scan using ggcircleind on gcircle_tbl - Index Cond: (f1 && '<(500,500),500>'::circle) -(5 rows) + -> Index Scan using ggcircleind on gcircle_tbl + Index Cond: (f1 && '<(500,500),500>'::circle) +(4 rows) SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle; count @@ -761,9 +759,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NULL; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl Index Cond: (p IS NULL) (5 rows) @@ -778,9 +776,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl Index Cond: (p IS NOT NULL) (5 rows) @@ -795,9 +793,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl (4 rows) @@ -809,14 +807,13 @@ SELECT count(*) FROM quad_point_tbl; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; - QUERY PLAN ------------------------------------------------------------------------ + QUERY PLAN +----------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Index Only Scan using sp_quad_ind on quad_point_tbl - Index Cond: (p <@ '(1000,1000),(200,200)'::box) -(5 rows) + -> Index Only Scan using sp_quad_ind on quad_point_tbl + Index Cond: (p <@ '(1000,1000),(200,200)'::box) +(4 rows) SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; count @@ -826,14 +823,13 @@ SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; - QUERY PLAN ------------------------------------------------------------------------ + QUERY PLAN +----------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Index Only Scan using sp_quad_ind on quad_point_tbl - Index Cond: (p <@ '(1000,1000),(200,200)'::box) -(5 rows) + -> Index Only Scan using sp_quad_ind on quad_point_tbl + Index Cond: (p <@ '(1000,1000),(200,200)'::box) +(4 rows) SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; count @@ -845,9 +841,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)'; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl Index Cond: (p << '(5000,4000)'::point) (5 rows) @@ -862,9 +858,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)'; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl Index Cond: (p >> '(5000,4000)'::point) (5 rows) @@ -879,9 +875,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <^ '(5000, 4000)'; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl Index Cond: (p <^ '(5000,4000)'::point) (5 rows) @@ -896,9 +892,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl Index Cond: (p >^ '(5000,4000)'::point) (5 rows) @@ -913,9 +909,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; QUERY PLAN ----------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_quad_ind on quad_point_tbl Index Cond: (p ~= '(4585,365)'::point) (5 rows) @@ -928,14 +924,13 @@ SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; - QUERY PLAN ---------------------------------------------------------------------- + QUERY PLAN +--------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Index Only Scan using sp_kd_ind on kd_point_tbl - Index Cond: (p <@ '(1000,1000),(200,200)'::box) -(5 rows) + -> Index Only Scan using sp_kd_ind on kd_point_tbl + Index Cond: (p <@ '(1000,1000),(200,200)'::box) +(4 rows) SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; count @@ -945,14 +940,13 @@ SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; - QUERY PLAN ---------------------------------------------------------------------- + QUERY PLAN +--------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Index Only Scan using sp_kd_ind on kd_point_tbl - Index Cond: (p <@ '(1000,1000),(200,200)'::box) -(5 rows) + -> Index Only Scan using sp_kd_ind on kd_point_tbl + Index Cond: (p <@ '(1000,1000),(200,200)'::box) +(4 rows) SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; count @@ -964,9 +958,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_kd_ind on kd_point_tbl Index Cond: (p << '(5000,4000)'::point) (5 rows) @@ -981,9 +975,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_kd_ind on kd_point_tbl Index Cond: (p >> '(5000,4000)'::point) (5 rows) @@ -998,9 +992,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <^ '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_kd_ind on kd_point_tbl Index Cond: (p <^ '(5000,4000)'::point) (5 rows) @@ -1015,9 +1009,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >^ '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_kd_ind on kd_point_tbl Index Cond: (p >^ '(5000,4000)'::point) (5 rows) @@ -1032,9 +1026,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_kd_ind on kd_point_tbl Index Cond: (p ~= '(4585,365)'::point) (5 rows) @@ -1097,9 +1091,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; QUERY PLAN ---------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t < 'Aztec Ct '::text) (5 rows) @@ -1114,9 +1108,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------------------ - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~<~ 'Aztec Ct '::text) (5 rows) @@ -1131,9 +1125,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; QUERY PLAN ----------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t <= 'Aztec Ct '::text) (5 rows) @@ -1148,9 +1142,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~<=~ 'Aztec Ct '::text) (5 rows) @@ -1197,9 +1191,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; QUERY PLAN ----------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t >= 'Worth St '::text) (5 rows) @@ -1214,9 +1208,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~>=~ 'Worth St '::text) (5 rows) @@ -1231,9 +1225,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; QUERY PLAN ---------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t > 'Worth St '::text) (5 rows) @@ -1248,9 +1242,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------------------ - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Index Only Scan using sp_radix_ind on radix_text_tbl Index Cond: (t ~>~ 'Worth St '::text) (5 rows) @@ -1343,9 +1337,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NULL; QUERY PLAN ---------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl Recheck Cond: (p IS NULL) -> Bitmap Index Scan on sp_quad_ind @@ -1362,9 +1356,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL; QUERY PLAN ---------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl Recheck Cond: (p IS NOT NULL) -> Bitmap Index Scan on sp_quad_ind @@ -1381,9 +1375,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl; QUERY PLAN ---------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl -> Bitmap Index Scan on sp_quad_ind (5 rows) @@ -1396,16 +1390,15 @@ SELECT count(*) FROM quad_point_tbl; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; - QUERY PLAN ---------------------------------------------------------------------------- + QUERY PLAN +--------------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Bitmap Heap Scan on quad_point_tbl - Recheck Cond: (p <@ '(1000,1000),(200,200)'::box) - -> Bitmap Index Scan on sp_quad_ind - Index Cond: (p <@ '(1000,1000),(200,200)'::box) -(7 rows) + -> Bitmap Heap Scan on quad_point_tbl + Recheck Cond: (p <@ '(1000,1000),(200,200)'::box) + -> Bitmap Index Scan on sp_quad_ind + Index Cond: (p <@ '(1000,1000),(200,200)'::box) +(6 rows) SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; count @@ -1415,16 +1408,15 @@ SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; - QUERY PLAN ---------------------------------------------------------------------------- + QUERY PLAN +--------------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Bitmap Heap Scan on quad_point_tbl - Recheck Cond: ('(1000,1000),(200,200)'::box @> p) - -> Bitmap Index Scan on sp_quad_ind - Index Cond: ('(1000,1000),(200,200)'::box @> p) -(7 rows) + -> Bitmap Heap Scan on quad_point_tbl + Recheck Cond: ('(1000,1000),(200,200)'::box @> p) + -> Bitmap Index Scan on sp_quad_ind + Index Cond: ('(1000,1000),(200,200)'::box @> p) +(6 rows) SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; count @@ -1436,9 +1428,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl Recheck Cond: (p << '(5000,4000)'::point) -> Bitmap Index Scan on sp_quad_ind @@ -1455,9 +1447,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl Recheck Cond: (p >> '(5000,4000)'::point) -> Bitmap Index Scan on sp_quad_ind @@ -1474,9 +1466,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <^ '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl Recheck Cond: (p <^ '(5000,4000)'::point) -> Bitmap Index Scan on sp_quad_ind @@ -1493,9 +1485,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl Recheck Cond: (p >^ '(5000,4000)'::point) -> Bitmap Index Scan on sp_quad_ind @@ -1512,9 +1504,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; QUERY PLAN ------------------------------------------------------------------ - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on quad_point_tbl Recheck Cond: (p ~= '(4585,365)'::point) -> Bitmap Index Scan on sp_quad_ind @@ -1529,16 +1521,15 @@ SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; - QUERY PLAN ---------------------------------------------------------------------------- + QUERY PLAN +--------------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Bitmap Heap Scan on kd_point_tbl - Recheck Cond: (p <@ '(1000,1000),(200,200)'::box) - -> Bitmap Index Scan on sp_kd_ind - Index Cond: (p <@ '(1000,1000),(200,200)'::box) -(7 rows) + -> Bitmap Heap Scan on kd_point_tbl + Recheck Cond: (p <@ '(1000,1000),(200,200)'::box) + -> Bitmap Index Scan on sp_kd_ind + Index Cond: (p <@ '(1000,1000),(200,200)'::box) +(6 rows) SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; count @@ -1548,16 +1539,15 @@ SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; - QUERY PLAN ---------------------------------------------------------------------------- + QUERY PLAN +--------------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Bitmap Heap Scan on kd_point_tbl - Recheck Cond: ('(1000,1000),(200,200)'::box @> p) - -> Bitmap Index Scan on sp_kd_ind - Index Cond: ('(1000,1000),(200,200)'::box @> p) -(7 rows) + -> Bitmap Heap Scan on kd_point_tbl + Recheck Cond: ('(1000,1000),(200,200)'::box @> p) + -> Bitmap Index Scan on sp_kd_ind + Index Cond: ('(1000,1000),(200,200)'::box @> p) +(6 rows) SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; count @@ -1569,9 +1559,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on kd_point_tbl Recheck Cond: (p << '(5000,4000)'::point) -> Bitmap Index Scan on sp_kd_ind @@ -1588,9 +1578,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on kd_point_tbl Recheck Cond: (p >> '(5000,4000)'::point) -> Bitmap Index Scan on sp_kd_ind @@ -1607,9 +1597,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <^ '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on kd_point_tbl Recheck Cond: (p <^ '(5000,4000)'::point) -> Bitmap Index Scan on sp_kd_ind @@ -1626,9 +1616,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >^ '(5000, 4000)'; QUERY PLAN ------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on kd_point_tbl Recheck Cond: (p >^ '(5000,4000)'::point) -> Bitmap Index Scan on sp_kd_ind @@ -1645,9 +1635,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; QUERY PLAN ------------------------------------------------------------------ - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on kd_point_tbl Recheck Cond: (p ~= '(4585,365)'::point) -> Bitmap Index Scan on sp_kd_ind @@ -1718,9 +1708,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; QUERY PLAN ---------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t < 'Aztec Ct '::text) -> Bitmap Index Scan on sp_radix_ind @@ -1737,9 +1727,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------------------------ - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~<~ 'Aztec Ct '::text) -> Bitmap Index Scan on sp_radix_ind @@ -1756,9 +1746,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; QUERY PLAN ----------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t <= 'Aztec Ct '::text) -> Bitmap Index Scan on sp_radix_ind @@ -1775,9 +1765,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; QUERY PLAN ------------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~<=~ 'Aztec Ct '::text) -> Bitmap Index Scan on sp_radix_ind @@ -1830,9 +1820,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; QUERY PLAN ----------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t >= 'Worth St '::text) -> Bitmap Index Scan on sp_radix_ind @@ -1849,9 +1839,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~>=~ 'Worth St '::text) -> Bitmap Index Scan on sp_radix_ind @@ -1868,9 +1858,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; QUERY PLAN ---------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t > 'Worth St '::text) -> Bitmap Index Scan on sp_radix_ind @@ -1887,9 +1877,9 @@ EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; QUERY PLAN ------------------------------------------------------------------------------------------ - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on radix_text_tbl Recheck Cond: (t ~>~ 'Worth St '::text) -> Bitmap Index Scan on sp_radix_ind @@ -2494,14 +2484,16 @@ CREATE INDEX hash_tuplesort_idx ON tenk1 USING hash (stringu1 name_ops) WITH (fi WARNING: hash indexes are not WAL-logged and their use is discouraged EXPLAIN (COSTS OFF) SELECT count(*) FROM tenk1 WHERE stringu1 = 'TVAAAA'; - QUERY PLAN -------------------------------------------------------- - Aggregate - -> Bitmap Heap Scan on tenk1 - Recheck Cond: (stringu1 = 'TVAAAA'::name) - -> Bitmap Index Scan on hash_tuplesort_idx - Index Cond: (stringu1 = 'TVAAAA'::name) -(5 rows) + QUERY PLAN +------------------------------------------------------------------- + Finalize Aggregate + -> Remote Subquery Scan on all (datanode_1,datanode_2) + -> Partial Aggregate + -> Bitmap Heap Scan on tenk1 + Recheck Cond: (stringu1 = 'TVAAAA'::name) + -> Bitmap Index Scan on hash_tuplesort_idx + Index Cond: (stringu1 = 'TVAAAA'::name) +(7 rows) SELECT count(*) FROM tenk1 WHERE stringu1 = 'TVAAAA'; count @@ -2927,22 +2919,21 @@ SELECT * FROM tenk1 EXPLAIN (NODES OFF, COSTS OFF) SELECT count(*) FROM tenk1 WHERE hundred = 42 AND (thousand = 42 OR thousand = 99); - QUERY PLAN ---------------------------------------------------------------------------------------------- + QUERY PLAN +--------------------------------------------------------------------------------------- Aggregate -> Remote Subquery Scan on all - -> Aggregate - -> Bitmap Heap Scan on tenk1 - Recheck Cond: ((hundred = 42) AND ((thousand = 42) OR (thousand = 99))) - -> BitmapAnd - -> Bitmap Index Scan on tenk1_hundred - Index Cond: (hundred = 42) - -> BitmapOr - -> Bitmap Index Scan on tenk1_thous_tenthous - Index Cond: (thousand = 42) - -> Bitmap Index Scan on tenk1_thous_tenthous - Index Cond: (thousand = 99) -(13 rows) + -> Bitmap Heap Scan on tenk1 + Recheck Cond: ((hundred = 42) AND ((thousand = 42) OR (thousand = 99))) + -> BitmapAnd + -> Bitmap Index Scan on tenk1_hundred + Index Cond: (hundred = 42) + -> BitmapOr + -> Bitmap Index Scan on tenk1_thous_tenthous + Index Cond: (thousand = 42) + -> Bitmap Index Scan on tenk1_thous_tenthous + Index Cond: (thousand = 99) +(12 rows) SELECT count(*) FROM tenk1 WHERE hundred = 42 AND (thousand = 42 OR thousand = 99); @@ -2963,9 +2954,9 @@ EXPLAIN (NODES OFF, COSTS OFF) WHERE f1 BETWEEN 'WA' AND 'ZZZ' and id < 1000 and f1 ~<~ 'YX'; QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------- - Aggregate + Finalize Aggregate -> Remote Subquery Scan on all - -> Aggregate + -> Partial Aggregate -> Bitmap Heap Scan on dupindexcols Recheck Cond: ((f1 >= 'WA'::text) AND (f1 <= 'ZZZ'::text) AND (id < 1000) AND (f1 ~<~ 'YX'::text)) -> Bitmap Index Scan on dupindexcols_i |