Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
Description
There are two similar pieces of the code not friendly to user defined plugins in
- opt_subselect.cc:
if (field->flags & BLOB_FLAG)
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;
- sql_select.cc:
if (field->flags & BLOB_FLAG)
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;
We'll split this code into a new virtual method in Field:
virtual en_fieldtype tmp_engine_column_type(bool use_packed_rows) const; |
so user data types will be able to redefine behaviour as they wish.
Note, originally these two pieces were equal, but then the sql_select.cc version was later extended to handle MYSQL_TYPE_VARCHAR in a special way.
According to SergeP, these two pieces were indended to be equal. So there is probably a bug in the opt_subselect.cc version. This change will fix this problem.
Attachments
Issue Links
- blocks
-
MDEV-4912 Data type plugin API version 1
- Closed