mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Add support for up to VARCHAR (size up to 65535)
Renamed HA_VAR_LENGTH to HA_VAR_LENGTH_PART Renamed in all files FIELD_TYPE_STRING and FIELD_TYPE_VAR_STRING to MYSQL_TYPE_STRING and MYSQL_TYPE_VAR_STRING to make it easy to catch all possible errors Added support for VARCHAR KEYS to heap Removed support for ISAM Now only long VARCHAR columns are changed to TEXT on demand (not CHAR) Internal temporary files can now use fixed length tables if the used VARCHAR columns are short
This commit is contained in:
@ -69,9 +69,21 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
||||
case HA_KEYTYPE_UINT24:
|
||||
case HA_KEYTYPE_INT8:
|
||||
keyinfo->seg[j].flag|= HA_SWAP_KEY;
|
||||
break;
|
||||
case HA_KEYTYPE_VARBINARY:
|
||||
/* Case-insensitiveness is handled in coll->hash_sort */
|
||||
keyinfo->seg[j].type= HA_KEYTYPE_VARTEXT;
|
||||
/* fall_through */
|
||||
case HA_KEYTYPE_VARTEXT:
|
||||
if (!my_binary_compare(keyinfo->seg[j].charset))
|
||||
keyinfo->flag|= HA_END_SPACE_KEY;
|
||||
keyinfo->flag|= HA_VAR_LENGTH_KEY;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (keyinfo->seg[j].flag & HA_END_SPACE_ARE_EQUAL)
|
||||
keyinfo->flag|= HA_END_SPACE_KEY;
|
||||
}
|
||||
keyinfo->length= length;
|
||||
length+= keyinfo->rb_tree.size_of_element +
|
||||
@ -82,7 +94,9 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
||||
if (keyinfo->algorithm == HA_KEY_ALG_BTREE)
|
||||
{
|
||||
key_segs++; /* additional HA_KEYTYPE_END segment */
|
||||
if (keyinfo->flag & HA_NULL_PART_KEY)
|
||||
if (keyinfo->flag & HA_VAR_LENGTH_KEY)
|
||||
keyinfo->get_key_length= hp_rb_var_key_length;
|
||||
else if (keyinfo->flag & HA_NULL_PART_KEY)
|
||||
keyinfo->get_key_length= hp_rb_null_key_length;
|
||||
else
|
||||
keyinfo->get_key_length= hp_rb_key_length;
|
||||
|
Reference in New Issue
Block a user