summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <jani@rhols221.adsl.netsonic.fi>2004-01-29 01:16:24 +0200
committerunknown <jani@rhols221.adsl.netsonic.fi>2004-01-29 01:16:24 +0200
commit735eab8a07ab7097ce46bc1be692c5a92a278d24 (patch)
tree7decb199e3be93935d478081d28ccce1827cc3fe /mysql-test
parent96abffd4a4d6562a2cf3e0b55eb2c478739e3083 (diff)
downloadmariadb-git-735eab8a07ab7097ce46bc1be692c5a92a278d24.tar.gz
Fixed Bug#2479, "dependant subquery with limit crash".
The problem was that memory was free'd, but it was referenced later. This free was unneccessary anyway, because join_free() / JOIN::cleanup takes care of this later on. Added test case into t/subselect.test for it. Regards, Jani mysql-test/r/subselect.result: Added a test case for Bug#2479. mysql-test/t/subselect.test: Added a test case for Bug#2479. sql/sql_select.cc: Fixed Bug#2479, "dependant subquery with limit crash". The problem was that memory was free'd, but it was referenced later. This free was unneccessary anyway, because join_free() / JOIN::cleanup takes care of this later on.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/subselect.result47
-rw-r--r--mysql-test/t/subselect.test54
2 files changed, 101 insertions, 0 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
index ded98265a1c..a398b13498b 100644
--- a/mysql-test/r/subselect.result
+++ b/mysql-test/r/subselect.result
@@ -1578,3 +1578,50 @@ select * from t1;
a b
1 0.123
drop table t1;
+CREATE TABLE tab_01 (
+id int(11) NOT NULL auto_increment,
+ts timestamp NOT NULL,
+id_cns tinyint(3) unsigned NOT NULL default '0',
+id_desc_nota int(11) NOT NULL default '1',
+id_publ_uff int(11) NOT NULL default '0',
+tipo enum('','UNO','DUE') NOT NULL default '',
+f_aggiunte set('TRE','TRETRE','QUATTRO','CINQUE','SEI','SETTE') NOT NULL
+default '',
+anno_dep smallint(4) unsigned zerofill NOT NULL default '0000',
+data_dep smallint(4) unsigned zerofill NOT NULL default '0000',
+particolare mediumint(8) unsigned NOT NULL default '0',
+generale mediumint(8) unsigned NOT NULL default '0',
+bis tinyint(3) unsigned NOT NULL default '0',
+PRIMARY KEY(id),
+UNIQUE KEY idx_cns_gen_anno (anno_dep,id_cns,generale,particolare),
+UNIQUE KEY idx_cns_par_anno (id_cns,anno_dep,tipo,particolare,bis)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=1;
+INSERT INTO tab_01 (id, ts, id_cns, id_desc_nota, id_publ_uff, tipo, f_aggiunte,
+anno_dep, data_dep, particolare, generale, bis) VALUES
+(NULL, NULL, 16, 29, 622, 'UNO', '', 1987, 1218, 2048, 9681, 0),
+(NULL, NULL, 50, 23, 1717, 'UNO', '', 1987, 1126, 1536, 13987, 0),
+(NULL, NULL, 16, 123, 123, 'UNO', '', 1987, 1221, 2432, 14594, 0),
+(NULL, NULL, 16, 124, 124, 'UNO', '', 1987, 1201, 1792, 13422, 0),
+(NULL, NULL, 16, 125, 125, 'UNO', '', 1987, 0723, 1025, 10240, 0),
+(NULL, NULL, 16, 126, 126, 'UNO', '', 1987, 1204, 1026, 7089, 0);
+CREATE TABLE tab_02 (
+id tinyint(3) unsigned NOT NULL auto_increment,
+descr varchar(40) NOT NULL default '',
+f_servizi set('UNO','DUE') NOT NULL default '',
+data_uno_min int(8) unsigned NOT NULL default '0',
+data_due_min int(8) unsigned NOT NULL default '0',
+max_anno_dep smallint(6) unsigned NOT NULL default '0',
+data_agg int(8) unsigned NOT NULL default '0',
+PRIMARY KEY (id)
+);
+INSERT INTO tab_02 (id, descr, f_servizi, data_uno_min, data_due_min,
+max_anno_dep, data_agg) VALUES
+(16, 'C_UNO', 'UNO,DUE', 19000000, 30000000, 1987, 0),
+(50, 'C_TRE', 'UNO', 19000000, 30000000, 1990, 0);
+SELECT cns.max_anno_dep = (SELECT s.anno_dep FROM tab_01 AS s WHERE
+s.id_cns = cns.id ORDER BY s.anno_dep DESC LIMIT 1) AS PIPPO FROM
+tab_02 AS cns;
+PIPPO
+1
+NULL
+DROP TABLE tab_01, tab_02;
diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test
index 37dbc8f24d9..55ca8afe7fd 100644
--- a/mysql-test/t/subselect.test
+++ b/mysql-test/t/subselect.test
@@ -1021,3 +1021,57 @@ delete from t1;
load data infile "subselect.out.file.1" into table t1;
select * from t1;
drop table t1;
+
+#
+# Bug 2479
+#
+
+CREATE TABLE tab_01 (
+id int(11) NOT NULL auto_increment,
+ts timestamp NOT NULL,
+id_cns tinyint(3) unsigned NOT NULL default '0',
+id_desc_nota int(11) NOT NULL default '1',
+id_publ_uff int(11) NOT NULL default '0',
+tipo enum('','UNO','DUE') NOT NULL default '',
+f_aggiunte set('TRE','TRETRE','QUATTRO','CINQUE','SEI','SETTE') NOT NULL
+default '',
+anno_dep smallint(4) unsigned zerofill NOT NULL default '0000',
+data_dep smallint(4) unsigned zerofill NOT NULL default '0000',
+particolare mediumint(8) unsigned NOT NULL default '0',
+generale mediumint(8) unsigned NOT NULL default '0',
+bis tinyint(3) unsigned NOT NULL default '0',
+PRIMARY KEY(id),
+UNIQUE KEY idx_cns_gen_anno (anno_dep,id_cns,generale,particolare),
+UNIQUE KEY idx_cns_par_anno (id_cns,anno_dep,tipo,particolare,bis)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=1;
+
+INSERT INTO tab_01 (id, ts, id_cns, id_desc_nota, id_publ_uff, tipo, f_aggiunte,
+anno_dep, data_dep, particolare, generale, bis) VALUES
+(NULL, NULL, 16, 29, 622, 'UNO', '', 1987, 1218, 2048, 9681, 0),
+(NULL, NULL, 50, 23, 1717, 'UNO', '', 1987, 1126, 1536, 13987, 0),
+(NULL, NULL, 16, 123, 123, 'UNO', '', 1987, 1221, 2432, 14594, 0),
+(NULL, NULL, 16, 124, 124, 'UNO', '', 1987, 1201, 1792, 13422, 0),
+(NULL, NULL, 16, 125, 125, 'UNO', '', 1987, 0723, 1025, 10240, 0),
+(NULL, NULL, 16, 126, 126, 'UNO', '', 1987, 1204, 1026, 7089, 0);
+
+CREATE TABLE tab_02 (
+id tinyint(3) unsigned NOT NULL auto_increment,
+descr varchar(40) NOT NULL default '',
+f_servizi set('UNO','DUE') NOT NULL default '',
+data_uno_min int(8) unsigned NOT NULL default '0',
+data_due_min int(8) unsigned NOT NULL default '0',
+max_anno_dep smallint(6) unsigned NOT NULL default '0',
+data_agg int(8) unsigned NOT NULL default '0',
+PRIMARY KEY (id)
+);
+
+INSERT INTO tab_02 (id, descr, f_servizi, data_uno_min, data_due_min,
+max_anno_dep, data_agg) VALUES
+(16, 'C_UNO', 'UNO,DUE', 19000000, 30000000, 1987, 0),
+(50, 'C_TRE', 'UNO', 19000000, 30000000, 1990, 0);
+
+SELECT cns.max_anno_dep = (SELECT s.anno_dep FROM tab_01 AS s WHERE
+s.id_cns = cns.id ORDER BY s.anno_dep DESC LIMIT 1) AS PIPPO FROM
+tab_02 AS cns;
+
+DROP TABLE tab_01, tab_02;