From f3bb583c3e4ea71a342f21c6e01014a05c89fd98 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Nov 2007 14:01:11 +0400 Subject: [PATCH] BUG#32050 - table logging gone wrong. INSERT/UPDATE against CSV table created by MySQL earlier than 5.1.23 with NULL-able column results in server crash in debug builds. Starting with 5.1.23 CSV doesn't permit creation of NULL-able columns, but it is still possible to get such table from older MySQL versions. Fixed by removing excessive DBUG_ASSERT(). scripts/mysql_system_tables_fix.sql: Starting with 5.1.23 CSV doesn't permit creation of NULL-able columns. Alter system CSV tables structure so that all columns are NOT NULL. storage/csv/ha_tina.cc: Starting with 5.1.23 CSV doesn't permit creation of NULL-able columns, but it is still possible to get such table from older MySQL versions. Removed excessive DBUG_ASSERT(). --- scripts/mysql_system_tables_fix.sql | 16 ++++++++++++++++ storage/csv/ha_tina.cc | 8 -------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql index a43964bf09a..fccd1737e31 100644 --- a/scripts/mysql_system_tables_fix.sql +++ b/scripts/mysql_system_tables_fix.sql @@ -513,6 +513,22 @@ ALTER TABLE tables_priv MODIFY Table_priv set('Select','Insert','Update','Delete UPDATE user SET Trigger_priv=Super_priv WHERE @hadTriggerPriv = 0; +# +# Log Table +# + +ALTER TABLE general_log + MODIFY COLUMN user_host MEDIUMTEXT NOT NULL, + MODIFY COLUMN thread_id INTEGER NOT NULL, + MODIFY COLUMN server_id INTEGER NOT NULL, + MODIFY COLUMN command_type VARCHAR(64) NOT NULL, + MODIFY COLUMN argument MEDIUMTEXT NOT NULL; +ALTER TABLE slow_log + MODIFY COLUMN db VARCHAR(512) NOT NULL, + MODIFY COLUMN last_insert_id INTEGER NOT NULL, + MODIFY COLUMN insert_id INTEGER NOT NULL, + MODIFY COLUMN server_id INTEGER NOT NULL; + # Activate the new, possible modified privilege tables # This should not be needed, but gives us some extra testing that the above # changes was correct diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 6a87b8ecc72..75c3f70dec4 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -472,14 +472,6 @@ int ha_tina::encode_quote(uchar *buf) const char *ptr; const char *end_ptr; const bool was_null= (*field)->is_null(); - - /* - CSV does not support nulls. ::create() prevents creation of a table - with nullable columns so if we encounter them here, there is a bug. - This may only occur if the frm was created by an older version of - mysqld which permitted table creation with nullable columns. - */ - DBUG_ASSERT(!(*field)->maybe_null()); /* assistance for backwards compatibility in production builds.