mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
fix lost vcol checks in sql_table.cc,
remove unused FIELD_IS_xxx flags change vcol tests to use innodb, not xtradb.
This commit is contained in:
parent
f672d6b7d8
commit
ee8195a731
14 changed files with 35 additions and 20 deletions
|
@ -27,7 +27,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
let $skip_full_text_checks = 1;
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_xtradb.inc
|
||||
--source include/have_innodb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
|
|
@ -1652,6 +1652,9 @@ public:
|
|||
// Partition operation with ALL keyword
|
||||
static const HA_ALTER_FLAGS ALTER_ALL_PARTITION = 1L << 28;
|
||||
|
||||
// Partition operation with ALL keyword
|
||||
static const HA_ALTER_FLAGS ALTER_COLUMN_VCOL = 1L << 29;
|
||||
|
||||
/**
|
||||
Create options (like MAX_ROWS) for the new version of table.
|
||||
|
||||
|
|
|
@ -3460,6 +3460,8 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
|
|||
if (key->type == Key::FOREIGN_KEY)
|
||||
{
|
||||
fk_key_count++;
|
||||
if (((Foreign_key *)key)->validate(alter_info->create_list))
|
||||
DBUG_RETURN(TRUE);
|
||||
Foreign_key *fk_key= (Foreign_key*) key;
|
||||
if (fk_key->ref_columns.elements &&
|
||||
fk_key->ref_columns.elements != fk_key->columns.elements)
|
||||
|
@ -5406,10 +5408,6 @@ static bool fill_alter_inplace_info(THD *thd,
|
|||
*/
|
||||
for (f_ptr= table->field; (field= *f_ptr); f_ptr++)
|
||||
{
|
||||
/* Clear marker for renamed or dropped field
|
||||
which we are going to set later. */
|
||||
field->flags&= ~(FIELD_IS_RENAMED | FIELD_IS_DROPPED);
|
||||
|
||||
/* Use transformed info to evaluate flags for storage engine. */
|
||||
uint new_field_index= 0;
|
||||
new_field_it.init(alter_info->create_list);
|
||||
|
@ -5482,11 +5480,22 @@ static bool fill_alter_inplace_info(THD *thd,
|
|||
ha_alter_info->handler_flags|= Alter_inplace_info::ALTER_COLUMN_TYPE;
|
||||
}
|
||||
|
||||
/*
|
||||
Check if the altered column is computed and either
|
||||
is stored or is used in the partitioning expression.
|
||||
TODO: Mark such a column with an alter flag only if
|
||||
the defining expression has changed.
|
||||
*/
|
||||
if (field->vcol_info &&
|
||||
(field->stored_in_db || field->vcol_info->is_in_partitioning_expr()))
|
||||
{
|
||||
ha_alter_info->handler_flags|= Alter_inplace_info::ALTER_COLUMN_VCOL;
|
||||
}
|
||||
|
||||
/* Check if field was renamed */
|
||||
if (my_strcasecmp(system_charset_info, field->field_name,
|
||||
new_field->field_name))
|
||||
{
|
||||
field->flags|= FIELD_IS_RENAMED;
|
||||
ha_alter_info->handler_flags|= Alter_inplace_info::ALTER_COLUMN_NAME;
|
||||
rename_column_in_stat_tables(thd, table, field,
|
||||
new_field->field_name);
|
||||
|
@ -5532,11 +5541,9 @@ static bool fill_alter_inplace_info(THD *thd,
|
|||
Corresponding storage engine flag should be already set.
|
||||
*/
|
||||
DBUG_ASSERT(ha_alter_info->handler_flags & Alter_inplace_info::DROP_COLUMN);
|
||||
field->flags|= FIELD_IS_DROPPED;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
new_field_it.init(alter_info->create_list);
|
||||
while ((new_field= new_field_it++))
|
||||
{
|
||||
|
@ -5547,10 +5554,15 @@ static bool fill_alter_inplace_info(THD *thd,
|
|||
Again corresponding storage engine flag should be already set.
|
||||
*/
|
||||
DBUG_ASSERT(ha_alter_info->handler_flags & Alter_inplace_info::ADD_COLUMN);
|
||||
|
||||
if (new_field->vcol_info &&
|
||||
(new_field->stored_in_db || new_field->vcol_info->is_in_partitioning_expr()))
|
||||
{
|
||||
ha_alter_info->handler_flags|= Alter_inplace_info::ALTER_COLUMN_VCOL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif /* DBUG_OFF */
|
||||
|
||||
/*
|
||||
Go through keys and check if the original ones are compatible
|
||||
|
|
Loading…
Reference in a new issue