summaryrefslogtreecommitdiff
path: root/sql/sql_table.cc
diff options
context:
space:
mode:
authormonty@tik.mysql.fi <>2002-04-12 21:35:46 +0300
committermonty@tik.mysql.fi <>2002-04-12 21:35:46 +0300
commit056175a1ceb182828fb0fb7e40feac10f09ff3a0 (patch)
tree0060cbed8a1f7a8adaca0a4dc2e74b3372e28361 /sql/sql_table.cc
parente857f561fd2fc2e544cba9508884c539ee789b05 (diff)
downloadmariadb-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.cc22
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);