mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Bug#27047 INFORMATION_SCHEMA table cannot have BIGINT fields
added support for DATE, TIME, BLOB, FLOAT and all *INT variants in I_S tables sql/item.h: added support for DATE, TIME, BLOB, FLOAT and all *INT variants in I_S tables sql/sp.cc: added support for DATE, TIME, BLOB, FLOAT and all *INT variants in I_S tables sql/sql_show.cc: added support for DATE, TIME, BLOB, FLOAT and all *INT variants in I_S tables sql/table.h: added MY_I_S_MAYBE_NULL & MY_I_S_UNSIGNED flags which are used as field atributes for I_S schema table fields
This commit is contained in:
parent
35b15c8d6a
commit
8f374c8f34
4 changed files with 179 additions and 104 deletions
44
sql/item.h
44
sql/item.h
|
@ -1840,33 +1840,57 @@ public:
|
|||
|
||||
|
||||
/* for show tables */
|
||||
|
||||
class Item_datetime :public Item_string
|
||||
class Item_partition_func_safe_string: public Item_string
|
||||
{
|
||||
public:
|
||||
Item_datetime(const char *item_name): Item_string(item_name,"",0,
|
||||
&my_charset_bin)
|
||||
{ max_length=19;}
|
||||
enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; }
|
||||
Item_partition_func_safe_string(const char *name, uint length,
|
||||
CHARSET_INFO *cs= NULL):
|
||||
Item_string(name, length, cs)
|
||||
{}
|
||||
bool check_partition_func_processor(byte *int_arg) {return TRUE;}
|
||||
};
|
||||
|
||||
class Item_empty_string :public Item_string
|
||||
|
||||
class Item_return_date_time :public Item_partition_func_safe_string
|
||||
{
|
||||
enum_field_types date_time_field_type;
|
||||
public:
|
||||
Item_return_date_time(const char *name_arg, enum_field_types field_type_arg)
|
||||
:Item_partition_func_safe_string(name_arg, 0, &my_charset_bin),
|
||||
date_time_field_type(field_type_arg)
|
||||
{ }
|
||||
enum_field_types field_type() const { return date_time_field_type; }
|
||||
};
|
||||
|
||||
|
||||
class Item_blob :public Item_partition_func_safe_string
|
||||
{
|
||||
public:
|
||||
Item_blob(const char *name, uint length) :
|
||||
Item_partition_func_safe_string(name, length, &my_charset_bin)
|
||||
{ max_length= length; }
|
||||
enum Type type() const { return TYPE_HOLDER; }
|
||||
enum_field_types field_type() const { return MYSQL_TYPE_BLOB; }
|
||||
};
|
||||
|
||||
|
||||
class Item_empty_string :public Item_partition_func_safe_string
|
||||
{
|
||||
public:
|
||||
Item_empty_string(const char *header,uint length, CHARSET_INFO *cs= NULL) :
|
||||
Item_string("",0, cs ? cs : &my_charset_bin)
|
||||
Item_partition_func_safe_string("",0, cs ? cs : &my_charset_bin)
|
||||
{ name=(char*) header; max_length= cs ? length * cs->mbmaxlen : length; }
|
||||
void make_field(Send_field *field);
|
||||
};
|
||||
|
||||
|
||||
class Item_return_int :public Item_int
|
||||
{
|
||||
enum_field_types int_field_type;
|
||||
public:
|
||||
Item_return_int(const char *name_arg, uint length,
|
||||
enum_field_types field_type_arg)
|
||||
:Item_int(name_arg, 0, length), int_field_type(field_type_arg)
|
||||
enum_field_types field_type_arg, longlong value= 0)
|
||||
:Item_int(name_arg, value, length), int_field_type(field_type_arg)
|
||||
{
|
||||
unsigned_flag=1;
|
||||
}
|
||||
|
|
|
@ -784,7 +784,9 @@ db_show_routine_status(THD *thd, int type, const char *wild)
|
|||
{
|
||||
switch (used_field->field_type) {
|
||||
case MYSQL_TYPE_TIMESTAMP:
|
||||
field_list.push_back(item=new Item_datetime(used_field->field_name));
|
||||
field_list.push_back(item=
|
||||
new Item_return_date_time(used_field->field_name,
|
||||
MYSQL_TYPE_DATETIME));
|
||||
break;
|
||||
default:
|
||||
field_list.push_back(item=new Item_empty_string(used_field->field_name,
|
||||
|
|
229
sql/sql_show.cc
229
sql/sql_show.cc
|
@ -4704,16 +4704,26 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list)
|
|||
for (; fields_info->field_name; fields_info++)
|
||||
{
|
||||
switch (fields_info->field_type) {
|
||||
case MYSQL_TYPE_TINY:
|
||||
case MYSQL_TYPE_LONG:
|
||||
if (!(item= new Item_int(fields_info->field_name,
|
||||
fields_info->value,
|
||||
fields_info->field_length)))
|
||||
case MYSQL_TYPE_SHORT:
|
||||
case MYSQL_TYPE_LONGLONG:
|
||||
case MYSQL_TYPE_INT24:
|
||||
if (!(item= new Item_return_int(fields_info->field_name,
|
||||
fields_info->field_length,
|
||||
fields_info->field_type,
|
||||
fields_info->value)))
|
||||
{
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
item->unsigned_flag= (fields_info->field_flags & MY_I_S_UNSIGNED);
|
||||
break;
|
||||
case MYSQL_TYPE_DATE:
|
||||
case MYSQL_TYPE_TIME:
|
||||
case MYSQL_TYPE_TIMESTAMP:
|
||||
if (!(item=new Item_datetime(fields_info->field_name)))
|
||||
case MYSQL_TYPE_DATETIME:
|
||||
if (!(item=new Item_return_date_time(fields_info->field_name,
|
||||
fields_info->field_type)))
|
||||
{
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
@ -4729,7 +4739,7 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list)
|
|||
{
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
item->unsigned_flag= (fields_info->field_length/10000)%10;
|
||||
item->unsigned_flag= (fields_info->field_flags & MY_I_S_UNSIGNED);
|
||||
item->decimals= fields_info->field_length%10;
|
||||
item->max_length= (fields_info->field_length/100)%100;
|
||||
if (item->unsigned_flag == 0)
|
||||
|
@ -4739,6 +4749,16 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list)
|
|||
item->set_name(fields_info->field_name,
|
||||
strlen(fields_info->field_name), cs);
|
||||
break;
|
||||
case MYSQL_TYPE_TINY_BLOB:
|
||||
case MYSQL_TYPE_MEDIUM_BLOB:
|
||||
case MYSQL_TYPE_LONG_BLOB:
|
||||
case MYSQL_TYPE_BLOB:
|
||||
if (!(item= new Item_blob(fields_info->field_name,
|
||||
fields_info->field_length)))
|
||||
{
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
/* Don't let unimplemented types pass through. Could be a grave error. */
|
||||
DBUG_ASSERT(fields_info->field_type == MYSQL_TYPE_STRING);
|
||||
|
@ -4754,7 +4774,7 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list)
|
|||
break;
|
||||
}
|
||||
field_list.push_back(item);
|
||||
item->maybe_null= fields_info->maybe_null;
|
||||
item->maybe_null= (fields_info->field_flags & MY_I_S_MAYBE_NULL);
|
||||
field_count++;
|
||||
}
|
||||
TMP_TABLE_PARAM *tmp_table_param =
|
||||
|
@ -5374,25 +5394,29 @@ ST_FIELD_INFO tables_fields_info[]=
|
|||
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Name"},
|
||||
{"TABLE_TYPE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"ENGINE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, "Engine"},
|
||||
{"VERSION", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1, "Version"},
|
||||
{"VERSION", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Version"},
|
||||
{"ROW_FORMAT", 10, MYSQL_TYPE_STRING, 0, 1, "Row_format"},
|
||||
{"TABLE_ROWS", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1, "Rows"},
|
||||
{"AVG_ROW_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1,
|
||||
"Avg_row_length"},
|
||||
{"DATA_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1,
|
||||
"Data_length"},
|
||||
{"MAX_DATA_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1,
|
||||
"Max_data_length"},
|
||||
{"INDEX_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1,
|
||||
"Index_length"},
|
||||
{"DATA_FREE", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1, "Data_free"},
|
||||
{"AUTO_INCREMENT", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1,
|
||||
"Auto_increment"},
|
||||
{"CREATE_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Create_time"},
|
||||
{"UPDATE_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Update_time"},
|
||||
{"CHECK_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Check_time"},
|
||||
{"TABLE_ROWS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Rows"},
|
||||
{"AVG_ROW_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Avg_row_length"},
|
||||
{"DATA_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Data_length"},
|
||||
{"MAX_DATA_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Max_data_length"},
|
||||
{"INDEX_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Index_length"},
|
||||
{"DATA_FREE", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Data_free"},
|
||||
{"AUTO_INCREMENT", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Auto_increment"},
|
||||
{"CREATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Create_time"},
|
||||
{"UPDATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Update_time"},
|
||||
{"CHECK_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Check_time"},
|
||||
{"TABLE_COLLATION", 64, MYSQL_TYPE_STRING, 0, 1, "Collation"},
|
||||
{"CHECKSUM", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1, "Checksum"},
|
||||
{"CHECKSUM", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Checksum"},
|
||||
{"CREATE_OPTIONS", 255, MYSQL_TYPE_STRING, 0, 1, "Create_options"},
|
||||
{"TABLE_COMMENT", 80, MYSQL_TYPE_STRING, 0, 0, "Comment"},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
|
@ -5405,15 +5429,20 @@ ST_FIELD_INFO columns_fields_info[]=
|
|||
{"TABLE_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"COLUMN_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Field"},
|
||||
{"ORDINAL_POSITION", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"COLUMN_DEFAULT", MAX_FIELD_VARCHARLENGTH, MYSQL_TYPE_STRING, 0, 1, "Default"},
|
||||
{"ORDINAL_POSITION", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
MY_I_S_UNSIGNED, 0},
|
||||
{"COLUMN_DEFAULT", MAX_FIELD_VARCHARLENGTH, MYSQL_TYPE_STRING, 0,
|
||||
1, "Default"},
|
||||
{"IS_NULLABLE", 3, MYSQL_TYPE_STRING, 0, 0, "Null"},
|
||||
{"DATA_TYPE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"CHARACTER_MAXIMUM_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1,
|
||||
0},
|
||||
{"CHARACTER_OCTET_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"NUMERIC_PRECISION", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"NUMERIC_SCALE", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"CHARACTER_MAXIMUM_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG,
|
||||
0, (MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"CHARACTER_OCTET_LENGTH", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONGLONG,
|
||||
0, (MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"NUMERIC_PRECISION", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG,
|
||||
0, (MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"NUMERIC_SCALE", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONGLONG,
|
||||
0, (MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 1, "Collation"},
|
||||
{"COLUMN_TYPE", 65535, MYSQL_TYPE_STRING, 0, 0, "Type"},
|
||||
|
@ -5430,7 +5459,7 @@ ST_FIELD_INFO charsets_fields_info[]=
|
|||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Charset"},
|
||||
{"DEFAULT_COLLATE_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Default collation"},
|
||||
{"DESCRIPTION", 60, MYSQL_TYPE_STRING, 0, 0, "Description"},
|
||||
{"MAXLEN", 3 ,MYSQL_TYPE_LONG, 0, 0, "Maxlen"},
|
||||
{"MAXLEN", 3, MYSQL_TYPE_LONGLONG, 0, 0, "Maxlen"},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -5439,10 +5468,10 @@ ST_FIELD_INFO collation_fields_info[]=
|
|||
{
|
||||
{"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Collation"},
|
||||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Charset"},
|
||||
{"ID", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Id"},
|
||||
{"ID", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Id"},
|
||||
{"IS_DEFAULT", 3, MYSQL_TYPE_STRING, 0, 0, "Default"},
|
||||
{"IS_COMPILED", 3, MYSQL_TYPE_STRING, 0, 0, "Compiled"},
|
||||
{"SORTLEN", 3 ,MYSQL_TYPE_LONG, 0, 0, "Sortlen"},
|
||||
{"SORTLEN", 3, MYSQL_TYPE_LONGLONG, 0, 0, "Sortlen"},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -5469,19 +5498,19 @@ ST_FIELD_INFO events_fields_info[]=
|
|||
{"EVENT_BODY", 8, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"EVENT_DEFINITION", 65535, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"EVENT_TYPE", 9, MYSQL_TYPE_STRING, 0, 0, "Type"},
|
||||
{"EXECUTE_AT", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Execute at"},
|
||||
{"EXECUTE_AT", 0, MYSQL_TYPE_DATETIME, 0, 1, "Execute at"},
|
||||
{"INTERVAL_VALUE", 256, MYSQL_TYPE_STRING, 0, 1, "Interval value"},
|
||||
{"INTERVAL_FIELD", 18, MYSQL_TYPE_STRING, 0, 1, "Interval field"},
|
||||
{"SQL_MODE", 65535, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"STARTS", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Starts"},
|
||||
{"ENDS", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Ends"},
|
||||
{"STARTS", 0, MYSQL_TYPE_DATETIME, 0, 1, "Starts"},
|
||||
{"ENDS", 0, MYSQL_TYPE_DATETIME, 0, 1, "Ends"},
|
||||
{"STATUS", 18, MYSQL_TYPE_STRING, 0, 0, "Status"},
|
||||
{"ON_COMPLETION", 12, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"CREATED", 0, MYSQL_TYPE_TIMESTAMP, 0, 0, 0},
|
||||
{"LAST_ALTERED", 0, MYSQL_TYPE_TIMESTAMP, 0, 0, 0},
|
||||
{"LAST_EXECUTED", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, 0},
|
||||
{"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 0, 0},
|
||||
{"LAST_ALTERED", 0, MYSQL_TYPE_DATETIME, 0, 0, 0},
|
||||
{"LAST_EXECUTED", 0, MYSQL_TYPE_DATETIME, 0, 1, 0},
|
||||
{"EVENT_COMMENT", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"ORIGINATOR", 10, MYSQL_TYPE_LONG, 0, 0, "Originator"},
|
||||
{"ORIGINATOR", 10, MYSQL_TYPE_LONGLONG, 0, 0, "Originator"},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -5512,8 +5541,8 @@ ST_FIELD_INFO proc_fields_info[]=
|
|||
{"SQL_DATA_ACCESS", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"SQL_PATH", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"SECURITY_TYPE", 7, MYSQL_TYPE_STRING, 0, 0, "Security_type"},
|
||||
{"CREATED", 0, MYSQL_TYPE_TIMESTAMP, 0, 0, "Created"},
|
||||
{"LAST_ALTERED", 0, MYSQL_TYPE_TIMESTAMP, 0, 0, "Modified"},
|
||||
{"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 0, "Created"},
|
||||
{"LAST_ALTERED", 0, MYSQL_TYPE_DATETIME, 0, 0, "Modified"},
|
||||
{"SQL_MODE", 65535, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"ROUTINE_COMMENT", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Comment"},
|
||||
{"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, "Definer"},
|
||||
|
@ -5526,14 +5555,15 @@ ST_FIELD_INFO stat_fields_info[]=
|
|||
{"TABLE_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"TABLE_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Table"},
|
||||
{"NON_UNIQUE", 1, MYSQL_TYPE_LONG, 0, 0, "Non_unique"},
|
||||
{"NON_UNIQUE", 1, MYSQL_TYPE_LONGLONG, 0, 0, "Non_unique"},
|
||||
{"INDEX_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"INDEX_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Key_name"},
|
||||
{"SEQ_IN_INDEX", 2, MYSQL_TYPE_LONG, 0, 0, "Seq_in_index"},
|
||||
{"SEQ_IN_INDEX", 2, MYSQL_TYPE_LONGLONG, 0, 0, "Seq_in_index"},
|
||||
{"COLUMN_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Column_name"},
|
||||
{"COLLATION", 1, MYSQL_TYPE_STRING, 0, 1, "Collation"},
|
||||
{"CARDINALITY", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 1, "Cardinality"},
|
||||
{"SUB_PART", 3, MYSQL_TYPE_LONG, 0, 1, "Sub_part"},
|
||||
{"CARDINALITY", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 1,
|
||||
"Cardinality"},
|
||||
{"SUB_PART", 3, MYSQL_TYPE_LONGLONG, 0, 1, "Sub_part"},
|
||||
{"PACKED", 10, MYSQL_TYPE_STRING, 0, 1, "Packed"},
|
||||
{"NULLABLE", 3, MYSQL_TYPE_STRING, 0, 0, "Null"},
|
||||
{"INDEX_TYPE", 16, MYSQL_TYPE_STRING, 0, 0, "Index_type"},
|
||||
|
@ -5623,8 +5653,8 @@ ST_FIELD_INFO key_column_usage_fields_info[]=
|
|||
{"TABLE_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"COLUMN_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"ORDINAL_POSITION", 10 ,MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"POSITION_IN_UNIQUE_CONSTRAINT", 10 ,MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"ORDINAL_POSITION", 10 ,MYSQL_TYPE_LONGLONG, 0, 0, 0},
|
||||
{"POSITION_IN_UNIQUE_CONSTRAINT", 10 ,MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"REFERENCED_TABLE_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"REFERENCED_TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"REFERENCED_COLUMN_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
|
@ -5646,8 +5676,8 @@ ST_FIELD_INFO open_tables_fields_info[]=
|
|||
{
|
||||
{"Database", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Database"},
|
||||
{"Table",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Table"},
|
||||
{"In_use", 1, MYSQL_TYPE_LONG, 0, 0, "In_use"},
|
||||
{"Name_locked", 4, MYSQL_TYPE_LONG, 0, 0, "Name_locked"},
|
||||
{"In_use", 1, MYSQL_TYPE_LONGLONG, 0, 0, "In_use"},
|
||||
{"Name_locked", 4, MYSQL_TYPE_LONGLONG, 0, 0, "Name_locked"},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -5661,7 +5691,7 @@ ST_FIELD_INFO triggers_fields_info[]=
|
|||
{"EVENT_OBJECT_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"EVENT_OBJECT_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"EVENT_OBJECT_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Table"},
|
||||
{"ACTION_ORDER", 4, MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"ACTION_ORDER", 4, MYSQL_TYPE_LONGLONG, 0, 0, 0},
|
||||
{"ACTION_CONDITION", 65535, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"ACTION_STATEMENT", 65535, MYSQL_TYPE_STRING, 0, 0, "Statement"},
|
||||
{"ACTION_ORIENTATION", 9, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
|
@ -5670,7 +5700,7 @@ ST_FIELD_INFO triggers_fields_info[]=
|
|||
{"ACTION_REFERENCE_NEW_TABLE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"ACTION_REFERENCE_OLD_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"ACTION_REFERENCE_NEW_ROW", 3, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"CREATED", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Created"},
|
||||
{"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 1, "Created"},
|
||||
{"SQL_MODE", 65535, MYSQL_TYPE_STRING, 0, 0, "sql_mode"},
|
||||
{"DEFINER", 65535, MYSQL_TYPE_STRING, 0, 0, "Definer"},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
|
@ -5684,23 +5714,27 @@ ST_FIELD_INFO partitions_fields_info[]=
|
|||
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"PARTITION_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"SUBPARTITION_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"PARTITION_ORDINAL_POSITION", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"SUBPARTITION_ORDINAL_POSITION", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"PARTITION_ORDINAL_POSITION", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"SUBPARTITION_ORDINAL_POSITION", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"PARTITION_METHOD", 12, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"SUBPARTITION_METHOD", 12, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"PARTITION_EXPRESSION", 65535, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"SUBPARTITION_EXPRESSION", 65535, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"PARTITION_DESCRIPTION", 65535, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"TABLE_ROWS", 21 , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"AVG_ROW_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"DATA_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"MAX_DATA_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"INDEX_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"DATA_FREE", 21 , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"CREATE_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, 0},
|
||||
{"UPDATE_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, 0},
|
||||
{"CHECK_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, 0},
|
||||
{"CHECKSUM", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"TABLE_ROWS", 21 , MYSQL_TYPE_LONGLONG, 0, MY_I_S_UNSIGNED, 0},
|
||||
{"AVG_ROW_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0, MY_I_S_UNSIGNED, 0},
|
||||
{"DATA_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0, MY_I_S_UNSIGNED, 0},
|
||||
{"MAX_DATA_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"INDEX_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0, MY_I_S_UNSIGNED, 0},
|
||||
{"DATA_FREE", 21 , MYSQL_TYPE_LONGLONG, 0, MY_I_S_UNSIGNED, 0},
|
||||
{"CREATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, 0},
|
||||
{"UPDATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, 0},
|
||||
{"CHECK_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, 0},
|
||||
{"CHECKSUM", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"PARTITION_COMMENT", 80, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"NODEGROUP", 12 , MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"TABLESPACE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
|
@ -5734,12 +5768,12 @@ ST_FIELD_INFO system_variables_fields_info[]=
|
|||
|
||||
ST_FIELD_INFO processlist_fields_info[]=
|
||||
{
|
||||
{"ID", 4, MYSQL_TYPE_LONG, 0, 0, "Id"},
|
||||
{"ID", 4, MYSQL_TYPE_LONGLONG, 0, 0, "Id"},
|
||||
{"USER", 16, MYSQL_TYPE_STRING, 0, 0, "User"},
|
||||
{"HOST", LIST_PROCESS_HOST_LEN, MYSQL_TYPE_STRING, 0, 0, "Host"},
|
||||
{"DB", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, "Db"},
|
||||
{"COMMAND", 16, MYSQL_TYPE_STRING, 0, 0, "Command"},
|
||||
{"TIME", 7, MYSQL_TYPE_LONG, 0, 0, "Time"},
|
||||
{"TIME", 7, MYSQL_TYPE_LONGLONG, 0, 0, "Time"},
|
||||
{"STATE", 64, MYSQL_TYPE_STRING, 0, 1, "State"},
|
||||
{"INFO", PROCESS_LIST_INFO_WIDTH, MYSQL_TYPE_STRING, 0, 1, "Info"},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
|
@ -5763,7 +5797,7 @@ ST_FIELD_INFO plugin_fields_info[]=
|
|||
|
||||
ST_FIELD_INFO files_fields_info[]=
|
||||
{
|
||||
{"FILE_ID", 4, MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"FILE_ID", 4, MYSQL_TYPE_LONGLONG, 0, 0, 0},
|
||||
{"FILE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"FILE_TYPE", 20, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"TABLESPACE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
|
@ -5771,34 +5805,45 @@ ST_FIELD_INFO files_fields_info[]=
|
|||
{"TABLE_SCHEMA", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"LOGFILE_GROUP_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"LOGFILE_GROUP_NUMBER", 4, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"LOGFILE_GROUP_NUMBER", 4, MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"ENGINE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"FULLTEXT_KEYS", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{"DELETED_ROWS", 4, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"UPDATE_COUNT", 4, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"FREE_EXTENTS", 4, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"TOTAL_EXTENTS", 4, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"EXTENT_SIZE", 4, MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"INITIAL_SIZE", 21, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"MAXIMUM_SIZE", 21, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"AUTOEXTEND_SIZE", 21, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"CREATION_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, 0},
|
||||
{"LAST_UPDATE_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, 0},
|
||||
{"LAST_ACCESS_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, 0},
|
||||
{"RECOVER_TIME", 4, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"TRANSACTION_COUNTER", 4, MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"VERSION", 21 , MYSQL_TYPE_LONG, 0, 1, "Version"},
|
||||
{"DELETED_ROWS", 4, MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"UPDATE_COUNT", 4, MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"FREE_EXTENTS", 4, MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"TOTAL_EXTENTS", 4, MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"EXTENT_SIZE", 4, MYSQL_TYPE_LONGLONG, 0, 0, 0},
|
||||
{"INITIAL_SIZE", 21, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"MAXIMUM_SIZE", 21, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"AUTOEXTEND_SIZE", 21, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0},
|
||||
{"CREATION_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, 0},
|
||||
{"LAST_UPDATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, 0},
|
||||
{"LAST_ACCESS_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, 0},
|
||||
{"RECOVER_TIME", 4, MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"TRANSACTION_COUNTER", 4, MYSQL_TYPE_LONGLONG, 0, 1, 0},
|
||||
{"VERSION", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Version"},
|
||||
{"ROW_FORMAT", 10, MYSQL_TYPE_STRING, 0, 1, "Row_format"},
|
||||
{"TABLE_ROWS", 21 , MYSQL_TYPE_LONG, 0, 1, "Rows"},
|
||||
{"AVG_ROW_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, "Avg_row_length"},
|
||||
{"DATA_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, "Data_length"},
|
||||
{"MAX_DATA_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, "Max_data_length"},
|
||||
{"INDEX_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, "Index_length"},
|
||||
{"DATA_FREE", 21 , MYSQL_TYPE_LONG, 0, 1, "Data_free"},
|
||||
{"CREATE_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Create_time"},
|
||||
{"UPDATE_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Update_time"},
|
||||
{"CHECK_TIME", 0, MYSQL_TYPE_TIMESTAMP, 0, 1, "Check_time"},
|
||||
{"CHECKSUM", 21 , MYSQL_TYPE_LONG, 0, 1, "Checksum"},
|
||||
{"TABLE_ROWS", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Rows"},
|
||||
{"AVG_ROW_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Avg_row_length"},
|
||||
{"DATA_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Data_length"},
|
||||
{"MAX_DATA_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Max_data_length"},
|
||||
{"INDEX_LENGTH", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Index_length"},
|
||||
{"DATA_FREE", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Data_free"},
|
||||
{"CREATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Create_time"},
|
||||
{"UPDATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Update_time"},
|
||||
{"CHECK_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Check_time"},
|
||||
{"CHECKSUM", 21 , MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Checksum"},
|
||||
{"STATUS", 20, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"EXTRA", 255, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
|
||||
|
|
|
@ -554,13 +554,17 @@ enum enum_schema_tables
|
|||
};
|
||||
|
||||
|
||||
#define MY_I_S_MAYBE_NULL 1
|
||||
#define MY_I_S_UNSIGNED 2
|
||||
|
||||
|
||||
typedef struct st_field_info
|
||||
{
|
||||
const char* field_name;
|
||||
uint field_length;
|
||||
enum enum_field_types field_type;
|
||||
int value;
|
||||
bool maybe_null;
|
||||
uint field_flags; // Field atributes(maybe_null, signed, unsigned etc.)
|
||||
const char* old_name;
|
||||
} ST_FIELD_INFO;
|
||||
|
||||
|
|
Loading…
Reference in a new issue