From 102cec14653cf1bacbcff81eee9b726a85c145b1 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 12 Oct 2002 01:09:47 +0300 Subject: [PATCH] fixed subselect * bug mysql-test/r/subselect.result: test of subselect * bug mysql-test/t/subselect.test: test of subselect * bug --- mysql-test/r/subselect.result | 6 ++++++ mysql-test/t/subselect.test | 6 ++++++ 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; }