summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authormonty@mashka.mysql.fi <>2003-08-15 09:54:19 +0300
committermonty@mashka.mysql.fi <>2003-08-15 09:54:19 +0300
commita9146ace70a6bc56be969dc55830a875864bbd78 (patch)
tree8af6b315e91238a5e5102bbf069129cfc58554b0 /sql
parentfb47e642568139a58d8ac5598d9897fdb3ff1fa0 (diff)
downloadmariadb-git-a9146ace70a6bc56be969dc55830a875864bbd78.tar.gz
Cleanups to recent patches
Fix packet error when using wrong GRANT command
Diffstat (limited to 'sql')
-rw-r--r--sql/opt_range.cc3
-rw-r--r--sql/sql_acl.cc2
-rw-r--r--sql/sql_select.cc10
3 files changed, 11 insertions, 4 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index c7bad3b18f3..349a5d0271c 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -798,7 +798,8 @@ static SEL_TREE *get_mm_tree(PARAM *param,COND *cond)
table_map ref_tables=cond->used_tables();
if (cond->type() != Item::FUNC_ITEM)
{ // Should be a field
- if (ref_tables & param->current_table)
+ if ((ref_tables & param->current_table) ||
+ (ref_tables & ~(param->prev_tables | param->read_tables)))
DBUG_RETURN(0);
DBUG_RETURN(new SEL_TREE(SEL_TREE::MAYBE));
}
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 6df778c997b..83cd2c7d2b4 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -2370,7 +2370,7 @@ int mysql_grant (THD *thd, const char *db, List <LEX_USER> &list,
else
{
net_printf(&thd->net,ER_WRONG_USAGE,"DB GRANT","GLOBAL PRIVILEGES");
- result= -1;
+ result= 1;
}
}
}
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index c4c2f890f5d..7922af04ea8 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -1490,11 +1490,15 @@ add_key_field(KEY_FIELD **key_fields,uint and_level,
}
}
DBUG_ASSERT(num_values == 1);
- // DBUG_ASSERT(eq_func); /* QQ: Can I uncomment this ASSERT ? */
+ /*
+ For the moment eq_func is always true. This slot is reserved for future
+ extensions where we want to remembers other things than just eq comparisons
+ */
+ DBUG_ASSERT(eq_func);
/* Store possible eq field */
(*key_fields)->field=field;
(*key_fields)->eq_func=eq_func;
- (*key_fields)->val=*value;
+ (*key_fields)->val= *value;
(*key_fields)->level=(*key_fields)->const_level=and_level;
(*key_fields)->exists_optimize=exists_optimize;
(*key_fields)++;
@@ -1582,6 +1586,8 @@ add_key_fields(JOIN_TAB *stat,KEY_FIELD **key_fields,uint *and_level,
if (cond_func->arguments()[0]->type() == Item::FIELD_ITEM)
{
Item *tmp=new Item_null;
+ if (!tmp) // Should never be true
+ return;
add_key_field(key_fields,*and_level,
((Item_field*) (cond_func->arguments()[0]))->field,
cond_func->functype() == Item_func::ISNULL_FUNC,