summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2002-11-13 01:14:56 +0200
committerunknown <bell@sanja.is.com.ua>2002-11-13 01:14:56 +0200
commit0c59356895585b379a599345547c570233c93d50 (patch)
treea1f7b17163be83ea708b28d561a13f9c9f21cc83
parentccf7226c2759bf6549c2cdd615ef55e95318520b (diff)
parent2707f00cdba45e7112f03acb264ad3e7460df0ed (diff)
downloadmariadb-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.result14
-rw-r--r--mysql-test/t/subselect.test16
-rw-r--r--sql/item_subselect.cc2
-rw-r--r--sql/item_subselect.h3
-rw-r--r--sql/sql_select.cc2
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);
}