diff options
author | unknown <bell@sanja.is.com.ua> | 2002-11-13 01:14:56 +0200 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2002-11-13 01:14:56 +0200 |
commit | 0c59356895585b379a599345547c570233c93d50 (patch) | |
tree | a1f7b17163be83ea708b28d561a13f9c9f21cc83 | |
parent | ccf7226c2759bf6549c2cdd615ef55e95318520b (diff) | |
parent | 2707f00cdba45e7112f03acb264ad3e7460df0ed (diff) | |
download | mariadb-git-0c59356895585b379a599345547c570233c93d50.tar.gz |
Merge sanja.is.com.ua:/home/bell/mysql/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/work-crash-4.1
-rw-r--r-- | mysql-test/r/subselect.result | 14 | ||||
-rw-r--r-- | mysql-test/t/subselect.test | 16 | ||||
-rw-r--r-- | sql/item_subselect.cc | 2 | ||||
-rw-r--r-- | sql/item_subselect.h | 3 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
5 files changed, 32 insertions, 5 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index 0d3617b7512..77499625bcd 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -236,6 +236,9 @@ CREATE TABLE `searchconthardwarefr7` ( PRIMARY KEY (`mot`,`pseudo`,`date`,`topic`) ) TYPE=MyISAM ROW_FORMAT=DYNAMIC; INSERT INTO searchconthardwarefr7 (mot,topic,date,pseudo) VALUES ('joce','40143','2002-10-22','joce'), ('joce','43506','2002-10-22','joce'); +select numeropost as a FROM forumconthardwarefr7 GROUP BY (SELECT 1 FROM forumconthardwarefr7 HAVING a=1); +a +40143 SELECT numeropost,maxnumrep FROM forumconthardwarefr7 WHERE exists (SELECT 1 FROM searchconthardwarefr7 WHERE (mot='joce') AND date >= '2002-10-21' AND forumconthardwarefr7.numeropost = searchconthardwarefr7.topic) ORDER BY maxnumrep DESC LIMIT 0, 20; numeropost maxnumrep 43506 2 @@ -243,3 +246,14 @@ numeropost maxnumrep SELECT (SELECT 1) as a FROM (SELECT 1 FROM forumconthardwarefr7 HAVING a=1); Unknown column 'a' in 'having clause' drop table forumconthardwarefr7, searchconthardwarefr7; +drop table if exists forumconthardwarefr7; +CREATE TABLE `forumconthardwarefr7` ( +`numeropost` mediumint(8) unsigned NOT NULL auto_increment, +`maxnumrep` int(10) unsigned NOT NULL default '0', +PRIMARY KEY (`numeropost`), +UNIQUE KEY `maxnumrep` (`maxnumrep`) +) TYPE=MyISAM ROW_FORMAT=FIXED; +INSERT INTO forumconthardwarefr7 (numeropost,maxnumrep) VALUES (1,0),(2,1); +select numeropost as a FROM forumconthardwarefr7 GROUP BY (SELECT 1 FROM forumconthardwarefr7 HAVING a=1); +Subselect returns more than 1 record +drop table if exists forumconthardwarefr7; diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index 93ad115155e..1ee9881c404 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -135,9 +135,21 @@ CREATE TABLE `searchconthardwarefr7` ( ) TYPE=MyISAM ROW_FORMAT=DYNAMIC; INSERT INTO searchconthardwarefr7 (mot,topic,date,pseudo) VALUES ('joce','40143','2002-10-22','joce'), ('joce','43506','2002-10-22','joce'); - +select numeropost as a FROM forumconthardwarefr7 GROUP BY (SELECT 1 FROM forumconthardwarefr7 HAVING a=1); SELECT numeropost,maxnumrep FROM forumconthardwarefr7 WHERE exists (SELECT 1 FROM searchconthardwarefr7 WHERE (mot='joce') AND date >= '2002-10-21' AND forumconthardwarefr7.numeropost = searchconthardwarefr7.topic) ORDER BY maxnumrep DESC LIMIT 0, 20; -- error 1054 SELECT (SELECT 1) as a FROM (SELECT 1 FROM forumconthardwarefr7 HAVING a=1); +drop table forumconthardwarefr7, searchconthardwarefr7; -drop table forumconthardwarefr7, searchconthardwarefr7;
\ No newline at end of file +drop table if exists forumconthardwarefr7; +CREATE TABLE `forumconthardwarefr7` ( + `numeropost` mediumint(8) unsigned NOT NULL auto_increment, + `maxnumrep` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`numeropost`), + UNIQUE KEY `maxnumrep` (`maxnumrep`) +) TYPE=MyISAM ROW_FORMAT=FIXED; + +INSERT INTO forumconthardwarefr7 (numeropost,maxnumrep) VALUES (1,0),(2,1); +-- error 1240 +select numeropost as a FROM forumconthardwarefr7 GROUP BY (SELECT 1 FROM forumconthardwarefr7 HAVING a=1); +drop table if exists forumconthardwarefr7;
\ No newline at end of file diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 703173b191c..37c85501b06 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -33,7 +33,7 @@ SUBSELECT TODO: #include "sql_select.h" Item_subselect::Item_subselect(): - Item(), engine_owner(1), value_assigned(0) + Item_result_field(), engine_owner(1), value_assigned(0) { assign_null(); /* diff --git a/sql/item_subselect.h b/sql/item_subselect.h index 33f82982708..58726f16ba9 100644 --- a/sql/item_subselect.h +++ b/sql/item_subselect.h @@ -28,7 +28,7 @@ class subselect_engine; /* base class for subselects */ -class Item_subselect :public Item +class Item_subselect :public Item_result_field { my_bool engine_owner; /* Is this item owner of engine */ my_bool value_assigned; /* value already assigned to subselect */ @@ -116,6 +116,7 @@ public: Item *new_item() { return new Item_singleval_subselect(this); } enum Item_result result_type() const { return res_type; } void fix_length_and_dec(); + friend class select_singleval_subselect; }; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index ecf06f0971a..1d1c4656508 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -4528,7 +4528,7 @@ do_select(JOIN *join,List<Item> *fields,TABLE *table,Procedure *procedure) if (error == -1) table->file->print_error(my_errno,MYF(0)); } - DBUG_RETURN(error); + DBUG_RETURN(error || join->thd->net.report_error); } |