summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2012-03-05 22:33:46 -0800
committerIgor Babaev <igor@askmonty.org>2012-03-05 22:33:46 -0800
commitf92cfdb8a9ff7f8287239c39ce4735789a23e3df (patch)
treeb061853aab5bf095518bb59a53577c22b776a173 /sql/sql_select.cc
parent4ab7a33e1ed3a2bab0a1b309fc488a03d56580c0 (diff)
parent04ee30e75ad31e3cab176df8288dd54b0a4fa23d (diff)
downloadmariadb-git-f92cfdb8a9ff7f8287239c39ce4735789a23e3df.tar.gz
Merge.
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 55fbfae77b7..437833eb90c 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -60,6 +60,7 @@ static bool update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,
static bool sort_and_filter_keyuse(THD *thd, DYNAMIC_ARRAY *keyuse,
bool skip_unprefixed_keyparts);
static int sort_keyuse(KEYUSE *a,KEYUSE *b);
+static bool are_tables_local(JOIN_TAB *jtab, table_map used_tables);
static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
bool allow_full_scan, table_map used_tables);
void best_access_path(JOIN *join, JOIN_TAB *s,
@@ -7262,7 +7263,8 @@ static bool create_hj_key_for_table(JOIN *join, JOIN_TAB *join_tab,
do
{
- if (!(~used_tables & keyuse->used_tables))
+ if (!(~used_tables & keyuse->used_tables) &&
+ are_tables_local(join_tab, keyuse->used_tables))
{
if (first_keyuse)
{
@@ -7275,7 +7277,8 @@ static bool create_hj_key_for_table(JOIN *join, JOIN_TAB *join_tab,
for( ; curr < keyuse; curr++)
{
if (curr->keypart == keyuse->keypart &&
- !(~used_tables & curr->used_tables))
+ !(~used_tables & curr->used_tables) &&
+ are_tables_local(join_tab, curr->used_tables))
break;
}
if (curr == keyuse)
@@ -7306,7 +7309,8 @@ static bool create_hj_key_for_table(JOIN *join, JOIN_TAB *join_tab,
keyuse= org_keyuse;
do
{
- if (!(~used_tables & keyuse->used_tables))
+ if (!(~used_tables & keyuse->used_tables) &&
+ are_tables_local(join_tab, keyuse->used_tables))
{
bool add_key_part= TRUE;
if (!first_keyuse)
@@ -7314,7 +7318,8 @@ static bool create_hj_key_for_table(JOIN *join, JOIN_TAB *join_tab,
for(KEYUSE *curr= org_keyuse; curr < keyuse; curr++)
{
if (curr->keypart == keyuse->keypart &&
- !(~used_tables & curr->used_tables))
+ !(~used_tables & curr->used_tables) &&
+ are_tables_local(join_tab, curr->used_tables))
{
keyuse->keypart= NO_KEYPART;
add_key_part= FALSE;