diff options
author | unknown <serg@janus.mylan> | 2007-12-27 18:16:02 +0100 |
---|---|---|
committer | unknown <serg@janus.mylan> | 2007-12-27 18:16:02 +0100 |
commit | 7fdbc4230e68171e17e0dd4f6ae2d3fe3acb7549 (patch) | |
tree | b06c9309a63829e580019be688f7e51e47604caa /sql/sql_table.cc | |
parent | c1350b873165429f06b061565b91a0d423e39bdb (diff) | |
parent | 3fa2803a7737cd01aea6babd1c601649cab7968c (diff) | |
download | mariadb-git-7fdbc4230e68171e17e0dd4f6ae2d3fe3acb7549.tar.gz |
Merge janus.mylan:/usr/home/serg/Abk/mysql-5.1
into janus.mylan:/usr/home/serg/Abk/mysql-maria
Makefile.am:
Auto merged
configure.in:
Auto merged
BitKeeper/triggers/post-commit:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqltest.c:
Auto merged
include/my_dbug.h:
Auto merged
include/mysql_com.h:
Auto merged
libmysql/CMakeLists.txt:
Auto merged
libmysqld/Makefile.am:
Auto merged
mysql-test/lib/mtr_report.pl:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
mysql-test/t/variables.test:
Auto merged
server-tools/instance-manager/CMakeLists.txt:
Auto merged
server-tools/instance-manager/mysql_connection.cc:
Auto merged
sql/Makefile.am:
Auto merged
sql/filesort.cc:
Auto merged
sql/gen_lex_hash.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_partition.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/lex.h:
Auto merged
sql/lock.cc:
Auto merged
sql/log.cc:
Auto merged
sql/net_serv.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
storage/myisam/mi_open.c:
Auto merged
storage/myisammrg/ha_myisammrg.cc:
Auto merged
sql/handler.cc:
merged
sql/handler.h:
merged
sql/mysql_priv.h:
merged
sql/mysqld.cc:
merged
sql/set_var.cc:
merged
sql/sql_select.cc:
merged
sql/sql_show.cc:
merged
unittest/mysys/my_atomic-t.c:
merged
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 5bd7d446cbd..8e3e1b7dd8a 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3203,8 +3203,9 @@ bool mysql_create_table_no_lock(THD *thd, if (check_engine(thd, table_name, create_info)) DBUG_RETURN(TRUE); db_options= create_info->table_options; - if (create_info->row_type == ROW_TYPE_DYNAMIC) - db_options|=HA_OPTION_PACK_RECORD; + if (create_info->row_type != ROW_TYPE_FIXED && + create_info->row_type != ROW_TYPE_DEFAULT) + db_options|= HA_OPTION_PACK_RECORD; alias= table_case_name(create_info, table_name); if (!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root, create_info->db_type))) @@ -3744,8 +3745,9 @@ mysql_rename_table(handlerton *base, const char *old_db, wait_while_table_is_used() thd Thread handler table Table to remove from cache - function HA_EXTRA_PREPARE_FOR_DELETE if table is to be deleted + function HA_EXTRA_PREPARE_FOR_DROP if table is to be deleted HA_EXTRA_FORCE_REOPEN if table is not be used + HA_EXTRA_PREPARE_FOR_REANME if table is to be renamed NOTES When returning, the table will be unusable for other threads until the table is closed. @@ -3755,7 +3757,7 @@ mysql_rename_table(handlerton *base, const char *old_db, Win32 clients must also have a WRITE LOCK on the table ! */ -void wait_while_table_is_used(THD *thd, TABLE *table, +void wait_while_table_is_used(THD *thd,TABLE *table, enum ha_extra_function function) { DBUG_ENTER("wait_while_table_is_used"); @@ -3764,8 +3766,7 @@ void wait_while_table_is_used(THD *thd, TABLE *table, table->db_stat, table->s->version)); safe_mutex_assert_owner(&LOCK_open); - - VOID(table->file->extra(function)); + /* Mark all tables that are in use as 'old' */ mysql_lock_abort(thd, table, TRUE); /* end threads waiting on lock */ @@ -3773,6 +3774,7 @@ void wait_while_table_is_used(THD *thd, TABLE *table, remove_table_from_cache(thd, table->s->db.str, table->s->table_name.str, RTFC_WAIT_OTHER_THREAD_FLAG); + VOID(table->file->extra(function)); DBUG_VOID_RETURN; } @@ -3797,7 +3799,7 @@ void close_cached_table(THD *thd, TABLE *table) { DBUG_ENTER("close_cached_table"); - wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_DELETE); + wait_while_table_is_used(thd, table, HA_EXTRA_FORCE_REOPEN); /* Close lock if this is not got with LOCK TABLES */ if (thd->lock) { @@ -5180,8 +5182,7 @@ compare_tables(TABLE *table, } /* Don't pack rows in old tables if the user has requested this. */ - if (create_info->row_type == ROW_TYPE_DYNAMIC || - (new_field->flags & BLOB_FLAG) || + if ((new_field->flags & BLOB_FLAG) || new_field->sql_type == MYSQL_TYPE_VARCHAR && create_info->row_type != ROW_TYPE_FIXED) create_info->table_options|= HA_OPTION_PACK_RECORD; @@ -6682,7 +6683,7 @@ view_err: if (lower_case_table_names) my_casedn_str(files_charset_info, old_name); - wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_DELETE); + wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME); close_data_files_and_morph_locks(thd, db, table_name); error=0; @@ -7159,7 +7160,6 @@ bool mysql_recreate_table(THD *thd, TABLE_LIST *table_list) table_list->table= NULL; bzero((char*) &create_info, sizeof(create_info)); - create_info.db_type= 0; create_info.row_type=ROW_TYPE_NOT_USED; create_info.default_table_charset=default_charset_info; /* Force alter table to recreate table */ @@ -7251,6 +7251,9 @@ bool mysql_checksum_table(THD *thd, TABLE_LIST *tables, for (uint i= 0; i < t->s->fields; i++ ) { Field *f= t->field[i]; + if (! thd->variables.old_mode && + f->is_real_null(0)) + continue; if ((f->type() == MYSQL_TYPE_BLOB) || (f->type() == MYSQL_TYPE_VARCHAR)) { |