mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-19724 Add Field::tmp_engine_column_type()
This commit is contained in:
@@ -7529,6 +7529,12 @@ Field *Field_string::make_new_field(MEM_ROOT *root, TABLE *new_table,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
en_fieldtype Field_string::tmp_engine_column_type(bool use_packed_rows) const
|
||||||
|
{
|
||||||
|
return field_length >= MIN_STRING_LENGTH_TO_PACK_ROWS ? FIELD_SKIP_ENDSPACE :
|
||||||
|
FIELD_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
VARCHAR type
|
VARCHAR type
|
||||||
Data in field->ptr is stored as:
|
Data in field->ptr is stored as:
|
||||||
|
18
sql/field.h
18
sql/field.h
@@ -1125,6 +1125,10 @@ public:
|
|||||||
*/
|
*/
|
||||||
return type();
|
return type();
|
||||||
}
|
}
|
||||||
|
virtual en_fieldtype tmp_engine_column_type(bool use_packed_rows) const
|
||||||
|
{
|
||||||
|
return FIELD_NORMAL;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
Conversion type for from the source to the current field.
|
Conversion type for from the source to the current field.
|
||||||
*/
|
*/
|
||||||
@@ -3647,6 +3651,7 @@ public:
|
|||||||
}
|
}
|
||||||
enum ha_base_keytype key_type() const
|
enum ha_base_keytype key_type() const
|
||||||
{ return binary() ? HA_KEYTYPE_BINARY : HA_KEYTYPE_TEXT; }
|
{ return binary() ? HA_KEYTYPE_BINARY : HA_KEYTYPE_TEXT; }
|
||||||
|
en_fieldtype tmp_engine_column_type(bool use_packed_rows) const;
|
||||||
bool zero_pack() const { return 0; }
|
bool zero_pack() const { return 0; }
|
||||||
Copy_func *get_copy_func(const Field *from) const;
|
Copy_func *get_copy_func(const Field *from) const;
|
||||||
int reset(void)
|
int reset(void)
|
||||||
@@ -3747,6 +3752,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Type_handler *type_handler() const { return &type_handler_varchar; }
|
const Type_handler *type_handler() const { return &type_handler_varchar; }
|
||||||
|
en_fieldtype tmp_engine_column_type(bool use_packed_rows) const
|
||||||
|
{
|
||||||
|
return FIELD_VARCHAR;
|
||||||
|
}
|
||||||
enum ha_base_keytype key_type() const;
|
enum ha_base_keytype key_type() const;
|
||||||
uint16 key_part_flag() const { return HA_VAR_LENGTH_PART; }
|
uint16 key_part_flag() const { return HA_VAR_LENGTH_PART; }
|
||||||
uint16 key_part_length_bytes() const { return HA_KEY_BLOB_LENGTH; }
|
uint16 key_part_length_bytes() const { return HA_KEY_BLOB_LENGTH; }
|
||||||
@@ -3967,6 +3976,10 @@ public:
|
|||||||
{ return binary() ? HA_KEYTYPE_VARBINARY2 : HA_KEYTYPE_VARTEXT2; }
|
{ return binary() ? HA_KEYTYPE_VARBINARY2 : HA_KEYTYPE_VARTEXT2; }
|
||||||
uint16 key_part_flag() const { return HA_BLOB_PART; }
|
uint16 key_part_flag() const { return HA_BLOB_PART; }
|
||||||
uint16 key_part_length_bytes() const { return HA_KEY_BLOB_LENGTH; }
|
uint16 key_part_length_bytes() const { return HA_KEY_BLOB_LENGTH; }
|
||||||
|
en_fieldtype tmp_engine_column_type(bool use_packed_rows) const
|
||||||
|
{
|
||||||
|
return FIELD_BLOB;
|
||||||
|
}
|
||||||
Type_std_attributes type_std_attributes() const
|
Type_std_attributes type_std_attributes() const
|
||||||
{
|
{
|
||||||
return Type_std_attributes(Field_blob::max_display_length(), decimals(),
|
return Type_std_attributes(Field_blob::max_display_length(), decimals(),
|
||||||
@@ -4632,6 +4645,11 @@ public:
|
|||||||
m_table(NULL)
|
m_table(NULL)
|
||||||
{}
|
{}
|
||||||
~Field_row();
|
~Field_row();
|
||||||
|
en_fieldtype tmp_engine_column_type(bool use_packed_rows) const
|
||||||
|
{
|
||||||
|
DBUG_ASSERT(0);
|
||||||
|
return Field::tmp_engine_column_type(use_packed_rows);
|
||||||
|
}
|
||||||
enum_conv_type rpl_conv_type_from(const Conv_source &source,
|
enum_conv_type rpl_conv_type_from(const Conv_source &source,
|
||||||
const Relay_log_info *rli,
|
const Relay_log_info *rli,
|
||||||
const Conv_param ¶m) const
|
const Conv_param ¶m) const
|
||||||
|
@@ -4483,15 +4483,7 @@ SJ_TMP_TABLE::create_sj_weedout_tmp_table(THD *thd)
|
|||||||
|
|
||||||
/* Make entry for create table */
|
/* Make entry for create table */
|
||||||
recinfo->length=length;
|
recinfo->length=length;
|
||||||
if (field->flags & BLOB_FLAG)
|
recinfo->type= field->tmp_engine_column_type(use_packed_rows);
|
||||||
recinfo->type= FIELD_BLOB;
|
|
||||||
else if (use_packed_rows &&
|
|
||||||
field->real_type() == MYSQL_TYPE_STRING &&
|
|
||||||
length >= MIN_STRING_LENGTH_TO_PACK_ROWS)
|
|
||||||
recinfo->type=FIELD_SKIP_ENDSPACE;
|
|
||||||
else
|
|
||||||
recinfo->type=FIELD_NORMAL;
|
|
||||||
|
|
||||||
field->set_table_name(&table->alias);
|
field->set_table_name(&table->alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -18378,17 +18378,7 @@ bool Create_tmp_table::finalize(THD *thd,
|
|||||||
|
|
||||||
/* Make entry for create table */
|
/* Make entry for create table */
|
||||||
recinfo->length=length;
|
recinfo->length=length;
|
||||||
if (field->flags & BLOB_FLAG)
|
recinfo->type= field->tmp_engine_column_type(use_packed_rows);
|
||||||
recinfo->type= FIELD_BLOB;
|
|
||||||
else if (use_packed_rows &&
|
|
||||||
field->real_type() == MYSQL_TYPE_STRING &&
|
|
||||||
length >= MIN_STRING_LENGTH_TO_PACK_ROWS)
|
|
||||||
recinfo->type= FIELD_SKIP_ENDSPACE;
|
|
||||||
else if (field->real_type() == MYSQL_TYPE_VARCHAR)
|
|
||||||
recinfo->type= FIELD_VARCHAR;
|
|
||||||
else
|
|
||||||
recinfo->type= FIELD_NORMAL;
|
|
||||||
|
|
||||||
if (!--m_hidden_field_count)
|
if (!--m_hidden_field_count)
|
||||||
m_null_count= (m_null_count + 7) & ~7; // move to next byte
|
m_null_count= (m_null_count + 7) & ~7; // move to next byte
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user