1
+ package mysql
2
+
3
+ const (
4
+ // In case we get something unexpected
5
+ FieldTypeUnknown = "UNKNOWN"
6
+
7
+ // Human-readable names for each distinct type byte
8
+ FieldTypeNameDecimal = "DECIMAL"
9
+ FieldTypeNameTiny = "TINY"
10
+ FieldTypeNameShort = "SHORT"
11
+ FieldTypeNameLong = "LONG"
12
+ FieldTypeNameFloat = "FLOAT"
13
+ FieldTypeNameDouble = "DOUBLE"
14
+ FieldTypeNameNULL = "NULL"
15
+ FieldTypeNameTimestamp = "TIMESTAMP"
16
+ FieldTypeNameLongLong = "LONGLONG"
17
+ FieldTypeNameInt24 = "INT24"
18
+ FieldTypeNameDate = "DATE"
19
+ FieldTypeNameTime = "TIME"
20
+ FieldTypeNameDateTime = "DATETIME"
21
+ FieldTypeNameYear = "YEAR"
22
+ FieldTypeNameNewDate = "NEWDATE"
23
+ FieldTypeNameVarChar = "VARCHAR"
24
+ FieldTypeNameBit = "BIT"
25
+ FieldTypeNameJSON = "JSON"
26
+ FieldTypeNameNewDecimal = "NEWDECIMAL"
27
+ FieldTypeNameEnum = "ENUM"
28
+ FieldTypeNameSet = "SET"
29
+ FieldTypeNameTinyBLOB = "TINYBLOB"
30
+ FieldTypeNameMediumBLOB = "MEDIUMBLOB"
31
+ FieldTypeNameLongBLOB = "LONGBLOB"
32
+ FieldTypeNameBLOB = "BLOB"
33
+ FieldTypeNameVarString = "VARSTRING"
34
+ FieldTypeNameString = "STRING"
35
+ FieldTypeNameGeometry = "GEOMETRY"
36
+ )
37
+
38
+ // mapping from each type identifier to human readable string
39
+ var mysqlTypeMap = map [byte ]string {
40
+ fieldTypeDecimal : FieldTypeNameDecimal ,
41
+ fieldTypeTiny : FieldTypeNameTiny ,
42
+ fieldTypeShort : FieldTypeNameShort ,
43
+ fieldTypeLong : FieldTypeNameLong ,
44
+ fieldTypeFloat : FieldTypeNameFloat ,
45
+ fieldTypeDouble : FieldTypeNameDouble ,
46
+ fieldTypeNULL : FieldTypeNameNULL ,
47
+ fieldTypeTimestamp : FieldTypeNameTimestamp ,
48
+ fieldTypeLongLong : FieldTypeNameLongLong ,
49
+ fieldTypeInt24 : FieldTypeNameInt24 ,
50
+ fieldTypeDate : FieldTypeNameDate ,
51
+ fieldTypeTime : FieldTypeNameTime ,
52
+ fieldTypeDateTime : FieldTypeNameDateTime ,
53
+ fieldTypeYear : FieldTypeNameYear ,
54
+ fieldTypeNewDate : FieldTypeNameNewDate ,
55
+ fieldTypeVarChar : FieldTypeNameVarChar ,
56
+ fieldTypeBit : FieldTypeNameBit ,
57
+ fieldTypeJSON : FieldTypeNameJSON ,
58
+ fieldTypeNewDecimal : FieldTypeNameNewDecimal ,
59
+ fieldTypeEnum : FieldTypeNameEnum ,
60
+ fieldTypeSet : FieldTypeNameSet ,
61
+ fieldTypeTinyBLOB : FieldTypeNameTinyBLOB ,
62
+ fieldTypeMediumBLOB : FieldTypeNameMediumBLOB ,
63
+ fieldTypeLongBLOB : FieldTypeNameLongBLOB ,
64
+ fieldTypeBLOB : FieldTypeNameBLOB ,
65
+ fieldTypeVarString : FieldTypeNameVarString ,
66
+ fieldTypeString : FieldTypeNameString ,
67
+ fieldTypeGeometry : FieldTypeNameGeometry ,
68
+ }
69
+
70
+ // Make Rows implement the optional RowsColumnTypeDatabaseTypeName interface.
71
+ // See https://github.com/golang/go/commit/2a85578b0ecd424e95b29d810b7a414a299fd6a7
72
+ // - (go 1.8 required for this to have any effect)
73
+ func (rows * mysqlRows ) ColumnTypeDatabaseTypeName (index int ) string {
74
+ if typeName , ok := mysqlTypeMap [rows .columns [index ].fieldType ]; ok {
75
+ return typeName
76
+ }
77
+ return FieldTypeUnknown
78
+ }
0 commit comments