maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #03585
Removing very old options for --old, --new, --safe-mode
Hi!
I did notice that we haven't cleaned up the usage of the
--old, --new, --safe-mode and --skip-new options in a long time.
Here is a cleanup of this for MariaDB 5.2 (soon to be made gamma).
After this suggested change, here is how the options would work:
--new Use new functionality that will exist in next version of
MariaDB. This function exist to make it easier to prepare for an
upgrade. For version 5.1 this functions enables the LIST and RANGE
partitions functions for ndbcluster.
--old Use compatible behavior with previous main version for some
functionality. For MariaDB 5.1 this means that we are using the old,
MySQL 5.1 compatible, way to calculate checksums for records. If you
are using --old, CHECKSUM TABLE will always do a full table scan.
--safe_mode
Disable some potential unsafe optimization. For 5.2 these are:
INSERT DELAYED is disabled, myisam_recover_options is set to
DEFAULT (automatically recover crashed MyISAM files). For Aria
table, disable bulk insert optimization to enable one to use
maria_read_log to recover tables even if tables are deleted
(good for testing recovery).
--skip-new
Skip some new potentially unsafe functions. For 5.2 these are:
INSERT DELAYED is disabled, Query cache size is reset.
Here is the patch against MariaDB 5.2:
=== modified file 'sql/field.cc'
--- sql/field.cc 2010-08-05 19:56:11 +0000
+++ sql/field.cc 2010-09-14 15:45:01 +0000
@@ -6703,8 +6703,7 @@ void Field_string::sql_type(String &res)
length= cs->cset->snprintf(cs,(char*) res.ptr(),
res.alloced_length(), "%s(%d)",
- ((type() == MYSQL_TYPE_VAR_STRING &&
- !thd->variables.new_mode) ?
+ (type() == MYSQL_TYPE_VAR_STRING ?
(has_charset() ? "varchar" : "varbinary") :
(has_charset() ? "char" : "binary")),
(int) field_length / charset()->mbmaxlen);
=== modified file 'sql/item_cmpfunc.cc'
--- sql/item_cmpfunc.cc 2010-08-05 19:56:11 +0000
+++ sql/item_cmpfunc.cc 2010-09-14 16:41:01 +0000
@@ -4683,8 +4683,7 @@ bool Item_func_like::fix_fields(THD *thd
We could also do boyer-more for non-const items, but as we would have to
recompute the tables for each row it's not worth it.
*/
- if (args[1]->const_item() && !use_strnxfrm(collation.collation) &&
- !(specialflag & SPECIAL_NO_NEW_FUNC))
+ if (args[1]->const_item() && !use_strnxfrm(collation.collation))
{
String* res2 = args[1]->val_str(&cmp.value2);
if (!res2)
=== modified file 'sql/mysqld.cc'
--- sql/mysqld.cc 2010-08-24 22:44:50 +0000
+++ sql/mysqld.cc 2010-09-14 16:40:09 +0000
@@ -8725,11 +8725,7 @@ mysqld_get_one_option(int optid,
case (int) OPT_SKIP_NEW:
opt_specialflag|= SPECIAL_NO_NEW_FUNC;
delay_key_write_options= (uint) DELAY_KEY_WRITE_NONE;
- myisam_concurrent_insert=0;
- myisam_recover_options= HA_RECOVER_NONE;
- sp_automatic_privileges=0;
- my_use_symdir=0;
- ha_open_options&= ~(HA_OPEN_ABORT_IF_CRASHED | HA_OPEN_DELAY_KEY_WRITE);
+ ha_open_options&= ~(HA_OPEN_DELAY_KEY_WRITE);
#ifdef HAVE_QUERY_CACHE
query_cache_size=0;
#endif
=== modified file 'sql/records.cc'
--- sql/records.cc 2010-07-17 19:58:08 +0000
+++ sql/records.cc 2010-09-14 16:40:09 +0000
@@ -216,7 +216,6 @@ bool init_read_record(READ_RECORD *info,
*/
if (!disable_rr_cache &&
!table->sort.addon_field &&
- ! (specialflag & SPECIAL_SAFE_MODE) &&
thd->variables.read_rnd_buff_size &&
!(table->file->ha_table_flags() & HA_FAST_KEY_READ) &&
(table->db_stat & HA_READ_ONLY ||
=== modified file 'sql/sql_delete.cc'
--- sql/sql_delete.cc 2010-08-05 19:56:11 +0000
+++ sql/sql_delete.cc 2010-09-14 16:40:10 +0000
@@ -130,7 +130,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *
- there should be no delete triggers associated with the table.
*/
if (!using_limit && const_cond_result &&
- !(specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) &&
(thd->lex->sql_command == SQLCOM_TRUNCATE ||
(!thd->current_stmt_binlog_row_based &&
!(table->triggers && table->triggers->has_delete_triggers()))))
=== modified file 'sql/sql_parse.cc'
--- sql/sql_parse.cc 2010-08-05 19:56:11 +0000
+++ sql/sql_parse.cc 2010-09-14 16:40:09 +0000
@@ -3086,9 +3086,7 @@ end_with_restore_list:
goto error; /* purecov: inspected */
thd->enable_slow_log= opt_log_slow_admin_statements;
thd->query_plan_flags|= QPLAN_ADMIN;
- res= (specialflag & (SPECIAL_SAFE_MODE | SPECIAL_NO_NEW_FUNC)) ?
- mysql_recreate_table(thd, first_table) :
- mysql_optimize_table(thd, first_table, &lex->check_opt);
+ res= mysql_optimize_table(thd, first_table, &lex->check_opt);
/* ! we write after unlocking the table */
if (!res && !lex->no_write_to_binlog)
{
=== modified file 'sql/sql_select.cc'
--- sql/sql_select.cc 2010-08-24 22:44:50 +0000
+++ sql/sql_select.cc 2010-09-14 16:39:57 +0000
@@ -7187,8 +7187,6 @@ eq_ref_table(JOIN *join, ORDER *start_or
static bool
only_eq_ref_tables(JOIN *join,ORDER *order,table_map tables)
{
- if (specialflag & SPECIAL_SAFE_MODE)
- return 0; // skip this optimize /* purecov: inspected */
tables&= ~PSEUDO_TABLE_BITS;
for (JOIN_TAB **tab=join->map2table ; tables ; tab++, tables>>=1)
{
-------------
Any comments ?
Regards,
Monty
Follow ups