From: Date: May 29 2009 4:22pm Subject: bzr commit into mysql-5.1-bugteam branch (azundris:2910) Bug#39200 List-Archive: http://lists.mysql.com/commits/75258 X-Bug: 39200 Message-Id: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3701539998213557775==" --===============3701539998213557775== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///misc/mysql/forest/39200k/51-39200k/ based on revid:davi.arnaut@stripped 2910 Tatiana A. Nurnberg 2009-05-29 Bug#39200: optimize table does not recognize ROW_FORMAT=COMPRESSED When doing ALTER TABLE, we forgot to point out that we actually have ROW_FORMAT information (from the original table), so we dropped to "sensible defaults". This affects both ALTER TABLE and OPTIMIZE TABLE which may fall back on ALTER TABLE for InnoDB. We now flag that we do indeed know the row-type, thereby preserving compression-type etc. No .test in 5.1 since we'd need a reasonable new plugin from InnoDB to show this properly; in higher versions, maria can demonstrate this. @ sql/sql_table.cc In mysql_alter_table() flag that we have row-type info from old table. In compare_tables(), we must explicitly check whether row-type has changed (rather than rely on the flag which will always be set at this point now). modified: sql/sql_table.cc === modified file 'sql/sql_table.cc' --- a/sql/sql_table.cc 2009-05-19 04:25:36 +0000 +++ b/sql/sql_table.cc 2009-05-29 14:22:24 +0000 @@ -5314,7 +5314,7 @@ compare_tables(TABLE *table, create_info->used_fields & HA_CREATE_USED_ENGINE || create_info->used_fields & HA_CREATE_USED_CHARSET || create_info->used_fields & HA_CREATE_USED_DEFAULT_CHARSET || - create_info->used_fields & HA_CREATE_USED_ROW_FORMAT || + (table->s->row_type != create_info->row_type) || create_info->used_fields & HA_CREATE_USED_PACK_KEYS || create_info->used_fields & HA_CREATE_USED_MAX_ROWS || (alter_info->flags & (ALTER_RECREATE | ALTER_FOREIGN_KEY)) || @@ -6307,7 +6307,10 @@ view_err: } if (create_info->row_type == ROW_TYPE_NOT_USED) + { create_info->row_type= table->s->row_type; + create_info->used_fields |= HA_CREATE_USED_ROW_FORMAT; + } DBUG_PRINT("info", ("old type: %s new type: %s", ha_resolve_storage_engine_name(old_db_type), --===============3701539998213557775== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/azundris@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: azundris@stripped # target_branch: file:///misc/mysql/forest/39200k/51-39200k/ # testament_sha1: 3c7c0440d649df390bbd85806d50345f1c0de4df # timestamp: 2009-05-29 16:22:34 +0200 # base_revision_id: davi.arnaut@stripped\ # hdqixrfxsk13lvz4 # # Begin bundle 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 +LuSKcKEhZ1dCLA= --===============3701539998213557775==--