diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2011-12-07 01:03:00 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2011-12-07 01:03:00 +0400 |
commit | 8e25dcfcd7bc1ccf9d65b2f12eba4543ed1bf9f4 (patch) | |
tree | 902b1c51f21914d62467f9ec550d9dab22ad1897 /sql/table.h | |
parent | 264aaf111d0493f0472e704ad7dda426f81376ea (diff) | |
download | mariadb-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.h | 20 |
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: |