@@ -43,6 +43,11 @@ SELECT x FROM frgn;
4343(4 rows)
4444
4545-- Push down base filters. Use verbose mode to see filters.
46+ EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE))
47+ SELECT x FROM frgn WHERE x < 10;
48+ ERROR: syntax error at or near ")"
49+ LINE 1: ...LAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE))
50+ ^
4651EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE)
4752SELECT x FROM frgn WHERE x < 10;
4853 QUERY PLAN
@@ -55,18 +60,6 @@ SELECT x FROM frgn WHERE x < 10;
5560 JOINS: 0
5661(6 rows)
5762
58- EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE)
59- SELECT x FROM frgn WHERE x < 10;
60- QUERY PLAN
61- ------------------------------------------------------------------------------------
62- Foreign Scan on public.frgn (actual rows=1 loops=1) (AQO: cardinality=1, error=0%)
63- Output: x
64- Remote SQL: SELECT x FROM public.local WHERE ((x < 10))
65- Using aqo: true
66- AQO mode: LEARN
67- JOINS: 0
68- (6 rows)
69-
7063EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF)
7164SELECT x FROM frgn WHERE x < -10; -- AQO ignores constants
7265 QUERY PLAN
@@ -97,20 +90,42 @@ SELECT * FROM frgn AS a, frgn AS b WHERE a.x=b.x;
9790 JOINS: 0
9891(13 rows)
9992
100- EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF)
93+ EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE )
10194SELECT * FROM frgn AS a, frgn AS b WHERE a.x=b.x;
102- QUERY PLAN
103- ---------------------------------------------------------------------
95+ QUERY PLAN
96+ --------------------------------------------------------------------------------------------------------
10497 Foreign Scan (actual rows=1 loops=1) (AQO: cardinality=1, error=0%)
98+ Output: a.x, b.x
99+ Relations: (public.frgn a) INNER JOIN (public.frgn b)
100+ Remote SQL: SELECT r1.x, r2.x FROM (public.local r1 INNER JOIN public.local r2 ON (((r1.x = r2.x))))
101+ Using aqo: true
102+ AQO mode: LEARN
103+ JOINS: 0
104+ (7 rows)
105+
106+ -- TODO: Non-mergejoinable join condition.
107+ EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF)
108+ SELECT * FROM frgn AS a, frgn AS b WHERE a.x<b.x;
109+ QUERY PLAN
110+ -----------------------------------------------------
111+ Foreign Scan (actual rows=0 loops=1) (AQO not used)
105112 Relations: (frgn a) INNER JOIN (frgn b)
106113 Using aqo: true
107114 AQO mode: LEARN
108115 JOINS: 0
109116(5 rows)
110117
111- -- Non-mergejoinable join condition
112- --EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE)
113- --SELECT * FROM frgn AS a, frgn AS b WHERE a.x<b.x;
114- --EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE)
115- --SELECT * FROM frgn AS a, frgn AS b WHERE a.x<b.x;
118+ EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, VERBOSE)
119+ SELECT * FROM frgn AS a, frgn AS b WHERE a.x<b.x;
120+ QUERY PLAN
121+ --------------------------------------------------------------------------------------------------------
122+ Foreign Scan (actual rows=0 loops=1) (AQO not used)
123+ Output: a.x, b.x
124+ Relations: (public.frgn a) INNER JOIN (public.frgn b)
125+ Remote SQL: SELECT r1.x, r2.x FROM (public.local r1 INNER JOIN public.local r2 ON (((r1.x < r2.x))))
126+ Using aqo: true
127+ AQO mode: LEARN
128+ JOINS: 0
129+ (7 rows)
130+
116131DROP EXTENSION aqo;