@@ -541,19 +541,43 @@ EXPLAIN (COSTS OFF)
541541-- XXX: Do we stuck into an unstable behavior of an error value?
542542-- Live with this variant of the test for some time.
543543SELECT
544- num,
545- to_char(error, '9.99EEEE')::text AS error
546- FROM public.show_cardinality_errors()
547- WHERE error > 0.;
548- num | error
549- -----+-----------
550- 1 | 9.69e+02
551- 2 | 1.15e+02
552- 3 | 3.00e+01
553- 4 | 3.00e+01
554- 5 | 3.00e+01
555- 6 | 1.33e+00
556- (6 rows)
544+ num, to_char(error, '9.99EEEE')::text AS error, query_text
545+ FROM public.show_cardinality_errors(true) cef, aqo_query_texts aqt
546+ WHERE aqt.query_hash = cef.id
547+ ORDER BY (error, md5(query_text)) DESC;
548+ num | error | query_text
549+ -----+-----------+------------------------------------------------------------------------------------------------
550+ 1 | 1.15e+02 | SELECT count(*) FROM t WHERE x < 3 AND mod(x,3) = 1;
551+ 3 | 3.00e+01 | SELECT count(*) FROM (SELECT count(*) FROM t1 GROUP BY (x,y)) AS q1;
552+ 4 | 3.00e+01 | SELECT count(*) FROM (SELECT x, y FROM t1 GROUP BY GROUPING SETS ((x,y), (x), (y), ())) AS q1;
553+ 2 | 3.00e+01 | SELECT count(*) FROM (SELECT count(*) FROM t1 GROUP BY (x,x*y)) AS q1;
554+ 5 | 1.33e+00 | SELECT count(*) FROM (SELECT * FROM t GROUP BY (x) HAVING x > 3) AS q1;
555+ 11 | 0.00e+00 | SELECT * FROM +
556+ | | (SELECT * FROM t WHERE x < 0) AS t0 +
557+ | | JOIN +
558+ | | (SELECT * FROM t WHERE x > 20) AS t1 +
559+ | | USING(x);
560+ 10 | 0.00e+00 | SELECT count(*) FROM t WHERE x = (SELECT avg(x) FROM t t0 WHERE t0.x = t.x);
561+ 12 | 0.00e+00 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) +
562+ | | SELECT count(*) FROM t WHERE +
563+ | | x = (SELECT avg(x) FROM t t0 WHERE t0.x = t.x + 21) OR +
564+ | | x IN (SELECT avg(x) FROM t t0 WHERE t0.x = t.x + 21);
565+ 8 | 0.00e+00 | SELECT count(*) FROM ( +
566+ | | SELECT count(*) AS x FROM ( +
567+ | | SELECT count(*) FROM t1 GROUP BY (x,y) +
568+ | | ) AS q1 +
569+ | | ) AS q2 +
570+ | | WHERE q2.x > 1;
571+ 9 | 0.00e+00 | SELECT count(*) FROM t WHERE x = (SELECT avg(x) FROM t WHERE x = 1);
572+ 6 | 0.00e+00 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) +
573+ | | SELECT count(*) FROM t WHERE (SELECT avg(x) FROM t t0 WHERE t0.x = t.x) = +
574+ | | (SELECT avg(x) FROM t t0 WHERE t0.x = t.x);
575+ 7 | 0.00e+00 | SELECT count(*) FROM +
576+ | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x = t.x)) AS q1 +
577+ | | JOIN +
578+ | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x <> t.x)) AS q2 +
579+ | | ON q1.x = q2.x+1;
580+ (12 rows)
557581
558582DROP TABLE t,t1 CASCADE;
559583SELECT public.clean_aqo_data();
@@ -563,30 +587,13 @@ NOTICE: Cleaning aqo_data records
563587
564588(1 row)
565589
566- --TODO: figure out with remaining queries in the ML storage.
590+ --Look for any remaining queries in the ML storage.
567591SELECT num, to_char(error, '9.99EEEE')::text AS error, query_text
568- FROM public.show_cardinality_errors() cef, aqo_query_texts aqt
592+ FROM public.show_cardinality_errors(true ) cef, aqo_query_texts aqt
569593WHERE aqt.query_hash = cef.id
570594ORDER BY (error, md5(query_text)) DESC;
571- num | error | query_text
572- -----+-----------+-------------------------------------------------------------------------------------------
573- 1 | 9.69e+02 | SELECT str FROM expln(' +
574- | | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) +
575- | | SELECT count(*) FROM +
576- | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x = t.x)) AS q1 +
577- | | JOIN +
578- | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x <> t.x)) AS q2+
579- | | ON q1.x = q2.x+1; +
580- | | ') AS str WHERE str NOT LIKE '%Memory Usage%';
581- 2 | 3.27e+02 | SELECT +
582- | | num, +
583- | | to_char(error, '9.99EEEE')::text AS error +
584- | | FROM public.show_cardinality_errors() +
585- | | WHERE error > 0.;
586- 5 | 0.00e+00 | CREATE TABLE t AS SELECT (gs.* / 50) AS x FROM generate_series(1,1000) AS gs;
587- 4 | 0.00e+00 | SELECT public.clean_aqo_data();
588- 3 | 0.00e+00 | CREATE TABLE t1 AS SELECT mod(gs,10) AS x, mod(gs+1,10) AS y +
589- | | FROM generate_series(1,1000) AS gs;
590- (5 rows)
595+ num | error | query_text
596+ -----+-------+------------
597+ (0 rows)
591598
592599DROP EXTENSION aqo;