diff --git a/mariadb-plugin-columnstore.install.generated b/mariadb-plugin-columnstore.install.generated index d987525f2a6..2b1434e58b9 100644 --- a/mariadb-plugin-columnstore.install.generated +++ b/mariadb-plugin-columnstore.install.generated @@ -1 +1,3 @@ #File is generated by ColumnstoreLibrary.cmake, do not edit +etc/mysql/columnstore.cnf # added in dbcon/mysql/CMakeLists.txt +usr/local/mysql/lib/plugin/ha_columnstore.so # added in dbcon/mysql/CMakeLists.txt diff --git a/mysql-test/suite/maria/alter.test b/mysql-test/suite/maria/alter.test index 2c18d6508c0..9367016d9f7 100644 --- a/mysql-test/suite/maria/alter.test +++ b/mysql-test/suite/maria/alter.test @@ -53,7 +53,8 @@ DROP TABLE t1, t2; CREATE OR REPLACE TABLE t1 (x INT) ENGINE=Aria; CREATE TEMPORARY TABLE t2 (a TIME) ENGINE=Aria; ALTER TABLE t2 ADD b DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP; -ALTER TABLE t2 ADD CHECK (b = 4); +ALTER TABLE t2 ADD CHECK (b <= "2001-01-01"); +INSERT INTO t2 values (1,"2000-01-01"); INSERT IGNORE INTO t2 () VALUES (),(),(),(); ALTER IGNORE TABLE t2 ADD c INT; SELECT count(a),sum(a) FROM t2; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 15a9d36b8d5..78eded130c7 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -13092,24 +13092,30 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, { to->default_field= dfield_ptr; } - else + /* + to->default_list was modified in-place, so we need to check to manually + add back missing fields. + */ + it.rewind(); + for (Field **ptr= to->field; *ptr; ptr++) { + def= it++; /* - to->default_list was modified in-place, so we need to check to manually - add back missing fields. - */ - it.rewind(); - for (Field **ptr= to->field; *ptr; ptr++) - { - def= it++; - if (def->field && def->field->has_update_default_function()) - *(dfield_ptr++)= *ptr; - } - /* - Mark end of list + First test is to check if the field was previously added + Second test is to check if this should have been added */ - *dfield_ptr= NULL; - } + if (!(def->field == 0 && (*ptr)->default_value) && + ((*ptr)->default_value || + ((*ptr)->has_update_default_function()))) + *(dfield_ptr++)= *ptr; + } + /* Check that original has_update_default_function matches the new list */ + DBUG_ASSERT(!to->s->has_update_default_function || + dfield_ptr != to->default_field); + if (dfield_ptr == to->default_field) + to->default_field= NULL; // No default fields left + else + *dfield_ptr= NULL; // Mark end of default field pointers #ifdef HAVE_REPLICATION if (online && error < 0)