Commit 8bfb87ce authored by guilhem@mysql.com's avatar guilhem@mysql.com

Fix for BUG#2757

"--read-only gives weird error on update".
It is not fixable in 4.0 because it requires modifying
the sql/share/*/errmsg.txt files. So it is fixed in 4.1 like this:
the ER_SKIP_GRANT_TABLES is replaced by a more generic
ER_OPTION_PREVENTS_STATEMENT which can be used both for
"can't do this because of --skip-grant-tables" and
"can't do this because of --read-only" (for this we don't use
ER_CANT_UPDATE_WITH_READLOCK anymore).
So now the message for --read-only is:
"The MySQL server is running with the --read-only option so
cannot execute this statement".
parent 0ac37473
......@@ -305,5 +305,5 @@
#define ER_WARN_DEPRECATED_SYNTAX 1286
#define ER_NON_UPDATABLE_TABLE 1287
#define ER_FEATURE_DISABLED 1288
#define ER_SKIP_GRANT_TABLES 1289
#define ER_OPTION_PREVENTS_STATEMENT 1289
#define ER_ERROR_MESSAGES 290
......@@ -301,4 +301,4 @@ character-set=latin2
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -295,4 +295,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -303,4 +303,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -292,4 +292,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working",
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -297,4 +297,4 @@ character-set=latin7
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -292,4 +292,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -304,4 +304,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -292,4 +292,4 @@ character-set=greek
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -294,4 +294,4 @@ character-set=latin2
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -292,4 +292,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -294,4 +294,4 @@ character-set=ujis
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -292,4 +292,4 @@ character-set=euckr
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -294,4 +294,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -294,4 +294,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -296,4 +296,4 @@ character-set=latin2
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -293,4 +293,4 @@ character-set=latin1
"'%s' é desatualizado. Use '%s' em seu lugar.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -296,4 +296,4 @@ character-set=latin2
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -294,4 +294,4 @@ character-set=koi8r
"'%s' is deprecated. Use '%s' instead.",
" %-.100s %s .",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -287,4 +287,4 @@ character-set=cp1250
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -300,4 +300,4 @@ character-set=latin2
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -294,4 +294,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -292,4 +292,4 @@ character-set=latin1
"'%s' is deprecated. Use '%s' instead.",
"The target table %-.100s of the %s is not updatable.",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -297,4 +297,4 @@ character-set=koi8u
"'%s' is deprecated. Use '%s' instead.",
" %-.100s %s .",
"The '%s' feature was disabled. You need MySQL built with '%s' define to have it working"
"MySQL is started in --skip-grant-tables mode. You can't use this command"
"The MySQL server is running with the %s option so cannot execute this statement"
......@@ -1115,7 +1115,8 @@ bool check_change_password(THD *thd, const char *host, const char *user)
{
if (!initialized)
{
send_error(thd, ER_SKIP_GRANT_TABLES); /* purecov: inspected */
net_printf(thd,ER_OPTION_PREVENTS_STATEMENT,
"--skip-grant-tables"); /* purecov: inspected */
return(1); /* purecov: inspected */
}
if (!thd->slave_thread &&
......@@ -1433,13 +1434,10 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo,
if (!create_user)
{
if (what == 'N')
my_printf_error(ER_NONEXISTING_GRANT,ER(ER_NONEXISTING_GRANT),
MYF(0),combo.user.str,combo.host.str);
my_error(ER_NONEXISTING_GRANT, MYF(0), combo.user.str, combo.host.str);
else
my_printf_error(ER_NO_PERMISSION_TO_CREATE_USER,
ER(ER_NO_PERMISSION_TO_CREATE_USER),
MYF(0),thd->user,
thd->host_or_ip);
my_error(ER_NO_PERMISSION_TO_CREATE_USER, MYF(0),
thd->user, thd->host_or_ip);
error= -1;
goto end;
}
......@@ -1593,7 +1591,7 @@ static int replace_db_table(TABLE *table, const char *db,
if (!initialized)
{
my_error(ER_SKIP_GRANT_TABLES, MYF(0));
my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--skip-grant-tables");
DBUG_RETURN(-1);
}
......@@ -1613,8 +1611,7 @@ static int replace_db_table(TABLE *table, const char *db,
{
if (what == 'N')
{ // no row, no revoke
my_printf_error(ER_NONEXISTING_GRANT,ER(ER_NONEXISTING_GRANT),MYF(0),
combo.user.str,combo.host.str);
my_error(ER_NONEXISTING_GRANT, MYF(0), combo.user.str, combo.host.str);
goto abort;
}
old_row_exists = 0;
......@@ -1903,9 +1900,8 @@ static int replace_column_table(GRANT_TABLE *g_t,
{
if (revoke_grant)
{
my_printf_error(ER_NONEXISTING_TABLE_GRANT,
ER(ER_NONEXISTING_TABLE_GRANT),MYF(0),
combo.user.str, combo.host.str,table_name); /* purecov: inspected */
my_error(ER_NONEXISTING_TABLE_GRANT, MYF(0),
combo.user.str, combo.host.str, table_name); /* purecov: inspected */
result= -1; /* purecov: inspected */
continue; /* purecov: inspected */
}
......@@ -2071,10 +2067,9 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table,
*/
if (revoke_grant)
{ // no row, no revoke
my_printf_error(ER_NONEXISTING_TABLE_GRANT,
ER(ER_NONEXISTING_TABLE_GRANT),MYF(0),
combo.user.str,combo.host.str,
table_name); /* purecov: deadcode */
my_error(ER_NONEXISTING_TABLE_GRANT, MYF(0),
combo.user.str, combo.host.str,
table_name); /* purecov: deadcode */
DBUG_RETURN(-1); /* purecov: deadcode */
}
old_row_exists = 0;
......@@ -2174,8 +2169,9 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list,
if (!initialized)
{
send_error(thd, ER_SKIP_GRANT_TABLES); /* purecov: inspected */
DBUG_RETURN(1); /* purecov: inspected */
my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0),
"--skip-grant-tables"); /* purecov: inspected */
DBUG_RETURN(-1); /* purecov: inspected */
}
if (rights & ~TABLE_ACLS)
{
......@@ -2196,8 +2192,8 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list,
if (!find_field_in_table(thd,table,column->column.ptr(),
column->column.length(),0,0))
{
my_printf_error(ER_BAD_FIELD_ERROR,ER(ER_BAD_FIELD_ERROR),MYF(0),
column->column.c_ptr(), table_list->alias);
my_error(ER_BAD_FIELD_ERROR, MYF(0),
column->column.c_ptr(), table_list->alias);
DBUG_RETURN(-1);
}
column_priv|= column->rights;
......@@ -2212,7 +2208,7 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list,
fn_format(buf,buf,"","",4+16+32);
if (access(buf,F_OK))
{
my_error(ER_NO_SUCH_TABLE,MYF(0),table_list->db, table_list->alias);
my_error(ER_NO_SUCH_TABLE, MYF(0), table_list->db, table_list->alias);
DBUG_RETURN(-1);
}
}
......@@ -2291,9 +2287,8 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list,
{
if (revoke_grant)
{
my_printf_error(ER_NONEXISTING_TABLE_GRANT,
ER(ER_NONEXISTING_TABLE_GRANT),MYF(0),
Str->user.str, Str->host.str, table_list->real_name);
my_error(ER_NONEXISTING_TABLE_GRANT, MYF(0),
Str->user.str, Str->host.str, table_list->real_name);
result= -1;
continue;
}
......@@ -2384,7 +2379,8 @@ int mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
DBUG_ENTER("mysql_grant");
if (!initialized)
{
my_error(ER_SKIP_GRANT_TABLES, MYF(0)); /* purecov: tested */
my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0),
"--skip-grant-tables"); /* purecov: tested */
DBUG_RETURN(-1); /* purecov: tested */
}
......@@ -2463,8 +2459,7 @@ int mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
}
else
{
my_printf_error(ER_WRONG_USAGE, ER(ER_WRONG_USAGE), MYF(0),
"DB GRANT","GLOBAL PRIVILEGES");
my_error(ER_WRONG_USAGE, MYF(0), "DB GRANT", "GLOBAL PRIVILEGES");
result= -1;
}
}
......@@ -2990,8 +2985,8 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user)
LINT_INIT(acl_user);
if (!initialized)
{
send_error(thd, ER_SKIP_GRANT_TABLES);
DBUG_RETURN(1);
my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--skip-grant-tables");
DBUG_RETURN(-1);
}
if (lex_user->host.length > HOSTNAME_LENGTH ||
lex_user->user.length > USERNAME_LENGTH)
......@@ -3014,8 +3009,8 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user)
}
if (counter == acl_users.elements)
{
my_printf_error(ER_NONEXISTING_GRANT,ER(ER_NONEXISTING_GRANT),
MYF(0),lex_user->user.str,lex_user->host.str);
my_error(ER_NONEXISTING_GRANT, MYF(0),
lex_user->user.str, lex_user->host.str);
DBUG_RETURN(-1);
}
......@@ -3343,7 +3338,7 @@ int open_grant_tables(THD *thd, TABLE_LIST *tables)
if (!initialized)
{
send_error(thd, ER_SKIP_GRANT_TABLES);
net_printf(thd,ER_OPTION_PREVENTS_STATEMENT, "--skip-grant-tables");
DBUG_RETURN(-1);
}
......
......@@ -1811,7 +1811,7 @@ mysql_execute_command(THD *thd)
!(thd->slave_thread || (thd->master_access & SUPER_ACL)) &&
(uc_update_queries[lex->sql_command] > 0))
{
send_error(thd, ER_CANT_UPDATE_WITH_READLOCK);
net_printf(thd, ER_OPTION_PREVENTS_STATEMENT, "--read-only");
DBUG_VOID_RETURN;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment