summaryrefslogtreecommitdiff
path: root/sql/sql_acl.cc
diff options
context:
space:
mode:
authorunknown <andrey@lmy004.>2006-02-14 17:05:36 +0100
committerunknown <andrey@lmy004.>2006-02-14 17:05:36 +0100
commit752cadd45379e9c36ff8c6cc29ba64a823216530 (patch)
tree59bdc70b2c14fdc871f15349eb18e49c53bbcd99 /sql/sql_acl.cc
parentf36bcd0e95a17183deecfeda663d424c5cdd9a7c (diff)
parent8d4f74be2d9b00e435fb22475414a0a68729092f (diff)
downloadmariadb-git-752cadd45379e9c36ff8c6cc29ba64a823216530.tar.gz
manual merge
mysql-test/r/events.result: Auto merged mysql-test/t/events.test: Auto merged sql/event.h: Auto merged sql/event_executor.cc: Auto merged sql/event_timed.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_acl.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged
Diffstat (limited to 'sql/sql_acl.cc')
-rw-r--r--sql/sql_acl.cc122
1 files changed, 119 insertions, 3 deletions
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 49f05a29ef3..724fd3b9b74 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -36,6 +36,122 @@
#define FIRST_NON_YN_FIELD 26
+time_t mysql_db_table_last_check= 0L;
+
+TABLE_FIELD_W_TYPE mysql_db_table_fields[MYSQL_DB_FIELD_COUNT] = {
+ {
+ {(char *) STRING_WITH_LEN("Host")},
+ {(char *) STRING_WITH_LEN("char(60)")},
+ {NULL, 0}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Db")},
+ {(char *) STRING_WITH_LEN("char(64)")},
+ {NULL, 0}
+ },
+ {
+ {(char *) STRING_WITH_LEN("User")},
+ {(char *) STRING_WITH_LEN("char(16)")},
+ {NULL, 0}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Select_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Insert_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Update_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Delete_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Create_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Drop_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Grant_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("References_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Index_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Alter_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Create_tmp_table_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Lock_tables_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Create_view_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Show_view_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Create_routine_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Alter_routine_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Execute_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Event_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ },
+ {
+ {(char *) STRING_WITH_LEN("Trigger_priv")},
+ {(char *) STRING_WITH_LEN("enum('N','Y')")},
+ {(char *) STRING_WITH_LEN("utf8")}
+ }
+};
+
+
class acl_entry :public hash_filo_element
{
public:
@@ -441,14 +557,14 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
while (!(read_record_info.read_record(&read_record_info)))
{
ACL_DB db;
- update_hostname(&db.host,get_field(&mem, table->field[0]));
- db.db=get_field(&mem, table->field[1]);
+ update_hostname(&db.host,get_field(&mem, table->field[MYSQL_DB_FIELD_HOST]));
+ db.db=get_field(&mem, table->field[MYSQL_DB_FIELD_DB]);
if (!db.db)
{
sql_print_warning("Found an entry in the 'db' table with empty database name; Skipped");
continue;
}
- db.user=get_field(&mem, table->field[2]);
+ db.user=get_field(&mem, table->field[MYSQL_DB_FIELD_USER]);
if (check_no_resolve && hostname_requires_resolving(db.host.hostname))
{
sql_print_warning("'db' entry '%s %s@%s' "