@@ -265,48 +265,48 @@ ORDER BY (md5(query_text))
265265 | | WHERE t1.a < 1 AND t2.b < 1 AND t2.c < 1 AND t2.d < 1 AND t1.a = t2.a;
266266 {1,1,1} | 4 | EXPLAIN SELECT * FROM aqo_test0 +
267267 | | WHERE a < 3 AND b < 3 AND c < 3 AND d < 3;
268- {1,1,1,1,1} | 0 | SELECT count(*) FROM tmp1;
269- {1,1,1,1,1} | 0 | SELECT count(*) FROM tmp1;
270- {1} |2 | EXPlAIN SELECT t1.a, t2.b, t3.c +
268+ {1} | 0 | SELECT count(*) FROM tmp1;
269+ {1} | 0 | SELECT count(*) FROM tmp1;
270+ {1} |6 | EXPlAIN SELECT t1.a, t2.b, t3.c +
271271 | | FROM aqo_test1 AS t1, aqo_test0 AS t2, aqo_test0 AS t3 +
272272 | | WHERE t1.a < 1 AND t3.b < 1 AND t2.c < 1 AND t3.d < 0 AND t1.a = t2.a AND t1.b = t3.b;
273- {1} |2 | EXPlAIN SELECT t1.a, t2.b, t3.c +
273+ {1} |1 | EXPlAIN SELECT t1.a, t2.b, t3.c +
274274 | | FROM aqo_test1 AS t1, aqo_test0 AS t2, aqo_test0 AS t3 +
275275 | | WHERE t1.a < 1 AND t3.b < 1 AND t2.c < 1 AND t3.d < 0 AND t1.a = t2.a AND t1.b = t3.b;
276- {1} |3 | EXPlAIN SELECT t1.a, t2.b, t3.c +
276+ {1} |2 | EXPlAIN SELECT t1.a, t2.b, t3.c +
277277 | | FROM aqo_test1 AS t1, aqo_test0 AS t2, aqo_test0 AS t3 +
278278 | | WHERE t1.a < 1 AND t3.b < 1 AND t2.c < 1 AND t3.d < 0 AND t1.a = t2.a AND t1.b = t3.b;
279- {1} |6 | EXPlAIN SELECT t1.a, t2.b, t3.c +
279+ {1} |3 | EXPlAIN SELECT t1.a, t2.b, t3.c +
280280 | | FROM aqo_test1 AS t1, aqo_test0 AS t2, aqo_test0 AS t3 +
281281 | | WHERE t1.a < 1 AND t3.b < 1 AND t2.c < 1 AND t3.d < 0 AND t1.a = t2.a AND t1.b = t3.b;
282- {1,1 } |1 | EXPlAIN SELECT t1.a, t2.b, t3.c +
282+ {1} |2 | EXPlAIN SELECT t1.a, t2.b, t3.c +
283283 | | FROM aqo_test1 AS t1, aqo_test0 AS t2, aqo_test0 AS t3 +
284284 | | WHERE t1.a < 1 AND t3.b < 1 AND t2.c < 1 AND t3.d < 0 AND t1.a = t2.a AND t1.b = t3.b;
285- {1} | 4 | EXPLAIN SELECT t1.a, t2.b FROM aqo_test0 AS t1, aqo_test0 AS t2 +
286- | | WHERE t1.a < 1 AND t1.b < 1 AND t2.c < 1 AND t2.d < 1;
287285 {1} | 2 | EXPLAIN SELECT t1.a, t2.b FROM aqo_test0 AS t1, aqo_test0 AS t2 +
288286 | | WHERE t1.a < 1 AND t1.b < 1 AND t2.c < 1 AND t2.d < 1;
289287 {1} | 2 | EXPLAIN SELECT t1.a, t2.b FROM aqo_test0 AS t1, aqo_test0 AS t2 +
290288 | | WHERE t1.a < 1 AND t1.b < 1 AND t2.c < 1 AND t2.d < 1;
291- {1} | 1 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c +
289+ {1} | 4 | EXPLAIN SELECT t1.a, t2.b FROM aqo_test0 AS t1, aqo_test0 AS t2 +
290+ | | WHERE t1.a < 1 AND t1.b < 1 AND t2.c < 1 AND t2.d < 1;
291+ {1} | 2 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c +
292292 | | FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3 +
293293 | | WHERE t1.a = t2.b AND t2.a = t3.b;
294- {1} |2 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c +
294+ {1} |1 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c +
295295 | | FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3 +
296296 | | WHERE t1.a = t2.b AND t2.a = t3.b;
297297 {1} | 0 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c +
298298 | | FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3 +
299299 | | WHERE t1.a = t2.b AND t2.a = t3.b;
300- {1} |2 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c, t4.a AS d +
300+ {1} |3 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c, t4.a AS d +
301301 | | FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3, aqo_test1 AS t4 +
302302 | | WHERE t1.a = t2.b AND t2.a = t3.b AND t3.a = t4.b;
303- {1} |3 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c, t4.a AS d +
303+ {1} |0 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c, t4.a AS d +
304304 | | FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3, aqo_test1 AS t4 +
305305 | | WHERE t1.a = t2.b AND t2.a = t3.b AND t3.a = t4.b;
306306 {1} | 1 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c, t4.a AS d +
307307 | | FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3, aqo_test1 AS t4 +
308308 | | WHERE t1.a = t2.b AND t2.a = t3.b AND t3.a = t4.b;
309- {1} |0 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c, t4.a AS d +
309+ {1} |2 | EXPLAIN SELECT t1.a AS a, t2.a AS b, t3.a AS c, t4.a AS d +
310310 | | FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3, aqo_test1 AS t4 +
311311 | | WHERE t1.a = t2.b AND t2.a = t3.b AND t3.a = t4.b;
312312(21 rows)
@@ -537,7 +537,8 @@ SELECT * FROM check_estimated_rows('SELECT * FROM aqo_test1;');
537537 20 | 20
538538(1 row)
539539
540- SELECT * FROM check_estimated_rows('SELECT * FROM aqo_test1 AS t1, aqo_test1 AS t2 WHERE t1.a = t2.b');
540+ SELECT * FROM check_estimated_rows('
541+ SELECT * FROM aqo_test1 AS t1, aqo_test1 AS t2 WHERE t1.a = t2.b');
541542 estimated | actual
542543-----------+--------
543544 20 | 19
@@ -553,13 +554,13 @@ SELECT * FROM check_estimated_rows('
553554 SELECT *
554555 FROM aqo_test1 AS t1, aqo_test1 AS t2, aqo_test1 AS t3, aqo_test1 AS t4
555556 WHERE t1.a = t2.b AND t2.a = t3.b AND t3.a = t4.b;
556- ');
557+ '); -- Learn on the query
557558 estimated | actual
558559-----------+--------
559560 20 | 17
560561(1 row)
561562
562- SELECT count(*) FROM -- Learn on the query
563+ SELECT count(*) FROM
563564 (SELECT fspace_hash FROM aqo_data GROUP BY (fspace_hash)) AS q1
564565;
565566 count
@@ -584,15 +585,16 @@ SELECT * FROM check_estimated_rows('SELECT * FROM aqo_test1;');
584585 20 | 20
585586(1 row)
586587
587- SELECT * FROM check_estimated_rows('SELECT * FROM aqo_test1 AS t1, aqo_test1 AS t2 WHERE t1.a = t2.b');
588+ SELECT * FROM check_estimated_rows(
589+ 'SELECT * FROM aqo_test1 AS t1, aqo_test1 AS t2 WHERE t1.a = t2.b');
588590 estimated | actual
589591-----------+--------
590592 19 | 19
591593(1 row)
592594
593595SELECT count(*) FROM
594596 (SELECT fspace_hash FROM aqo_data GROUP BY (fspace_hash)) AS q1
595- ; -- Learn on a query with one join
597+ ; -- Learn on anew query with one join (cardinality of this join AQO extracted from previous 3-join query)
596598 count
597599-------
598600 2