mirror of https://github.com/citusdata/citus.git
61 lines
2.1 KiB
Plaintext
61 lines
2.1 KiB
Plaintext
-- Testing a having clause that could have been a where clause between a distributed table
|
|
-- and a reference table. This query was the cause for intermediate results not being
|
|
-- available during the replace of the planner for the master query with the standard
|
|
-- planner.
|
|
-- Since the having clause could have been a where clause the having clause on the grouping
|
|
-- on the coordinator is replaced with a Result node containing a One-time filter if the
|
|
-- having qual (one-time filter works because the query doesn't change with the tuples
|
|
-- returned from below).
|
|
SELECT count(*),
|
|
o_orderstatus
|
|
FROM orders
|
|
GROUP BY 2
|
|
HAVING (
|
|
SELECT count(*)
|
|
FROM customer
|
|
) > 0;
|
|
count | o_orderstatus
|
|
---------------------------------------------------------------------
|
|
1461 | O
|
|
75 | P
|
|
1449 | F
|
|
(3 rows)
|
|
|
|
-- lets pin the plan in the test as well
|
|
EXPLAIN (COSTS OFF)
|
|
SELECT count(*),
|
|
o_orderstatus
|
|
FROM orders
|
|
GROUP BY 2
|
|
HAVING (
|
|
SELECT count(*)
|
|
FROM customer
|
|
) > 0;
|
|
QUERY PLAN
|
|
---------------------------------------------------------------------
|
|
HashAggregate
|
|
Group Key: remote_scan.o_orderstatus
|
|
InitPlan 1 (returns $0)
|
|
-> Function Scan on read_intermediate_result intermediate_result
|
|
-> Result
|
|
One-Time Filter: ($0 > 0)
|
|
-> Custom Scan (Citus Adaptive)
|
|
Filter: ($0 > 0)
|
|
-> Distributed Subplan XXX_1
|
|
-> Custom Scan (Citus Adaptive)
|
|
Task Count: 1
|
|
Tasks Shown: All
|
|
-> Task
|
|
Node: host=localhost port=xxxxx dbname=regression
|
|
-> Aggregate
|
|
-> Seq Scan on customer_360001 customer
|
|
Task Count: 2
|
|
Tasks Shown: One of 2
|
|
-> Task
|
|
Node: host=localhost port=xxxxx dbname=regression
|
|
-> HashAggregate
|
|
Group Key: orders.o_orderstatus
|
|
-> Seq Scan on orders_290002 orders
|
|
(23 rows)
|
|
|