Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pkg/executor/infoschema_reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -1219,6 +1219,7 @@ func (e *hugeMemTableRetriever) dataForColumnsInTable(
strings.ToLower(privileges.PrivToString(priv, mysql.AllColumnPrivs, mysql.Priv2Str)), // PRIVILEGES
columnDesc.Comment, // COLUMN_COMMENT
col.GeneratedExprString, // GENERATION_EXPRESSION
nil, // SRS_ID
)
e.rows = append(e.rows, record)
}
Expand Down
35 changes: 18 additions & 17 deletions pkg/infoschema/tables.go
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ type columnInfo struct {
func buildColumnInfo(col columnInfo) *model.ColumnInfo {
mCharset := charset.CharsetBin
mCollation := charset.CharsetBin
if col.tp == mysql.TypeVarchar || col.tp == mysql.TypeBlob || col.tp == mysql.TypeLongBlob || col.tp == mysql.TypeEnum {
if col.tp == mysql.TypeVarchar || col.tp == mysql.TypeMediumBlob || col.tp == mysql.TypeBlob || col.tp == mysql.TypeLongBlob || col.tp == mysql.TypeEnum {
mCharset = charset.CharsetUTF8MB4
mCollation = charset.CollationUTF8MB4
}
Expand Down Expand Up @@ -470,27 +470,28 @@ var tablesCols = []columnInfo{

// See: http://dev.mysql.com/doc/refman/5.7/en/information-schema-columns-table.html
var columnsCols = []columnInfo{
{name: "TABLE_CATALOG", tp: mysql.TypeVarchar, size: 512},
{name: "TABLE_CATALOG", tp: mysql.TypeVarchar, size: 64},
{name: "TABLE_SCHEMA", tp: mysql.TypeVarchar, size: 64},
{name: "TABLE_NAME", tp: mysql.TypeVarchar, size: 64},
{name: "COLUMN_NAME", tp: mysql.TypeVarchar, size: 64},
{name: "ORDINAL_POSITION", tp: mysql.TypeLonglong, size: 21},
{name: "COLUMN_DEFAULT", tp: mysql.TypeBlob, size: 196606},
{name: "ORDINAL_POSITION", tp: mysql.TypeLong, flag: mysql.UnsignedFlag},
{name: "COLUMN_DEFAULT", tp: mysql.TypeBlob},
{name: "IS_NULLABLE", tp: mysql.TypeVarchar, size: 3},
{name: "DATA_TYPE", tp: mysql.TypeVarchar, size: 64},
{name: "CHARACTER_MAXIMUM_LENGTH", tp: mysql.TypeLonglong, size: 21},
{name: "CHARACTER_OCTET_LENGTH", tp: mysql.TypeLonglong, size: 21},
{name: "NUMERIC_PRECISION", tp: mysql.TypeLonglong, size: 21},
{name: "NUMERIC_SCALE", tp: mysql.TypeLonglong, size: 21},
{name: "DATETIME_PRECISION", tp: mysql.TypeLonglong, size: 21},
{name: "CHARACTER_SET_NAME", tp: mysql.TypeVarchar, size: 32},
{name: "COLLATION_NAME", tp: mysql.TypeVarchar, size: 32},
{name: "COLUMN_TYPE", tp: mysql.TypeBlob, size: 196606},
{name: "DATA_TYPE", tp: mysql.TypeLongBlob},
{name: "CHARACTER_MAXIMUM_LENGTH", tp: mysql.TypeLonglong},
{name: "CHARACTER_OCTET_LENGTH", tp: mysql.TypeLonglong},
{name: "NUMERIC_PRECISION", tp: mysql.TypeLonglong, flag: mysql.UnsignedFlag},
{name: "NUMERIC_SCALE", tp: mysql.TypeLonglong, flag: mysql.UnsignedFlag},
{name: "DATETIME_PRECISION", tp: mysql.TypeLong, flag: mysql.UnsignedFlag},
{name: "CHARACTER_SET_NAME", tp: mysql.TypeVarchar, size: 64},
{name: "COLLATION_NAME", tp: mysql.TypeVarchar, size: 64},
{name: "COLUMN_TYPE", tp: mysql.TypeMediumBlob},
{name: "COLUMN_KEY", tp: mysql.TypeVarchar, size: 3},
{name: "EXTRA", tp: mysql.TypeVarchar, size: 45},
{name: "PRIVILEGES", tp: mysql.TypeVarchar, size: 80},
{name: "COLUMN_COMMENT", tp: mysql.TypeVarchar, size: 1024},
{name: "GENERATION_EXPRESSION", tp: mysql.TypeBlob, size: 589779, flag: mysql.NotNullFlag},
{name: "EXTRA", tp: mysql.TypeVarchar, size: 256},
{name: "PRIVILEGES", tp: mysql.TypeVarchar, size: 154},
{name: "COLUMN_COMMENT", tp: mysql.TypeBlob},
{name: "GENERATION_EXPRESSION", tp: mysql.TypeLongBlob, flag: mysql.NotNullFlag},
{name: "SRS_ID", tp: mysql.TypeLong, flag: mysql.UnsignedFlag},
}

var columnStatisticsCols = []columnInfo{
Expand Down
8 changes: 4 additions & 4 deletions tests/integrationtest/r/executor/infoschema_reader.result
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ def executor__infoschema_reader v1 VIEW NULL NULL NULL NULL NULL NULL NULL NULL
drop table if exists t;
create table t (bit bit(10) DEFAULT b'100');
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'executor__infoschema_reader' AND TABLE_NAME = 't';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT GENERATION_EXPRESSION
def executor__infoschema_reader t bit 1 b'100' YES bit NULL NULL 10 0 NULL NULL NULL bit(10) select,insert,update,references
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT GENERATION_EXPRESSION SRS_ID
def executor__infoschema_reader t bit 1 b'100' YES bit NULL NULL 10 0 NULL NULL NULL bit(10) select,insert,update,references NULL
drop table if exists t;
set time_zone='+08:00';
drop table if exists t;
Expand Down Expand Up @@ -272,8 +272,8 @@ drop table if exists t;
CREATE TABLE t ( id int DEFAULT NULL);
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`1.1.1.1` SQL SECURITY DEFINER VIEW `v_test` (`type`) AS SELECT NULL AS `type` FROM `t` AS `f`;
select * from information_schema.columns where TABLE_SCHEMA = 'executor__infoschema_reader' and TABLE_NAME = 'v_test';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT GENERATION_EXPRESSION
def executor__infoschema_reader v_test type 1 NULL YES binary 0 0 NULL NULL NULL NULL NULL binary(0) select,insert,update,references
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT GENERATION_EXPRESSION SRS_ID
def executor__infoschema_reader v_test type 1 NULL YES binary 0 0 NULL NULL NULL NULL NULL binary(0) select,insert,update,references NULL
drop user if exists usageuser;
create user usageuser;
SELECT * FROM information_schema.user_privileges WHERE grantee="'usageuser'@'%'";
Expand Down