@@ -371,15 +371,24 @@ type columnInfo struct {
371
371
func buildColumnInfo (col columnInfo ) * model.ColumnInfo {
372
372
mCharset := charset .CharsetBin
373
373
mCollation := charset .CharsetBin
374
- if col .tp == mysql .TypeVarchar || col .tp == mysql .TypeBlob || col .tp == mysql .TypeLongBlob || col .tp == mysql .TypeEnum {
374
+ if col .tp == mysql .TypeVarchar || col .tp == mysql .TypeMediumBlob || col . tp == mysql . TypeBlob || col .tp == mysql .TypeLongBlob || col .tp == mysql .TypeEnum {
375
375
mCharset = charset .CharsetUTF8MB4
376
376
mCollation = charset .CollationUTF8MB4
377
377
}
378
378
fieldType := types.FieldType {}
379
379
fieldType .SetType (col .tp )
380
380
fieldType .SetCharset (mCharset )
381
381
fieldType .SetCollate (mCollation )
382
- fieldType .SetFlen (col .size )
382
+ switch col .tp {
383
+ case mysql .TypeBlob :
384
+ fieldType .SetFlen (1 << 16 )
385
+ case mysql .TypeMediumBlob :
386
+ fieldType .SetFlen (1 << 24 )
387
+ case mysql .TypeLongBlob :
388
+ fieldType .SetFlen (1 << 32 )
389
+ default :
390
+ fieldType .SetFlen (col .size )
391
+ }
383
392
fieldType .SetDecimal (col .decimal )
384
393
fieldType .SetFlag (col .flag )
385
394
fieldType .SetElems (col .enumElems )
@@ -470,27 +479,28 @@ var tablesCols = []columnInfo{
470
479
471
480
// See: http://dev.mysql.com/doc/refman/5.7/en/information-schema-columns-table.html
472
481
var columnsCols = []columnInfo {
473
- {name : "TABLE_CATALOG" , tp : mysql .TypeVarchar , size : 512 },
482
+ {name : "TABLE_CATALOG" , tp : mysql .TypeVarchar , size : 64 },
474
483
{name : "TABLE_SCHEMA" , tp : mysql .TypeVarchar , size : 64 },
475
484
{name : "TABLE_NAME" , tp : mysql .TypeVarchar , size : 64 },
476
485
{name : "COLUMN_NAME" , tp : mysql .TypeVarchar , size : 64 },
477
- {name : "ORDINAL_POSITION" , tp : mysql .TypeLonglong , size : 21 },
478
- {name : "COLUMN_DEFAULT" , tp : mysql .TypeBlob , size : 196606 },
486
+ {name : "ORDINAL_POSITION" , tp : mysql .TypeLong , flag : mysql . UnsignedFlag },
487
+ {name : "COLUMN_DEFAULT" , tp : mysql .TypeBlob },
479
488
{name : "IS_NULLABLE" , tp : mysql .TypeVarchar , size : 3 },
480
- {name : "DATA_TYPE" , tp : mysql .TypeVarchar , size : 64 },
481
- {name : "CHARACTER_MAXIMUM_LENGTH" , tp : mysql .TypeLonglong , size : 21 },
482
- {name : "CHARACTER_OCTET_LENGTH" , tp : mysql .TypeLonglong , size : 21 },
483
- {name : "NUMERIC_PRECISION" , tp : mysql .TypeLonglong , size : 21 },
484
- {name : "NUMERIC_SCALE" , tp : mysql .TypeLonglong , size : 21 },
485
- {name : "DATETIME_PRECISION" , tp : mysql .TypeLonglong , size : 21 },
486
- {name : "CHARACTER_SET_NAME" , tp : mysql .TypeVarchar , size : 32 },
487
- {name : "COLLATION_NAME" , tp : mysql .TypeVarchar , size : 32 },
488
- {name : "COLUMN_TYPE" , tp : mysql .TypeBlob , size : 196606 },
489
+ {name : "DATA_TYPE" , tp : mysql .TypeLongBlob },
490
+ {name : "CHARACTER_MAXIMUM_LENGTH" , tp : mysql .TypeLonglong },
491
+ {name : "CHARACTER_OCTET_LENGTH" , tp : mysql .TypeLonglong },
492
+ {name : "NUMERIC_PRECISION" , tp : mysql .TypeLonglong , flag : mysql . UnsignedFlag },
493
+ {name : "NUMERIC_SCALE" , tp : mysql .TypeLonglong , flag : mysql . UnsignedFlag },
494
+ {name : "DATETIME_PRECISION" , tp : mysql .TypeLong , flag : mysql . UnsignedFlag },
495
+ {name : "CHARACTER_SET_NAME" , tp : mysql .TypeVarchar , size : 64 },
496
+ {name : "COLLATION_NAME" , tp : mysql .TypeVarchar , size : 64 },
497
+ {name : "COLUMN_TYPE" , tp : mysql .TypeMediumBlob },
489
498
{name : "COLUMN_KEY" , tp : mysql .TypeVarchar , size : 3 },
490
- {name : "EXTRA" , tp : mysql .TypeVarchar , size : 45 },
491
- {name : "PRIVILEGES" , tp : mysql .TypeVarchar , size : 80 },
492
- {name : "COLUMN_COMMENT" , tp : mysql .TypeVarchar , size : 1024 },
493
- {name : "GENERATION_EXPRESSION" , tp : mysql .TypeBlob , size : 589779 , flag : mysql .NotNullFlag },
499
+ {name : "EXTRA" , tp : mysql .TypeVarchar , size : 256 },
500
+ {name : "PRIVILEGES" , tp : mysql .TypeVarchar , size : 154 },
501
+ {name : "COLUMN_COMMENT" , tp : mysql .TypeBlob },
502
+ {name : "GENERATION_EXPRESSION" , tp : mysql .TypeLongBlob , flag : mysql .NotNullFlag },
503
+ {name : "SRS_ID" , tp : mysql .TypeLong , flag : mysql .UnsignedFlag },
494
504
}
495
505
496
506
var columnStatisticsCols = []columnInfo {
0 commit comments