diff options
author | evgen@moonbone.local <> | 2006-05-18 00:55:28 +0400 |
---|---|---|
committer | evgen@moonbone.local <> | 2006-05-18 00:55:28 +0400 |
commit | 1d820585ae3d4be335c80b8f59be6dd07b9b227c (patch) | |
tree | 48910fb8a117df90e551cbb46930664c58ad3b21 /sql/item.h | |
parent | 1e6c14d6877506ef0158bd6296cdd3d4b2e69ae9 (diff) | |
download | mariadb-git-1d820585ae3d4be335c80b8f59be6dd07b9b227c.tar.gz |
Fixed bug#19077: A nested materialized derived table is used before being populated.
The convert_constant_item() function converts constant items to ints on
prepare phase to optimize execution speed. In this case it tries to evaluate
subselect which contains a derived table and is contained in a derived table.
All derived tables are filled only after all derived tables are prepared.
So evaluation of subselect with derived table at the prepare phase will
return a wrong result.
A new flag with_subselect is added to the Item class. It indicates that
expression which this item represents is a subselect or contains a subselect.
It is set to 0 by default. It is set to 1 in the Item_subselect constructor
for subselects.
For Item_func and Item_cond derived classes it is set after fixing any argument
in Item_func::fix_fields() and Item_cond::fix_fields accordingly.
The convert_constant_item() function now doesn't convert a constant item
if the with_subselect flag set in it.
Diffstat (limited to 'sql/item.h')
-rw-r--r-- | sql/item.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/item.h b/sql/item.h index 19a57a10720..28b1f54add7 100644 --- a/sql/item.h +++ b/sql/item.h @@ -460,6 +460,9 @@ public: my_bool is_autogenerated_name; /* indicate was name of this Item autogenerated or set by user */ DTCollation collation; + my_bool with_subselect; /* If this item is a subselect or some + of its arguments is or contains a + subselect */ // alloc & destruct is done as start of select using sql_alloc Item(); |