summaryrefslogtreecommitdiff
path: root/mysql-test/r/sum_distinct.result
diff options
context:
space:
mode:
authorunknown <konstantin@oak.local>2003-12-19 19:04:03 +0300
committerunknown <konstantin@oak.local>2003-12-19 19:04:03 +0300
commit58a52a2a84eafe535317a533af56a81d81a8fd56 (patch)
tree951b1a6033c70ae5444a97eb91abce40c599a567 /mysql-test/r/sum_distinct.result
parent844d9b766a70f840641ac0da501c7aa46a586135 (diff)
downloadmariadb-git-58a52a2a84eafe535317a533af56a81d81a8fd56.tar.gz
Implementation of SUM(DISTINCT), tests cases
sql/filesort.cc: Snippet of filesort() code moved to function reuse_freed_buff() - change buffpek pointers to use buff from freed BUFFPEK Used in filesort() and merge_walk(). sql/item_sum.cc: Implementation of Item_sum_sum_distinct - SUM(DISTINCT) item, which uses Unique to resolve duplicates sql/item_sum.h: New sum Item added - Item_sum_sum_distinct - for SUM(DISTINCT) function sql/sql_class.h: added walk() and reset() methods to Unique, used in Item_sum_sum_distinct. sql/sql_sort.h: declaration for reuse_freed_buff() to be able to use it in uniques.cc sql/sql_yacc.yy: parser extended to handle MIN(DISTICNT), MAX(DISTINCT), SUM(DISTINCT) sql/uniques.cc: Implementation for Unique::reset(), Unique::walk() as well as for merge_walk() algorithm.
Diffstat (limited to 'mysql-test/r/sum_distinct.result')
-rw-r--r--mysql-test/r/sum_distinct.result203
1 files changed, 203 insertions, 0 deletions
diff --git a/mysql-test/r/sum_distinct.result b/mysql-test/r/sum_distinct.result
new file mode 100644
index 00000000000..c7f1a660267
--- /dev/null
+++ b/mysql-test/r/sum_distinct.result
@@ -0,0 +1,203 @@
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (
+id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
+gender CHAR(1),
+name VARCHAR(20)
+);
+SELECT SUM(DISTINCT LENGTH(name)) s1 FROM t1;
+s1
+NULL
+INSERT INTO t1 (gender, name) VALUES (NULL, NULL);
+INSERT INTO t1 (gender, name) VALUES (NULL, NULL);
+INSERT INTO t1 (gender, name) VALUES (NULL, NULL);
+SELECT SUM(DISTINCT LENGTH(name)) s1 FROM t1;
+s1
+NULL
+INSERT INTO t1 (gender, name) VALUES ('F', 'Helen'), ('F', 'Anastasia'),
+('F', 'Katherine'), ('F', 'Margo'), ('F', 'Magdalene'), ('F', 'Mary');
+CREATE TABLE t2 SELECT name FROM t1;
+SELECT (SELECT SUM(DISTINCT LENGTH(name)) FROM t1) FROM t2;
+(SELECT SUM(DISTINCT LENGTH(name)) FROM t1)
+18
+18
+18
+18
+18
+18
+18
+18
+18
+DROP TABLE t2;
+INSERT INTO t1 (gender, name) VALUES ('F', 'Eva'), ('F', 'Sofia'),
+('F', 'Sara'), ('F', 'Golda'), ('F', 'Toba'), ('F', 'Victory'),
+('F', 'Faina'), ('F', 'Miriam'), ('F', 'Beki'), ('F', 'America'),
+('F', 'Susan'), ('F', 'Glory'), ('F', 'Priscilla'), ('F', 'Rosmary'),
+('F', 'Rose'), ('F', 'Margareth'), ('F', 'Elizabeth'), ('F', 'Meredith'),
+('F', 'Julie'), ('F', 'Xenia'), ('F', 'Zena'), ('F', 'Olga'),
+('F', 'Brunhilda'), ('F', 'Nataly'), ('F', 'Lara'), ('F', 'Svetlana'),
+('F', 'Grethem'), ('F', 'Irene');
+SELECT
+SUM(DISTINCT LENGTH(name)) s1,
+SUM(DISTINCT SUBSTRING(NAME, 1, 3)) s2,
+SUM(DISTINCT LENGTH(SUBSTRING(name, 1, 4))) s3
+FROM t1;
+s1 s2 s3
+42 0 7
+SELECT
+SUM(DISTINCT LENGTH(g1.name)) s1,
+SUM(DISTINCT SUBSTRING(g2.name, 1, 3)) s2,
+SUM(DISTINCT LENGTH(SUBSTRING(g3.name, 1, 4))) s3
+FROM t1 g1, t1 g2, t1 g3;
+s1 s2 s3
+42 0 7
+SELECT
+SUM(DISTINCT LENGTH(g1.name)) s1,
+SUM(DISTINCT SUBSTRING(g2.name, 1, 3)) s2,
+SUM(DISTINCT LENGTH(SUBSTRING(g3.name, 1, 4))) s3
+FROM t1 g1, t1 g2, t1 g3 GROUP BY LENGTH(SUBSTRING(g3.name, 5, 10));
+s1 s2 s3
+42 0 NULL
+42 0 7
+42 0 4
+42 0 4
+42 0 4
+42 0 4
+42 0 4
+SELECT SQL_BUFFER_RESULT
+SUM(DISTINCT LENGTH(name)) s1,
+SUM(DISTINCT SUBSTRING(NAME, 1, 3)) s2,
+SUM(DISTINCT LENGTH(SUBSTRING(name, 1, 4))) s3
+FROM t1;
+s1 s2 s3
+42 0 7
+SELECT SQL_BUFFER_RESULT
+SUM(DISTINCT LENGTH(g1.name)) s1,
+SUM(DISTINCT SUBSTRING(g2.name, 1, 3)) s2,
+SUM(DISTINCT LENGTH(SUBSTRING(g3.name, 1, 4))) s3
+FROM t1 g1, t1 g2, t1 g3 GROUP BY LENGTH(SUBSTRING(g3.name, 5, 10));
+s1 s2 s3
+42 0 NULL
+42 0 7
+42 0 4
+42 0 4
+42 0 4
+42 0 4
+42 0 4
+SET @l=1;
+UPDATE t1 SET name=CONCAT(name, @l:=@l+1);
+SELECT SUM(DISTINCT RIGHT(name, 1)) FROM t1;
+SUM(DISTINCT RIGHT(name, 1))
+45
+SELECT SUM(DISTINCT id) FROM t1;
+SUM(DISTINCT id)
+703
+SELECT SUM(DISTINCT id % 11) FROM t1;
+SUM(DISTINCT id % 11)
+55
+DROP TABLE t1;
+CREATE TABLE t1 (id INTEGER);
+CREATE TABLE t2 (id INTEGER);
+INSERT INTO t1 (id) VALUES (1), (1), (1),(1);
+INSERT INTO t2 (id) SELECT id FROM t1;
+INSERT INTO t1 (id) SELECT id FROM t2;
+/* 8 */
+INSERT INTO t1 (id) SELECT id FROM t2;
+/* 12 */
+INSERT INTO t1 (id) SELECT id FROM t2;
+/* 16 */
+INSERT INTO t1 (id) SELECT id FROM t2;
+/* 20 */
+INSERT INTO t1 (id) SELECT id FROM t2;
+/* 24 */
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+1 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+2 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+4 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+8 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+16 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+32 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+64 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+128 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+256 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+512 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+1024 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+2048 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+4096 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 (id) SELECT id+8192 FROM t1;
+INSERT INTO t1 SELECT id FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
+SELECT SUM(DISTINCT id) sm FROM t1;
+sm
+134225920
+SELECT SUM(DISTINCT id) sm FROM t2;
+sm
+134225920
+SELECT SUM(DISTINCT id) sm FROM t1 group by id % 13;
+sm
+10327590
+10328851
+10330112
+10331373
+10332634
+10317510
+10318770
+10320030
+10321290
+10322550
+10323810
+10325070
+10326330
+SET max_heap_table_size=16384;
+SHOW variables LIKE 'max_heap_table_size';
+Variable_name Value
+max_heap_table_size 16384
+SELECT SUM(DISTINCT id) sm FROM t1;
+sm
+134225920
+SELECT SUM(DISTINCT id) sm FROM t2;
+sm
+134225920
+SELECT SUM(DISTINCT id) sm FROM t1 GROUP BY id % 13;
+sm
+10327590
+10328851
+10330112
+10331373
+10332634
+10317510
+10318770
+10320030
+10321290
+10322550
+10323810
+10325070
+10326330
+DROP TABLE t1;
+DROP TABLE t2;