@@ -557,52 +557,59 @@ EXPLAIN (COSTS OFF)
557
557
-- XXX: Do we stuck into an unstable behavior of an error value?
558
558
-- Live with this variant of the test for some time.
559
559
SELECT
560
- num,
561
- to_char(error, '9.99EEEE')::text AS error
562
- FROM public.show_cardinality_errors()
563
- WHERE error > 0.;
564
- num | error
565
- -----+-----------
566
- 1 | 9.69e+02
567
- 2 | 1.15e+02
568
- 3 | 3.00e+01
569
- 4 | 3.00e+01
570
- 5 | 3.00e+01
571
- 6 | 1.33e+00
572
- (6 rows)
560
+ num, to_char(error, '9.99EEEE')::text AS error, query_text
561
+ FROM public.show_cardinality_errors(true) cef, aqo_query_texts aqt
562
+ WHERE aqt.query_hash = cef.id
563
+ ORDER BY (error, md5(query_text)) DESC;
564
+ num | error | query_text
565
+ -----+-----------+------------------------------------------------------------------------------------------------
566
+ 1 | 1.15e+02 | SELECT count(*) FROM t WHERE x < 3 AND mod(x,3) = 1;
567
+ 3 | 3.00e+01 | SELECT count(*) FROM (SELECT count(*) FROM t1 GROUP BY (x,y)) AS q1;
568
+ 4 | 3.00e+01 | SELECT count(*) FROM (SELECT x, y FROM t1 GROUP BY GROUPING SETS ((x,y), (x), (y), ())) AS q1;
569
+ 2 | 3.00e+01 | SELECT count(*) FROM (SELECT count(*) FROM t1 GROUP BY (x,x*y)) AS q1;
570
+ 5 | 1.33e+00 | SELECT count(*) FROM (SELECT * FROM t GROUP BY (x) HAVING x > 3) AS q1;
571
+ 11 | 0.00e+00 | SELECT * FROM +
572
+ | | (SELECT * FROM t WHERE x < 0) AS t0 +
573
+ | | JOIN +
574
+ | | (SELECT * FROM t WHERE x > 20) AS t1 +
575
+ | | USING(x);
576
+ 10 | 0.00e+00 | SELECT count(*) FROM t WHERE x = (SELECT avg(x) FROM t t0 WHERE t0.x = t.x);
577
+ 12 | 0.00e+00 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) +
578
+ | | SELECT count(*) FROM t WHERE +
579
+ | | x = (SELECT avg(x) FROM t t0 WHERE t0.x = t.x + 21) OR +
580
+ | | x IN (SELECT avg(x) FROM t t0 WHERE t0.x = t.x + 21);
581
+ 8 | 0.00e+00 | SELECT count(*) FROM ( +
582
+ | | SELECT count(*) AS x FROM ( +
583
+ | | SELECT count(*) FROM t1 GROUP BY (x,y) +
584
+ | | ) AS q1 +
585
+ | | ) AS q2 +
586
+ | | WHERE q2.x > 1;
587
+ 9 | 0.00e+00 | SELECT count(*) FROM t WHERE x = (SELECT avg(x) FROM t WHERE x = 1);
588
+ 6 | 0.00e+00 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) +
589
+ | | SELECT count(*) FROM t WHERE (SELECT avg(x) FROM t t0 WHERE t0.x = t.x) = +
590
+ | | (SELECT avg(x) FROM t t0 WHERE t0.x = t.x);
591
+ 7 | 0.00e+00 | SELECT count(*) FROM +
592
+ | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x = t.x)) AS q1 +
593
+ | | JOIN +
594
+ | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x <> t.x)) AS q2 +
595
+ | | ON q1.x = q2.x+1;
596
+ (12 rows)
573
597
574
598
DROP TABLE t,t1 CASCADE;
575
599
SELECT public.clean_aqo_data();
576
600
NOTICE: Cleaning aqo_data records
577
- clean_aqo_data
601
+ clean_aqo_data
578
602
----------------
579
-
603
+
580
604
(1 row)
581
605
582
- -- TODO: figure out with remaining queries in the ML storage.
606
+ -- Look for any remaining queries in the ML storage.
583
607
SELECT num, to_char(error, '9.99EEEE')::text AS error, query_text
584
- FROM public.show_cardinality_errors() cef, aqo_query_texts aqt
608
+ FROM public.show_cardinality_errors(true ) cef, aqo_query_texts aqt
585
609
WHERE aqt.query_hash = cef.id
586
610
ORDER BY (error, md5(query_text)) DESC;
587
- num | error | query_text
588
- -----+-----------+-------------------------------------------------------------------------------------------
589
- 1 | 9.69e+02 | SELECT str FROM expln(' +
590
- | | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) +
591
- | | SELECT count(*) FROM +
592
- | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x = t.x)) AS q1 +
593
- | | JOIN +
594
- | | (SELECT * FROM t WHERE x % 3 < (SELECT avg(x) FROM t t0 WHERE t0.x <> t.x)) AS q2+
595
- | | ON q1.x = q2.x+1; +
596
- | | ') AS str WHERE str NOT LIKE '%Memory Usage%';
597
- 2 | 3.27e+02 | SELECT +
598
- | | num, +
599
- | | to_char(error, '9.99EEEE')::text AS error +
600
- | | FROM public.show_cardinality_errors() +
601
- | | WHERE error > 0.;
602
- 5 | 0.00e+00 | CREATE TABLE t AS SELECT (gs.* / 50) AS x FROM generate_series(1,1000) AS gs;
603
- 4 | 0.00e+00 | SELECT public.clean_aqo_data();
604
- 3 | 0.00e+00 | CREATE TABLE t1 AS SELECT mod(gs,10) AS x, mod(gs+1,10) AS y +
605
- | | FROM generate_series(1,1000) AS gs;
606
- (5 rows)
611
+ num | error | query_text
612
+ -----+-------+------------
613
+ (0 rows)
607
614
608
615
DROP EXTENSION aqo;
0 commit comments