diff options
author | unknown <bell@sanja.is.com.ua> | 2002-10-12 01:09:47 +0300 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2002-10-12 01:09:47 +0300 |
commit | 102cec14653cf1bacbcff81eee9b726a85c145b1 (patch) | |
tree | 37175dfa8da72a1dae48da3003e88381f45d4592 | |
parent | 261c22a87a7214264b67eed7fb12608baafdfbc4 (diff) | |
download | mariadb-git-102cec14653cf1bacbcff81eee9b726a85c145b1.tar.gz |
fixed subselect * bug
mysql-test/r/subselect.result:
test of subselect * bug
mysql-test/t/subselect.test:
test of subselect * bug
-rw-r--r-- | mysql-test/r/subselect.result | 6 | ||||
-rw-r--r-- | mysql-test/t/subselect.test | 6 | ||||
-rw-r--r-- | sql/item_subselect.cc | 14 |
3 files changed, 20 insertions, 6 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index 1ea59677c6e..6ea2a7ab3cf 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -159,6 +159,12 @@ UNIQUE KEY `email` (`email`) INSERT INTO inscrit (pseudo,email) VALUES ('joce','test'); INSERT INTO inscrit (pseudo,email) VALUES ('joce1','test1'); INSERT INTO inscrit (pseudo,email) VALUES ('2joce1','2test1'); +SELECT pseudo FROM inscrit WHERE pseudo=(SELECT pseudo,email FROM +inscrit WHERE pseudo='joce'); +Subselect returns more than 1 field +SELECT pseudo FROM inscrit WHERE pseudo=(SELECT * FROM inscrit WHERE +pseudo='joce'); +Subselect returns more than 1 field SELECT pseudo FROM inscrit WHERE pseudo=(SELECT pseudo FROM inscrit WHERE pseudo='joce'); pseudo joce diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index 6b3401383c8..37f68a3c4cb 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -82,6 +82,12 @@ CREATE TABLE `inscrit` ( INSERT INTO inscrit (pseudo,email) VALUES ('joce','test'); INSERT INTO inscrit (pseudo,email) VALUES ('joce1','test1'); INSERT INTO inscrit (pseudo,email) VALUES ('2joce1','2test1'); +-- error 1239 +SELECT pseudo FROM inscrit WHERE pseudo=(SELECT pseudo,email FROM +inscrit WHERE pseudo='joce'); +-- error 1239 +SELECT pseudo FROM inscrit WHERE pseudo=(SELECT * FROM inscrit WHERE +pseudo='joce'); SELECT pseudo FROM inscrit WHERE pseudo=(SELECT pseudo FROM inscrit WHERE pseudo='joce'); -- error 1240 SELECT pseudo FROM inscrit WHERE pseudo=(SELECT pseudo FROM inscrit WHERE pseudo LIKE '%joce%'); diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 26cc376739a..cd4403ad0b8 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -81,15 +81,17 @@ void Item_subselect::make_field (Send_field *tmp_field) bool Item_subselect::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) { - // Is it one field subselect? - if (engine->cols() > max_columns) - { - my_message(ER_SUBSELECT_NO_1_COL, ER(ER_SUBSELECT_NO_1_COL), MYF(0)); - return 1; - } int res= engine->prepare(); if (!res) + { + // Is it one field subselect? + if (engine->cols() > max_columns) + { + my_message(ER_SUBSELECT_NO_1_COL, ER(ER_SUBSELECT_NO_1_COL), MYF(0)); + return 1; + } fix_length_and_dec(); + } return res; } |