Commit 20031c62 authored by Sergei Golubchik's avatar Sergei Golubchik

Enable TokuDB online ALTER

sql/create_options.cc:
  an utility function to compare two filled-in engine_option structures
sql/sql_table.cc:
  * two keys are different if their option_struct's differ
    (for ALTER TABLE DROP key, ADD key)
  * engines doing inplace alter must see the new frm image
parent fd553062
......@@ -115,6 +115,8 @@ static bool report_unknown_option(THD *thd, engine_option_value *val,
DBUG_RETURN(FALSE);
}
#define value_ptr(STRUCT,OPT) ((char*)(STRUCT) + (OPT)->offset)
static bool set_one_value(ha_create_table_option *opt,
THD *thd, const LEX_STRING *value, void *base,
bool suppress_warning,
......@@ -131,7 +133,7 @@ static bool set_one_value(ha_create_table_option *opt,
DBUG_ASSERT(0); // HA_OPTION_TYPE_SYSVAR's are replaced in resolve_sysvars()
case HA_OPTION_TYPE_ULL:
{
ulonglong *val= (ulonglong*)((char*)base + opt->offset);
ulonglong *val= (ulonglong*)value_ptr(base, opt);
if (!value->str)
{
*val= opt->def_value;
......@@ -155,7 +157,7 @@ static bool set_one_value(ha_create_table_option *opt,
}
case HA_OPTION_TYPE_STRING:
{
char **val= (char **)((char *)base + opt->offset);
char **val= (char **)value_ptr(base, opt);
if (!value->str)
{
*val= 0;
......@@ -168,7 +170,7 @@ static bool set_one_value(ha_create_table_option *opt,
}
case HA_OPTION_TYPE_ENUM:
{
uint *val= (uint *)((char *)base + opt->offset), num;
uint *val= (uint *)value_ptr(base, opt), num;
*val= (uint) opt->def_value;
if (!value->str)
......@@ -200,7 +202,7 @@ static bool set_one_value(ha_create_table_option *opt,
}
case HA_OPTION_TYPE_BOOL:
{
bool *val= (bool *)((char *)base + opt->offset);
bool *val= (bool *)value_ptr(base, opt);
*val= opt->def_value;
if (!value->str)
......@@ -284,7 +286,7 @@ bool parse_option_list(THD* thd, handlerton *hton, void *option_struct_arg,
*option_struct= alloc_root(root, option_struct_size);
}
for (opt= rules; opt && opt->name; opt++)
for (opt= rules; rules && opt->name; opt++)
{
bool seen=false;
for (val= *option_list; val; val= val->next)
......@@ -362,7 +364,7 @@ bool parse_option_list(THD* thd, handlerton *hton, void *option_struct_arg,
*/
static bool resolve_sysvars(handlerton *hton, ha_create_table_option *rules)
{
for (ha_create_table_option *opt= rules; opt && opt->name; opt++)
for (ha_create_table_option *opt= rules; rules && opt->name; opt++)
{
if (opt->type == HA_OPTION_TYPE_SYSVAR)
{
......@@ -428,7 +430,7 @@ bool resolve_sysvar_table_options(handlerton *hton)
*/
static void free_sysvars(handlerton *hton, ha_create_table_option *rules)
{
for (ha_create_table_option *opt= rules; opt && opt->name; opt++)
for (ha_create_table_option *opt= rules; rules && opt->name; opt++)
{
if (opt->var)
{
......@@ -491,6 +493,26 @@ bool parse_engine_table_options(THD *thd, handlerton *ht, TABLE_SHARE *share)
}
bool engine_options_differ(void *old_struct, void *new_struct,
ha_create_table_option *rules)
{
ha_create_table_option *opt;
for (opt= rules; rules && opt->name; opt++)
{
char **old_val= (char**)value_ptr(old_struct, opt);
char **new_val= (char**)value_ptr(new_struct, opt);
int neq;
if (opt->type == HA_OPTION_TYPE_STRING)
neq= (*old_val && *new_val) ? strcmp(*old_val, *new_val) : *old_val != *new_val;
else
neq= memcmp(old_val, new_val, ha_option_type_sizeof[opt->type]);
if (neq)
return true;
}
return false;
}
/**
Returns representation length of key and value in the frm file
*/
......
......@@ -96,4 +96,7 @@ uchar *engine_table_options_frm_image(uchar *buff,
engine_option_value *table_option_list,
List<Create_field> &create_fields,
uint keys, KEY *key_info);
bool engine_options_differ(void *old_struct, void *new_struct,
ha_create_table_option *rules);
#endif
......@@ -5747,6 +5747,10 @@ static bool fill_alter_inplace_info(THD *thd,
new_key->user_defined_key_parts))
goto index_changed;
if (engine_options_differ(table_key->option_struct, new_key->option_struct,
table->file->ht->index_options))
goto index_changed;
/*
Check that the key parts remain compatible between the old and
new tables.
......@@ -8045,11 +8049,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
{
Alter_inplace_info ha_alter_info(create_info, alter_info,
key_info, key_count,
#ifdef WITH_PARTITION_STORAGE_ENGINE
thd->work_part_info,
#else
NULL,
#endif
IF_PARTITIONING(thd->work_part_info, NULL),
ignore);
TABLE *altered_table= NULL;
bool use_inplace= true;
......@@ -8170,15 +8170,14 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
if (use_inplace)
{
table->s->frm_image= &frm;
int res= mysql_inplace_alter_table(thd, table_list, table, altered_table,
&ha_alter_info, inplace_supported,
&target_mdl_request, &alter_ctx);
my_free(const_cast<uchar*>(frm.str));
if (mysql_inplace_alter_table(thd, table_list, table,
altered_table,
&ha_alter_info,
inplace_supported, &target_mdl_request,
&alter_ctx))
{
if (res)
DBUG_RETURN(true);
}
goto end_inplace;
}
......
......@@ -1733,7 +1733,7 @@ int ha_tokudb::initialize_share(
goto exit;
}
#if defined(MARIADB_BASE_VERSION)
#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID < 100004
// a hack to support frm-only ALTER TABLE in MariaDB 5.5
// in 10.0 there's a proper fix with the new discovery and online alter
if (thd_sql_command(thd) == SQLCOM_ALTER_TABLE) {
......@@ -2152,7 +2152,7 @@ int ha_tokudb::write_frm_data(DB* db, DB_TXN* txn, const char* frm_name) {
error = 0;
cleanup:
my_free(frm_data, MYF(MY_ALLOW_ZERO_PTR));
table_share->free_frm_image(frm_data);
TOKUDB_DBUG_RETURN(error);
}
......@@ -2216,7 +2216,7 @@ int ha_tokudb::verify_frm_data(const char* frm_name, DB_TXN* txn) {
error = 0;
cleanup:
my_free(mysql_frm_data, MYF(MY_ALLOW_ZERO_PTR));
table_share->free_frm_image(mysql_frm_data);
my_free(stored_frm.data, MYF(MY_ALLOW_ZERO_PTR));
TOKUDB_DBUG_RETURN(error);
}
......
......@@ -90,7 +90,7 @@ PATENT RIGHTS GRANT:
#if TOKU_INCLUDE_ALTER_56
#if 100000 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 100099
#define TOKU_ALTER_RENAME ALTER_RENAME_56
#define TOKU_ALTER_RENAME ALTER_RENAME
#elif 50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699
#define TOKU_ALTER_RENAME ALTER_RENAME
#elif 50500 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50599
......@@ -400,6 +400,9 @@ enum_alter_inplace_result ha_tokudb::check_if_supported_inplace_alter(TABLE *alt
} else
if (only_flags(ctx->handler_flags, Alter_inplace_info::CHANGE_CREATE_OPTION)) {
HA_CREATE_INFO *create_info = ha_alter_info->create_info;
if (create_info->option_struct->row_format != table_share->option_struct->row_format)
create_info->used_fields|= HA_CREATE_USED_ROW_FORMAT;
// alter auto_increment
if (only_flags(create_info->used_fields, HA_CREATE_USED_AUTO)) {
// do a sanity check that the table is what we think it is
......@@ -462,7 +465,7 @@ bool ha_tokudb::inplace_alter_table(TABLE *altered_table, Alter_inplace_info *ha
assert(error == 0);
// Set the new compression
enum toku_compression_method method = row_type_to_compression_method(create_info->option_struct->row_format);
enum toku_compression_method method = row_type_to_compression_method((srv_row_format_t)create_info->option_struct->row_format);
uint32_t curr_num_DBs = table->s->keys + test(hidden_primary_key);
for (uint32_t i = 0; i < curr_num_DBs; i++) {
db = share->key_file[i];
......@@ -616,7 +619,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac
if (error)
goto cleanup;
if (i == primary_key || table_share->key_info[i].option_struct.clustering) {
if (i == primary_key || table_share->key_info[i].option_struct->clustering) {
num_column_extra = fill_row_mutator(
column_extra,
columns,
......@@ -734,7 +737,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in
break;
// for all trees that have values, make an update variable offsets message and broadcast it into the tree
if (i == primary_key || (table_share->key_info[i].option_struct.clustering)) {
if (i == primary_key || (table_share->key_info[i].option_struct->clustering)) {
uint32_t offset_start = table_share->null_bytes + share->kc_info.mcp_info[i].fixed_field_size;
uint32_t offset_end = offset_start + share->kc_info.mcp_info[i].len_of_offsets;
uint32_t number_of_offsets = offset_end - offset_start;
......@@ -810,7 +813,7 @@ static bool change_length_is_supported(TABLE *table, TABLE *altered_table, Alter
return false;
if (ctx->changed_fields.elements() > 1)
return false; // only support one field change
for (int ai = 0; ai < ctx->changed_fields.elements(); ai++) {
for (uint ai = 0; ai < ctx->changed_fields.elements(); ai++) {
uint i = ctx->changed_fields.at(ai);
Field *old_field = table->field[i];
Field *new_field = altered_table->field[i];
......@@ -832,7 +835,7 @@ static bool is_sorted(Dynamic_array<uint> &a) {
bool r = true;
if (a.elements() > 0) {
uint lastelement = a.at(0);
for (int i = 1; i < a.elements(); i++)
for (uint i = 1; i < a.elements(); i++)
if (lastelement > a.at(i))
r = false;
}
......@@ -843,7 +846,7 @@ int ha_tokudb::alter_table_expand_columns(TABLE *altered_table, Alter_inplace_in
int error = 0;
tokudb_alter_ctx *ctx = static_cast<tokudb_alter_ctx *>(ha_alter_info->handler_ctx);
assert(is_sorted(ctx->changed_fields)); // since we build the changed_fields array in field order, it must be sorted
for (int ai = 0; error == 0 && ai < ctx->changed_fields.elements(); ai++) {
for (uint ai = 0; error == 0 && ai < ctx->changed_fields.elements(); ai++) {
uint expand_field_num = ctx->changed_fields.at(ai);
error = alter_table_expand_one_column(altered_table, ha_alter_info, expand_field_num);
}
......@@ -916,7 +919,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace
break;
// for all trees that have values, make an expand update message and broadcast it into the tree
if (i == primary_key || (table_share->key_info[i].option_struct.clustering)) {
if (i == primary_key || (table_share->key_info[i].option_struct->clustering)) {
uint32_t old_offset = alter_table_field_offset(table_share->null_bytes, ctx->table_kc_info, i, expand_field_num);
uint32_t new_offset = alter_table_field_offset(table_share->null_bytes, ctx->altered_table_kc_info, i, expand_field_num);
assert(old_offset <= new_offset);
......@@ -1029,7 +1032,7 @@ static bool change_type_is_supported(TABLE *table, TABLE *altered_table, Alter_i
return false;
if (ctx->changed_fields.elements() > 1)
return false; // only support one field change
for (int ai = 0; ai < ctx->changed_fields.elements(); ai++) {
for (uint ai = 0; ai < ctx->changed_fields.elements(); ai++) {
uint i = ctx->changed_fields.at(ai);
Field *old_field = table->field[i];
Field *new_field = altered_table->field[i];
......
......@@ -121,7 +121,7 @@ PATENT RIGHTS GRANT:
#if defined(TOKUDB_PATCHES) && TOKUDB_PATCHES == 0
#elif 100000 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 100099
#define TOKU_INCLUDE_ALTER_56 0
#define TOKU_INCLUDE_ALTER_56 1
#define TOKU_INCLUDE_ALTER_55 0
#define TOKU_INCLUDE_ROW_TYPE_COMPRESSION 1
#define TOKU_INCLUDE_XA 1
......
change_column_auto_inc: No online ALTER in MariaDB 5.5
change_column_bin: No online ALTER in MariaDB 5.5
change_column_bin_key: No online ALTER in MariaDB 5.5
change_column_bin_rename: No online ALTER in MariaDB 5.5
change_column_blob: No online ALTER in MariaDB 5.5
change_column_char: No online ALTER in MariaDB 5.5
change_column_char_binary: No online ALTER in MariaDB 5.5
change_column_char_charbinary: No online ALTER in MariaDB 5.5
change_column_char_charset: No online ALTER in MariaDB 5.5
change_column_char_key: No online ALTER in MariaDB 5.5
change_column_char_null: No online ALTER in MariaDB 5.5
change_column_char_rename: No online ALTER in MariaDB 5.5
change_column_int: No online ALTER in MariaDB 5.5
change_column_int_key: No online ALTER in MariaDB 5.5
change_column_int_not_supported: No online ALTER in MariaDB 5.5
change_column_int_rename: No online ALTER in MariaDB 5.5
change_column_multiple_columns: No online ALTER in MariaDB 5.5
change_column_text: No online ALTER in MariaDB 5.5
change_column_varbin: No online ALTER in MariaDB 5.5
change_column_varbin_default: No online ALTER in MariaDB 5.5
change_column_varbin_key: No online ALTER in MariaDB 5.5
change_column_varbin_null: No online ALTER in MariaDB 5.5
change_column_varbin_rename: No online ALTER in MariaDB 5.5
change_column_varbin_varchar: No online ALTER in MariaDB 5.5
change_column_varchar: No online ALTER in MariaDB 5.5
change_column_varchar_charset: No online ALTER in MariaDB 5.5
change_column_varchar_default: No online ALTER in MariaDB 5.5
change_column_varchar_key: No online ALTER in MariaDB 5.5
change_column_varchar_null: No online ALTER in MariaDB 5.5
change_column_varchar_prefix_a: No online ALTER in MariaDB 5.5
change_column_varchar_rename: No online ALTER in MariaDB 5.5
change_column_varchar_varbin: No online ALTER in MariaDB 5.5
fast_update_binlog_mixed: No UPSERT in MariaDB 5.5
fast_update_binlog_row: No UPSERT in MariaDB 5.5
fast_update_binlog_statement: No UPSERT in MariaDB 5.5
......@@ -54,7 +22,6 @@ fast_upsert_int: No UPSERT in MariaDB 5.5
fast_upsert_key: No UPSERT in MariaDB 5.5
fast_upsert_sqlmode: No UPSERT in MariaDB 5.5
fast_upsert_values: No UPSERT in MariaDB 5.5
hotindex-del-1: No online ALTER in MariaDB 5.5
mvcc-19: No online ALTER in MariaDB 5.5
mvcc-20: No online ALTER in MariaDB 5.5
mvcc-27: No online OPTIMIZE in MariaDB 5.5
mvcc-19: how this could work, if alter needs an exclusive mdl lock?
mvcc-20: how this could work, if alter needs an exclusive mdl lock?
......@@ -9,7 +9,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a SMALLINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a SMALLINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -21,7 +21,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -33,7 +33,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a INT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a INT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -45,7 +45,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -57,7 +57,7 @@ CREATE TABLE t (a SMALLINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a SMALLINT, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -69,7 +69,7 @@ CREATE TABLE t (a SMALLINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a INT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a SMALLINT, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a INT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -81,7 +81,7 @@ CREATE TABLE t (a SMALLINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a SMALLINT, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -93,7 +93,7 @@ CREATE TABLE t (a MEDIUMINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a INT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a INT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -105,7 +105,7 @@ CREATE TABLE t (a MEDIUMINT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -117,7 +117,7 @@ CREATE TABLE t (a INT, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a INT, CLUSTERING KEY(a));
CREATE TABLE t (a INT, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -129,7 +129,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a SMALLINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a SMALLINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -141,7 +141,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -153,7 +153,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -165,7 +165,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -177,7 +177,7 @@ CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a SMALLINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -189,7 +189,7 @@ CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a SMALLINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -201,7 +201,7 @@ CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a SMALLINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -213,7 +213,7 @@ CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -225,7 +225,7 @@ CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -237,7 +237,7 @@ CREATE TABLE t (a INT UNSIGNED, KEY(a));
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
CREATE TABLE t (a INT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a INT UNSIGNED, KEY(a) CLUSTERING=YES);
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
ERROR 42000: Table 't' uses an extension that doesn't exist in this XYZ version
DROP TABLE t;
......@@ -10003,7 +10003,7 @@ insert into s values (3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(3,7),(3,8),(3,9)
insert into s values (2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9);
insert into s values (1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9);
set tokudb_create_index_online=1;
create clustering index i_a on s(a);
create index i_a on s(a) clustering=yes;
delete from s where a=10000;
delete from s where a=9999;
delete from s where a=9998;
......@@ -72,7 +72,7 @@ hex(a)
1
1
alter table t1 add unique (a);
ERROR 23000: Duplicate entry '\x00' for key 'a'
ERROR 23000: Can't write; duplicate key in table 't1'
drop table t1;
create table t1 (a bit(2));
insert into t1 values (b'00'), (b'01'), (b'10'), (b'100');
......
......@@ -16,7 +16,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a SMALLINT;
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a SMALLINT;
......@@ -32,7 +32,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
......@@ -48,7 +48,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT;
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT;
......@@ -64,7 +64,7 @@ CREATE TABLE t (a TINYINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
DROP TABLE t;
CREATE TABLE t (a TINYINT, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
......@@ -80,7 +80,7 @@ CREATE TABLE t (a SMALLINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
DROP TABLE t;
CREATE TABLE t (a SMALLINT, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT;
......@@ -96,7 +96,7 @@ CREATE TABLE t (a SMALLINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT;
DROP TABLE t;
CREATE TABLE t (a SMALLINT, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT;
......@@ -112,7 +112,7 @@ CREATE TABLE t (a SMALLINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
DROP TABLE t;
CREATE TABLE t (a SMALLINT, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
......@@ -128,7 +128,7 @@ CREATE TABLE t (a MEDIUMINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT;
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT;
......@@ -144,7 +144,7 @@ CREATE TABLE t (a MEDIUMINT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
......@@ -160,7 +160,7 @@ CREATE TABLE t (a INT, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
DROP TABLE t;
CREATE TABLE t (a INT, CLUSTERING KEY(a));
CREATE TABLE t (a INT, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT;
......@@ -176,7 +176,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a SMALLINT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a SMALLINT UNSIGNED;
......@@ -192,7 +192,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
......@@ -208,7 +208,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
......@@ -224,7 +224,7 @@ CREATE TABLE t (a TINYINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a TINYINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a TINYINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
......@@ -240,7 +240,7 @@ CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a SMALLINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a MEDIUMINT UNSIGNED;
......@@ -256,7 +256,7 @@ CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a SMALLINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
......@@ -272,7 +272,7 @@ CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a SMALLINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a SMALLINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
......@@ -288,7 +288,7 @@ CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a INT UNSIGNED;
......@@ -304,7 +304,7 @@ CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a MEDIUMINT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a MEDIUMINT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
......@@ -320,7 +320,7 @@ CREATE TABLE t (a INT UNSIGNED, KEY(a));
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
DROP TABLE t;
CREATE TABLE t (a INT UNSIGNED, CLUSTERING KEY(a));
CREATE TABLE t (a INT UNSIGNED, KEY(a) CLUSTERING=YES);
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE t CHANGE COLUMN a a BIGINT UNSIGNED;
......
# ticket 895 is a query optimization problem with the primary key
#--source include/have_tokudb.inc
--source include/not_5_5.inc
#--source include/not_5_5.inc
SET DEFAULT_STORAGE_ENGINE = 'tokudb';
--echo # Establish connection conn1 (user = root)
......
# ticket 895 is a query optimization problem with the primary key
#--source include/have_tokudb.inc
--source include/not_5_5.inc
#--source include/not_5_5.inc
SET DEFAULT_STORAGE_ENGINE = 'tokudb';
......
......@@ -40,7 +40,7 @@ drop table t1;
create table t1 (a bit);
insert into t1 values (b'0'), (b'1'), (b'000'), (b'100'), (b'001');
select hex(a) from t1;
--error ER_DUP_ENTRY
--error ER_DUP_KEY
alter table t1 add unique (a);
drop table t1;
......
falcon_bug_22516: dont support hot alter add key and drop key
\ No newline at end of file
......@@ -2,7 +2,7 @@ SET DEFAULT_STORAGE_ENGINE='tokudb';
*** Bug #22169 ***
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a int, b int, c int, z int, y int, x int, r int, s int, t int, key (z), key(x), key(t));
ERROR 23000: Duplicate entry '18-2' for key 'foo'
ERROR 23000: Can't write; duplicate key in table 't1'
a b c z y x r s t
1 9 18 10 100 1000 2 3 4
2 8 16 20 200 2000 4 6 8
......
......@@ -2,4 +2,4 @@ SET DEFAULT_STORAGE_ENGINE='tokudb';
*** Bug #22169 ***
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a int, b int, c int, z int, y int, x int, r int, s int, t int, key (z), key(x), key(t));
ERROR 23000: Duplicate entry '18-2' for key 'foo'
ERROR 23000: Can't write; duplicate key in table 't1'
......@@ -18,13 +18,13 @@ select count(*) from t1 where sca_pic >= 'n';
count(*)
1
alter table t1 drop index sca_pic, add index (sca_pic, cat_code);
ERROR HY000: Table storage engine for 't1' doesn't have this option
ERROR 42000: Table 't1' uses an extension that doesn't exist in this XYZ version
select count(*) from t1 where sca_pic >= 'n';
count(*)
1
DROP TABLE t1;
DROP TABLE t1;
ERROR 42S02: Unknown table 't1'
ERROR 42S02: Unknown table 'test.t1'
CREATE TABLE t1 (
sca_code char(6) NOT NULL,
cat_code char(6) NOT NULL,
......@@ -48,6 +48,7 @@ select count(*) from t1 where sca_pic is null;
count(*)
2
alter table t1 drop index sca_pic, add index sca_pic (cat_code, sca_pic);
ERROR 42000: Table 't1' uses an extension that doesn't exist in this XYZ version
select count(*) from t1 where sca_code='PD' and sca_pic is null;
count(*)
1
......@@ -55,7 +56,7 @@ select count(*) from t1 where cat_code='E';
count(*)
0
alter table t1 drop index sca_pic, add index (sca_pic, cat_code);
ERROR HY000: Table storage engine for 't1' doesn't have this option
ERROR 42000: Table 't1' uses an extension that doesn't exist in this XYZ version
select count(*) from t1 where sca_code='PD' and sca_pic is null;
count(*)
1
......
......@@ -25,7 +25,7 @@ while ($1)
}
insert into t1 values (5,52,18,5,5,5,2,5,5);
--error ER_DUP_ENTRY
--error ER_DUP_KEY
create unique index foo on t1 (c,r);
select * from t1;
......
......@@ -25,7 +25,7 @@ while ($1)
}
insert into t1 values (5,52,18,5,5,5,2,5,5);
--error ER_DUP_ENTRY
--error ER_DUP_KEY
create unique index foo on t1 (c,r);
......
# alter table
hcad_tmp_tables: tmp tables bypass hot alter, we run hcad_tmp_tables_56 instead
hcad_with_locks: cant alter table concurrent with reading a table in 5.5
frm_discover_partition: No partition discovery in MariaDB 5.5
auto_inc: No online ALTER in MariaDB 5.5
fractional_time_alter_table: No online ALTER in MariaDB 5.5
hcad_indexing_mix: No online ALTER in MariaDB 5.5
hcad_null_bits: No online ALTER in MariaDB 5.5
hcr: No online ALTER in MariaDB 5.5
hcr_binary1: No online ALTER in MariaDB 5.5
hcr_blob: No online ALTER in MariaDB 5.5
hcr_char1: No online ALTER in MariaDB 5.5
hcr_text: No online ALTER in MariaDB 5.5
hcr_time: No online ALTER in MariaDB 5.5
hot_row_format_alter: No online ALTER in MariaDB 5.5
other_alter: No online ALTER in MariaDB 5.5
hcad_with_locks: how this could work, if alter needs an exclusive mdl lock?
......@@ -16,7 +16,7 @@ select sum(a) from foo;
sum(a)
9
alter table foo add unique index b(b), drop index a;
ERROR 23000: Duplicate entry '30' for key 'b'
ERROR 23000: Can't write; duplicate key in table 'foo'
select * from foo;
a b c
1 10 100
......
......@@ -62,7 +62,7 @@ alter table foo auto_increment=100000, change b b bigint;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo auto_increment=100000, change b c int;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo auto_increment=100000, ROW_FORMAT=TOKUDB_LZMA;
alter table foo auto_increment=100000, COMPRESSION=TOKUDB_LZMA;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo auto_increment=100000, change b b int DEFAULT 111;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
......
SET DEFAULT_STORAGE_ENGINE='tokudb';
DROP TABLE IF EXISTS foo,bar;
set session tokudb_disable_slow_alter=ON;
create table foo (aa int, bb int, cc int, dd int, ee int, a int, b varchar(20), c int, d int, e int, primary key (e), key(d), unique key(c), clustering key (b));
create table foo (aa int, bb int, cc int, dd int, ee int, a int, b varchar(20), c int, d int, e int, primary key (e), key(d), unique key(c), key (b) clustering=yes);
alter table foo drop column e;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo drop column d;
......@@ -23,9 +23,9 @@ alter table foo drop column aaa, drop index b, add index b(d);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo drop column aaa, drop index b, add index b(b);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo drop column aaa, drop index b, add clustering index b(b(5));
alter table foo drop column aaa, drop index b, add index b(b(5)) clustering=yes;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo drop column aaa, drop index b, add clustering index b(b);
alter table foo drop column aaa, drop index b, add index b(b) clustering=yes;
alter table foo add column aaa int, drop index d;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add column aaa int, add index (bb);
......@@ -38,9 +38,9 @@ alter table foo add column aaa int, drop index b, add unique index b(b);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add column aaa int, drop index b, add index b(b);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add column aaa int, drop index b, add clustering index b(b(5));
alter table foo add column aaa int, drop index b, add index b(b(5)) clustering=yes;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add column aaa int, drop index b, add clustering index b(b);
alter table foo add column aaa int, drop index b, add index b(b) clustering=yes;
alter table foo drop column aaa, drop index c;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo drop column aaa, add index (bb);
......@@ -60,7 +60,7 @@ alter table foo add column aaa int, drop index c, add index c(c);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add column aaa int, drop index c, add index c(d);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add column aaa int, drop index c, add clustering index c(c);
alter table foo add column aaa int, drop index c, add index c(c) clustering=yes;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add column aaa int, drop index c, add index c(c);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
......
......@@ -9,94 +9,94 @@ a b
1 11
2 21
3 32
ALTER TABLE foo row_format=TOKUDB_LZMA;
ALTER TABLE foo compression=TOKUDB_LZMA;
SHOW CREATE TABLE foo;
Table Create Table
foo CREATE TABLE `foo` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ROW_FORMAT=TOKUDB_LZMA
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 `compression`=TOKUDB_LZMA
select * from foo;
a b
1 11
2 21
3 32
ALTER TABLE foo row_format=TOKUDB_QUICKLZ;
ALTER TABLE foo compression=TOKUDB_QUICKLZ;
SHOW CREATE TABLE foo;
Table Create Table
foo CREATE TABLE `foo` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ROW_FORMAT=TOKUDB_QUICKLZ
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 `compression`=TOKUDB_QUICKLZ
select * from foo;
a b
1 11
2 21
3 32
ALTER TABLE foo row_format=TOKUDB_UNCOMPRESSED;
ALTER TABLE foo compression=TOKUDB_UNCOMPRESSED;
SHOW CREATE TABLE foo;
Table Create Table
foo CREATE TABLE `foo` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ROW_FORMAT=TOKUDB_UNCOMPRESSED
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 `compression`=TOKUDB_UNCOMPRESSED
select * from foo;
a b
1 11
2 21
3 32
ALTER TABLE foo row_format=TOKUDB_ZLIB;
ALTER TABLE foo compression=TOKUDB_ZLIB;
SHOW CREATE TABLE foo;
Table Create Table
foo CREATE TABLE `foo` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ROW_FORMAT=TOKUDB_ZLIB
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 `compression`=TOKUDB_ZLIB
select * from foo;
a b
1 11
2 21
3 32
ALTER TABLE foo row_format=TOKUDB_FAST;
ALTER TABLE foo compression=TOKUDB_FAST;
SHOW CREATE TABLE foo;
Table Create Table
foo CREATE TABLE `foo` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ROW_FORMAT=TOKUDB_FAST
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 `compression`=TOKUDB_FAST
select * from foo;
a b
1 11
2 21
3 32
ALTER TABLE foo row_format=TOKUDB_SMALL;
ALTER TABLE foo compression=TOKUDB_SMALL;
SHOW CREATE TABLE foo;
Table Create Table
foo CREATE TABLE `foo` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ROW_FORMAT=TOKUDB_SMALL
) ENGINE=TokuDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 `compression`=TOKUDB_SMALL
select * from foo;
a b
1 11
2 21
3 32
ALTER TABLE foo row_format=TOKUDB_LZMA, add column c int;
ALTER TABLE foo compression=TOKUDB_LZMA, add column c int;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
ALTER TABLE foo row_format=TOKUDB_LZMA, drop column b;
ALTER TABLE foo compression=TOKUDB_LZMA, drop column b;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
ALTER TABLE foo row_format=TOKUDB_LZMA, add key b(b);
ALTER TABLE foo compression=TOKUDB_LZMA, add key b(b);
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
ALTER TABLE foo row_format=TOKUDB_LZMA, change b b bigint;
ALTER TABLE foo compression=TOKUDB_LZMA, change b b bigint;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
ALTER TABLE foo row_format=TOKUDB_LZMA, change b c int;
ALTER TABLE foo compression=TOKUDB_LZMA, change b c int;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
ALTER TABLE foo auto_increment=100000, ROW_FORMAT=TOKUDB_LZMA;
ALTER TABLE foo auto_increment=100000, compression=TOKUDB_LZMA;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
DROP TABLE foo;
SET DEFAULT_STORAGE_ENGINE='tokudb';
DROP TABLE IF EXISTS foo,bar;
set session tokudb_disable_slow_alter=ON;
create table foo (aa int, bb int, cc int, dd int, ee int, a int, b varchar(20), c int, d int, e int, primary key (e), key(d), unique key(c), clustering key (b))engine=TokuDB;
create table foo (aa int, bb int, cc int, dd int, ee int, a int, b varchar(20), c int, d int, e int, primary key (e), key(d), unique key(c), key (b) clustering=yes)engine=TokuDB;
create table bar (a int) engine=TokuDB;
alter table foo drop primary key;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
......@@ -20,9 +20,9 @@ ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ versio
alter table foo drop primary key, add primary key (b), drop column aa;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
alter table foo add fulltext key(b);
ERROR HY000: The used table type doesn't support FULLTEXT indexes
ERROR HY000: The storage engine TokuDB doesn't support FULLTEXT indexes
alter table foo add spatial key (aa);
ERROR HY000: The used table type doesn't support SPATIAL indexes
ERROR HY000: The storage engine TokuDB doesn't support SPATIAL indexes
alter table foo alter column cc set default 101010;
alter table foo alter column cc set default NULL;
alter table foo alter column cc drop default;
......@@ -62,7 +62,7 @@ foo CREATE TABLE `foo` (
PRIMARY KEY (`e`),
UNIQUE KEY `c` (`c`),
KEY `d` (`d`),
CLUSTERING KEY `b` (`b`)
KEY `b` (`b`) `clustering`=yes
) ENGINE=TokuDB DEFAULT CHARSET=latin1
alter table foo change column aa aa int NOT NULL;
ERROR 42000: Table 'foo' uses an extension that doesn't exist in this XYZ version
......
......@@ -15,7 +15,7 @@ select * from foo;
explain select sum(a) from foo;
select sum(a) from foo;
--error ER_DUP_ENTRY
--error ER_DUP_KEY
alter table foo add unique index b(b), drop index a;
select * from foo;
......
......@@ -48,7 +48,7 @@ alter table foo auto_increment=100000, change b c int;
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
alter table foo auto_increment=100000, ROW_FORMAT=TOKUDB_LZMA;
alter table foo auto_increment=100000, COMPRESSION=TOKUDB_LZMA;
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
......
......@@ -63,7 +63,7 @@ ALTER TABLE foo compression=TOKUDB_LZMA, change b c int;
--replace_regex /MariaDB/XYZ/ /MySQL/XYZ/
--error ER_UNSUPPORTED_EXTENSION
ALTER TABLE foo auto_increment=100000, ROW_FORMAT=TOKUDB_LZMA;
ALTER TABLE foo auto_increment=100000, compression=TOKUDB_LZMA;
DROP TABLE foo;
memcache_dirty : #4609 memcache patch from facebook not ported to mysql 5.5
4472 : #4521 MDL for alter table in 5.5 prohibits this test from having any chance of working
tokudb_drop_part_table_668:
tokudb_drop_simple_table_668:
5585: times out
2952: Not for 5.5
fileops-2: Not for 5.5
fileops-3: Not for 5.5
fileops-4: Not for 5.5
xa-2: Not for 5.5
6053: N/A
tokudb_drop_part_table_668: no tokudb test data in mariadb tree
tokudb_drop_simple_table_668: no tokudb test data in mariadb tree
5585: times out, too many huge insert...selects
fileops-3: how this could work, if alter needs an exclusive mdl lock?
6053: N/A to MariaDB
......@@ -16,6 +16,7 @@ foo CREATE TABLE `foo` (
begin;
insert into foo values (1,10,100),(2,20,200),(3,30,300);
set session transaction isolation level read uncommitted;
set session lock_wait_timeout=1;
insert into foo values (100,100,100);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
alter table foo drop index a;
......
......@@ -5,13 +5,14 @@ create table foo ( a int, b int, c int, key (a), key (b));
insert into foo values (1,10,100);
begin;
insert into foo values(2,20,200);
set session lock_wait_timeout=1;
select * from foo;
a b c
1 10 100
drop table foo;
ERROR 42S02: Unknown table 'foo'
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
rename table foo to bar;
ERROR HY000: Error on rename of './test/foo' to './test/bar' (errno: -30994)
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
truncate table foo;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
alter table foo add index (c);
......
......@@ -5,13 +5,14 @@ create table foo ( a int, b int, c int, key (a), key (b));
insert into foo values (1,10,100);
begin;
insert into foo values (2,20,200);
set session lock_wait_timeout=1;
select * from foo;
a b c
1 10 100
drop table foo;
ERROR 42S02: Unknown table 'foo'
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
rename table foo to bar;
ERROR HY000: Error on rename of './test/foo' to './test/bar' (errno: -30994)
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
truncate table foo;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
alter table foo drop index a;
......
......@@ -6,13 +6,7 @@ select * from t1;
a
1
xa end 'a','ab';
select * from t1;
a
1
xa prepare 'a','ab';
select * from t1;
a
1
xa commit 'a','ab';
select * from t1;
a
......@@ -24,15 +18,7 @@ a
1
2
xa end 'a','ab';
select * from t1;
a
1
2
xa prepare 'a','ab';
select * from t1;
a
1
2
xa rollback 'a','ab';
select * from t1;
a
......
# ticket 895 is a query optimization problem with the primary key
#--source include/have_tokudb.inc
--source include/not_5_5.inc
#--source include/not_5_5.inc
SET DEFAULT_STORAGE_ENGINE = 'tokudb';
--echo # Establish connection conn1 (user = root)
......@@ -22,6 +22,8 @@ insert into foo values (1,10,100),(2,20,200),(3,30,300);
connection conn1;
set session transaction isolation level read uncommitted;
set session lock_wait_timeout=1;
--error ER_LOCK_WAIT_TIMEOUT
insert into foo values (100,100,100);
--error ER_LOCK_WAIT_TIMEOUT
......
# ticket 895 is a query optimization problem with the primary key
--source include/have_tokudb.inc
--source include/not_5_5.inc
#--source include/not_5_5.inc
--echo # Establish connection conn1 (user = root)
connect (conn1,localhost,root,,);
SET DEFAULT_STORAGE_ENGINE = 'tokudb';
......@@ -17,10 +18,11 @@ begin;
insert into foo values(2,20,200);
connection default;
set session lock_wait_timeout=1;
select * from foo;
--error ER_BAD_TABLE_ERROR
--error ER_LOCK_WAIT_TIMEOUT
drop table foo;
--error ER_ERROR_ON_RENAME
--error ER_LOCK_WAIT_TIMEOUT
rename table foo to bar;
--error ER_LOCK_WAIT_TIMEOUT
truncate table foo;
......
# ticket 895 is a query optimization problem with the primary key
--source include/have_tokudb.inc
--source include/not_5_5.inc
#--source include/not_5_5.inc
--echo # Establish connection conn1 (user = root)
connect (conn1,localhost,root,,);
SET DEFAULT_STORAGE_ENGINE = 'tokudb';
......
# ticket 895 is a query optimization problem with the primary key
#--source include/have_tokudb.inc
--source include/not_5_5.inc
#--source include/not_5_5.inc
--echo # Establish connection conn1 (user = root)
connect (conn1,localhost,root,,);
SET DEFAULT_STORAGE_ENGINE = 'tokudb';
......@@ -17,10 +17,11 @@ begin;
insert into foo values (2,20,200);
connection default;
set session lock_wait_timeout=1;
select * from foo;
--error ER_BAD_TABLE_ERROR
--error ER_LOCK_WAIT_TIMEOUT
drop table foo;
--error ER_ERROR_ON_RENAME
--error ER_LOCK_WAIT_TIMEOUT
rename table foo to bar;
--error ER_LOCK_WAIT_TIMEOUT
truncate table foo;
......
-- source include/have_tokudb.inc
--source include/not_5_5.inc
#--source include/not_5_5.inc
--disable_warnings
drop table if exists t1;
......@@ -13,9 +13,7 @@ xa begin 'a','ab';
insert into t1 values (1);
select * from t1;
xa end 'a','ab';
select * from t1;
xa prepare 'a','ab';
select * from t1;
xa commit 'a','ab';
select * from t1;
......@@ -23,9 +21,7 @@ xa begin 'a','ab';
insert into t1 values (2);
select * from t1;
xa end 'a','ab';
select * from t1;
xa prepare 'a','ab';
select * from t1;
xa rollback 'a','ab';
select * from t1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment