Details
-
Type:
Task
-
Status: Open
-
Priority:
Major
-
Resolution: Unresolved
-
Fix Version/s: 10.2
-
Component/s: None
-
Labels:None
Description
Create_field is a big class and some of its parts are not really used in many contexts.
Before adding pluggable data types under terms of MDEV-4912, it would be nice to clean-up use of Create_field.
Under terms of this task we will:
1. Move members of Create_field that are needed only at ALTER time into a separate class Alter_column_specification:
class Alter_column_specification
{
public:
const char *change; // If done with alter table
const char *after; // Put column after this one
Field *field; // For alter table
TYPELIB *save_interval; // Temporary copy for the above
// Used only for UCS2 intervals
uint offset;
uint8 interval_id; // For rea_create_table
bool create_if_not_exists; // Used in ALTER TABLE IF NOT EXISTS
};
2. Move the rest of Create_field members (except field_name) into a separate class Column_specification.
class Column_specification
{
public:
LEX_STRING comment;
Item *def, *on_update;
enum enum_field_types sql_type;
ulonglong length;
uint32 char_length;
uint decimals, flags, pack_length, key_length;
Field::utype unireg_check;
TYPELIB *interval;
List<String> interval_list;
CHARSET_INFO *charset;
uint32 srid;
Field::geometry_type geom_type;
engine_option_value *option_list;
ha_field_option_struct *option_struct;
uint pack_flag;
Virtual_column_info *vcol_info;
bool stored_in_db;
};
3. Derive Create_field from Column_specification and Alter_column_specification:
class Create_field: public Column_specification, public Alter_column_specification, public Sql_alloc { public: LEX_CSTRING field_name; };
Note, Create_field::field_name will be changed from "const char *" to LEX_CSTRING
under terms of MDEV-8092.
4. Change data type of sp_variable::field_def and sp_head::m_return_field_def
from Create_field to Column_specification. These classes need neither the
Alter_column_specification nor the "field_name" parts of Create_field.
Gliffy Diagrams
Attachments
Issue Links
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions