summaryrefslogtreecommitdiff
path: root/sql/table.h
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2011-12-07 01:03:00 +0400
committerSergey Petrunya <psergey@askmonty.org>2011-12-07 01:03:00 +0400
commit8e25dcfcd7bc1ccf9d65b2f12eba4543ed1bf9f4 (patch)
tree902b1c51f21914d62467f9ec550d9dab22ad1897 /sql/table.h
parent264aaf111d0493f0472e704ad7dda426f81376ea (diff)
downloadmariadb-git-8e25dcfcd7bc1ccf9d65b2f12eba4543ed1bf9f4.tar.gz
BUG#868908: Crash in check_simple_equality() with semijoin + materialization + prepared statement
- Part 1 of the fix: for semi-join merged subqueries, calling child_join->optimize() until we're done with all PS-lifetime optimizations in the parent.
Diffstat (limited to 'sql/table.h')
-rw-r--r--sql/table.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/sql/table.h b/sql/table.h
index 5dd464ac876..376aa9824dc 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -1377,6 +1377,26 @@ struct TABLE_LIST
select_union *derived_result;
/* Stub used for materialized derived tables. */
table_map map; /* ID bit of table (1,2,4,8,16...) */
+ table_map get_map()
+ {
+ return jtbm_subselect? table_map(1) << jtbm_table_no : table->map;
+ }
+ uint get_tablenr()
+ {
+ return jtbm_subselect? jtbm_table_no : table->tablenr;
+ }
+ void set_tablenr(uint new_tablenr)
+ {
+ if (jtbm_subselect)
+ {
+ jtbm_table_no= new_tablenr;
+ }
+ if (table)
+ {
+ table->tablenr= new_tablenr;
+ table->map= table_map(1) << new_tablenr;
+ }
+ }
/*
Reference from aux_tables to local list entry of main select of
multi-delete statement: