diff options
author | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2010-01-19 13:03:40 +0400 |
---|---|---|
committer | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2010-01-19 13:03:40 +0400 |
commit | 81391bd00c5b3e577fc88e142406eb288a26a0ff (patch) | |
tree | 4e5206090a5587437984eb53af8aaa3622c76dd1 /sql/events.cc | |
parent | d1d16f9c3f4310f3ab11fc85b47866d79243a471 (diff) | |
download | mariadb-git-81391bd00c5b3e577fc88e142406eb288a26a0ff.tar.gz |
Bug#49501 Inefficient information_schema check (system collation)
added check_length optimization for I_S_NAME comparison
sql/event_data_objects.cc:
added check_length optimization for I_S_NAME comparison
sql/events.cc:
added check_length optimization for I_S_NAME comparison
sql/mysql_priv.h:
added check_length optimization for I_S_NAME comparison
sql/repl_failsafe.cc:
added check_length optimization for I_S_NAME comparison
sql/sql_db.cc:
added check_length optimization for I_S_NAME comparison
sql/sql_parse.cc:
added check_length optimization for I_S_NAME comparison
sql/sql_show.cc:
added check_length optimization for I_S_NAME comparison
sql/sql_view.cc:
added check_length optimization for I_S_NAME comparison
sql/table.cc:
added check_length optimization for I_S_NAME comparison
Diffstat (limited to 'sql/events.cc')
-rw-r--r-- | sql/events.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/sql/events.cc b/sql/events.cc index 458ad61718d..790e6a61699 100644 --- a/sql/events.cc +++ b/sql/events.cc @@ -415,7 +415,8 @@ Events::create_event(THD *thd, Event_parse_data *parse_data, DBUG_ASSERT(parse_data->expression || parse_data->execute_at); if (check_access(thd, EVENT_ACL, parse_data->dbname.str, 0, 0, 0, - is_schema_db(parse_data->dbname.str))) + is_schema_db(parse_data->dbname.str, + parse_data->dbname.length))) DBUG_RETURN(TRUE); if (check_db_dir_existence(parse_data->dbname.str)) @@ -526,7 +527,8 @@ Events::update_event(THD *thd, Event_parse_data *parse_data, DBUG_RETURN(TRUE); if (check_access(thd, EVENT_ACL, parse_data->dbname.str, 0, 0, 0, - is_schema_db(parse_data->dbname.str))) + is_schema_db(parse_data->dbname.str, + parse_data->dbname.length))) DBUG_RETURN(TRUE); if (new_dbname) /* It's a rename */ @@ -548,7 +550,7 @@ Events::update_event(THD *thd, Event_parse_data *parse_data, access it. */ if (check_access(thd, EVENT_ACL, new_dbname->str, 0, 0, 0, - is_schema_db(new_dbname->str))) + is_schema_db(new_dbname->str, new_dbname->length))) DBUG_RETURN(TRUE); /* Check that the target database exists */ @@ -653,7 +655,7 @@ Events::drop_event(THD *thd, LEX_STRING dbname, LEX_STRING name, bool if_exists) DBUG_RETURN(TRUE); if (check_access(thd, EVENT_ACL, dbname.str, 0, 0, 0, - is_schema_db(dbname.str))) + is_schema_db(dbname.str, dbname.length))) DBUG_RETURN(TRUE); /* @@ -811,7 +813,7 @@ Events::show_create_event(THD *thd, LEX_STRING dbname, LEX_STRING name) DBUG_RETURN(TRUE); if (check_access(thd, EVENT_ACL, dbname.str, 0, 0, 0, - is_schema_db(dbname.str))) + is_schema_db(dbname.str, dbname.length))) DBUG_RETURN(TRUE); /* @@ -869,7 +871,8 @@ Events::fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */) if (thd->lex->sql_command == SQLCOM_SHOW_EVENTS) { DBUG_ASSERT(thd->lex->select_lex.db); - if (!is_schema_db(thd->lex->select_lex.db) && // There is no events in I_S + if (!is_schema_db(thd->lex->select_lex.db, // There is no events in I_S + strlen(thd->lex->select_lex.db)) && check_access(thd, EVENT_ACL, thd->lex->select_lex.db, 0, 0, 0, 0)) DBUG_RETURN(1); db= thd->lex->select_lex.db; |