summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2002-10-08 23:49:59 +0300
committerunknown <bell@sanja.is.com.ua>2002-10-08 23:49:59 +0300
commitac97cce4617a52d100cb2b5fa6c6c972c3510702 (patch)
tree71154ef484f41fba7f785d13f291e3838104779f
parent58dc03066c8b8c38cdfa47e1f3c99ee002551b4f (diff)
downloadmariadb-git-ac97cce4617a52d100cb2b5fa6c6c972c3510702.tar.gz
removed 'this' pointer from initialization list of constructors
-rw-r--r--sql/item_subselect.cc29
-rw-r--r--sql/item_subselect.h11
2 files changed, 27 insertions, 13 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index e8ee6a780ea..2d08b9cb6b5 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -32,11 +32,22 @@ SUBSELECT TODO:
#include "mysql_priv.h"
#include "sql_select.h"
-Item_subselect::Item_subselect(THD *thd, st_select_lex *select_lex,
- select_subselect *result):
+Item_subselect::Item_subselect():
Item(), engine_owner(1), value_assigned(0)
{
- DBUG_ENTER("Item_subselect::Item_subselect");
+ assign_null();
+ /*
+ item value is NULL if select_subselect not changed this value
+ (i.e. some rows will be found returned)
+ */
+ null_value= 1;
+}
+
+void Item_subselect::init(THD *thd, st_select_lex *select_lex,
+ select_subselect *result)
+{
+
+ DBUG_ENTER("Item_subselect::init");
DBUG_PRINT("subs", ("select_lex 0x%xl", (long) select_lex));
if (select_lex->next_select())
@@ -45,12 +56,6 @@ Item_subselect::Item_subselect(THD *thd, st_select_lex *select_lex,
else
engine= new subselect_single_select_engine(thd, select_lex, result,
this);
- assign_null();
- /*
- item value is NULL if select_subselect not changed this value
- (i.e. some rows will be found returned)
- */
- null_value= 1;
DBUG_VOID_RETURN;
}
@@ -100,8 +105,9 @@ inline table_map Item_subselect::used_tables() const
Item_singleval_subselect::Item_singleval_subselect(THD *thd,
st_select_lex *select_lex):
- Item_subselect(thd, select_lex, new select_singleval_subselect(this))
+ Item_subselect()
{
+ init(thd, select_lex, new select_singleval_subselect(this));
max_columns= 1;
maybe_null= 1;
}
@@ -149,8 +155,9 @@ String *Item_singleval_subselect::val_str (String *str)
Item_exists_subselect::Item_exists_subselect(THD *thd,
st_select_lex *select_lex):
- Item_subselect(thd, select_lex, new select_exists_subselect(this))
+ Item_subselect()
{
+ init(thd, select_lex, new select_exists_subselect(this));
max_columns= UINT_MAX;
null_value= 0; //can't be NULL
maybe_null= 0; //can't be NULL
diff --git a/sql/item_subselect.h b/sql/item_subselect.h
index 92839eb0e5f..5d070871b49 100644
--- a/sql/item_subselect.h
+++ b/sql/item_subselect.h
@@ -39,8 +39,7 @@ protected:
uint max_columns;
public:
- Item_subselect(THD *thd, st_select_lex *select_lex,
- select_subselect* result);
+ Item_subselect();
Item_subselect(Item_subselect *item)
{
null_value= item->null_value;
@@ -50,6 +49,14 @@ public:
engine_owner= 0;
name= item->name;
}
+
+ /*
+ We need this method, because some compilers do not allow 'this'
+ pointer in constructor initialization list, but we need pass pointer
+ to subselect Item class to select_subselect classes constructor.
+ */
+ void init (THD *thd, st_select_lex *select_lex, select_subselect *result);
+
~Item_subselect();
virtual void assign_null()
{