summaryrefslogtreecommitdiff
path: root/sql/sql_derived.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2018-01-23 20:49:31 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2018-01-23 20:49:31 +0200
commitc93405b7153df01362f9869bac7c2e305dd06af9 (patch)
tree8043dec44994d714d28873d30d15e81ef3f040e7 /sql/sql_derived.cc
parentbe21a113da9748d06739b6522ea898257970b1c5 (diff)
parent8637931f118b53ff6fdadf6006ccdb8dedd6f732 (diff)
downloadmariadb-git-10.0-merge.tar.gz
WIP Merge 5.5 into bb-10.0-vicentiu10.0-merge
Unresolved conflicts: both modified: sql/item_cmpfunc.cc both modified: sql/item_cmpfunc.h both modified: sql/sql_partition.cc both modified: storage/tokudb/CMakeLists.txt
Diffstat (limited to 'sql/sql_derived.cc')
-rw-r--r--sql/sql_derived.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index e9928572142..7ad0b4b4c69 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -367,7 +367,11 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
derived->get_unit()));
if (derived->merged)
+ {
+
+ DBUG_PRINT("info", ("Irreversibly merged: exit"));
DBUG_RETURN(FALSE);
+ }
if (dt_select->uncacheable & UNCACHEABLE_RAND)
{
@@ -678,6 +682,17 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
unit->derived= derived;
+ /*
+ Above cascade call of prepare is important for PS protocol, but after it
+ is called we can check if we really need prepare for this derived
+ */
+ if (derived->merged)
+ {
+ DBUG_PRINT("info", ("Irreversibly merged: exit"));
+ DBUG_RETURN(FALSE);
+ }
+
+
derived->fill_me= FALSE;
if (!(derived->derived_result= new select_union))
@@ -807,6 +822,11 @@ bool mysql_derived_optimize(THD *thd, LEX *lex, TABLE_LIST *derived)
DBUG_PRINT("enter", ("Alias: '%s' Unit: %p",
(derived->alias ? derived->alias : "<NULL>"),
derived->get_unit()));
+ if (derived->merged)
+ {
+ DBUG_PRINT("info", ("Irreversibly merged: exit"));
+ DBUG_RETURN(FALSE);
+ }
if (unit->optimized)
DBUG_RETURN(FALSE);