diff options
author | monty@tik.mysql.fi <> | 2002-04-12 21:35:46 +0300 |
---|---|---|
committer | monty@tik.mysql.fi <> | 2002-04-12 21:35:46 +0300 |
commit | 056175a1ceb182828fb0fb7e40feac10f09ff3a0 (patch) | |
tree | 0060cbed8a1f7a8adaca0a4dc2e74b3372e28361 /sql/sql_table.cc | |
parent | e857f561fd2fc2e544cba9508884c539ee789b05 (diff) | |
download | mariadb-git-056175a1ceb182828fb0fb7e40feac10f09ff3a0.tar.gz |
Update for BTREE keys in HEAP tables
Split handler->option_flag() to handler->table_flags() and handler->index_flags()
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index cda5d8c9b6b..dcbfd709f97 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -282,7 +282,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, file=get_new_handler((TABLE*) 0, create_info->db_type); if ((create_info->options & HA_LEX_CREATE_TMP_TABLE) && - (file->option_flag() & HA_NO_TEMP_TABLES)) + (file->table_flags() & HA_NO_TEMP_TABLES)) { my_error(ER_ILLEGAL_HA,MYF(0),table_name); DBUG_RETURN(-1); @@ -381,13 +381,13 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, DBUG_RETURN(-1); } if (auto_increment && - (file->option_flag() & HA_WRONG_ASCII_ORDER)) + (file->table_flags() & HA_NO_AUTO_INCREMENT)) { my_error(ER_TABLE_CANT_HANDLE_AUTO_INCREMENT,MYF(0)); DBUG_RETURN(-1); } - if (blob_columns && (file->option_flag() & HA_NO_BLOBS)) + if (blob_columns && (file->table_flags() & HA_NO_BLOBS)) { my_error(ER_TABLE_CANT_HANDLE_BLOB,MYF(0)); DBUG_RETURN(-1); @@ -443,10 +443,12 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, key_info->key_parts=(uint8) key->columns.elements; key_info->key_part=key_part_info; key_info->usable_key_parts= key_number; + key_info->algorithm=key->algorithm; + /* TODO: Add proper checks if handler supports key_type and algorithm */ if (key->type == Key::FULLTEXT) { - if (!(file->option_flag() & HA_CAN_FULLTEXT)) + if (!(file->table_flags() & HA_CAN_FULLTEXT)) { my_error(ER_TABLE_CANT_HANDLE_FULLTEXT, MYF(0)); DBUG_RETURN(-1); @@ -470,7 +472,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, } if (f_is_blob(sql_field->pack_flag)) { - if (!(file->option_flag() & HA_BLOB_KEY)) + if (!(file->table_flags() & HA_BLOB_KEY)) { my_printf_error(ER_BLOB_USED_AS_KEY,ER(ER_BLOB_USED_AS_KEY),MYF(0), column->field_name); @@ -496,7 +498,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, my_error(ER_PRIMARY_CANT_HAVE_NULL, MYF(0)); DBUG_RETURN(-1); } - if (!(file->option_flag() & HA_NULL_KEY)) + if (!(file->table_flags() & HA_NULL_KEY)) { my_printf_error(ER_NULL_COLUMN_IN_INDEX,ER(ER_NULL_COLUMN_IN_INDEX), MYF(0),column->field_name); @@ -506,7 +508,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, } if (MTYP_TYPENR(sql_field->unireg_check) == Field::NEXT_NUMBER) { - if (column_nr == 0 || (file->option_flag() & HA_AUTO_PART_KEY)) + if (column_nr == 0 || (file->table_flags() & HA_AUTO_PART_KEY)) auto_increment--; // Field is used } key_part_info->fieldnr= field; @@ -526,14 +528,14 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, } else if (column->length > length || ((f_is_packed(sql_field->pack_flag) || - ((file->option_flag() & HA_NO_PREFIX_CHAR_KEYS) && + ((file->table_flags() & HA_NO_PREFIX_CHAR_KEYS) && (key_info->flags & HA_NOSAME))) && column->length != length)) { my_error(ER_WRONG_SUB_KEY,MYF(0)); DBUG_RETURN(-1); } - if (!(file->option_flag() & HA_NO_PREFIX_CHAR_KEYS)) + if (!(file->table_flags() & HA_NO_PREFIX_CHAR_KEYS)) length=column->length; } else if (length == 0) @@ -593,7 +595,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, } } if (!unique_key && !primary_key && - (file->option_flag() & HA_REQUIRE_PRIMARY_KEY)) + (file->table_flags() & HA_REQUIRE_PRIMARY_KEY)) { my_error(ER_REQUIRES_PRIMARY_KEY,MYF(0)); DBUG_RETURN(-1); |