Merge branch 'master' into iamxy/fix-phpmyadmin

This commit is contained in:
iamxy
2016-01-19 20:26:26 +08:00
5 changed files with 931 additions and 4 deletions

View File

@ -62,3 +62,18 @@ tidb> select * from t1;
+----+-------+
2 rows in set (0.00 sec)
tidb>
```
Run TiDB server:
```
make server
cd tidb-server
./tidb-server -store=hbase -path="zkaddrs/hbaseTbl?tso=tsoType" -P=4000
DSN parameters:
zkaddrs is the address of zookeeper.
hbaseTbl is the table in hbase to store TiDB data.
tsoaddr is the type of tso sever. Its value could be zk or local.
Here is an example of dsn:
./tidb-server -store=hbase -path="zk1,zk2/test?tso=zk" -P=5000
```

View File

@ -51,6 +51,8 @@ func (v *typeInferrer) Leave(in ast.Node) (out ast.Node, ok bool) {
x.Type.Collate = charset.CollationBin
case *ast.BinaryOperationExpr:
v.binaryOperation(x)
case *ast.CaseExpr:
v.handleCaseExpr(x)
case *ast.ColumnNameExpr:
x.SetType(&x.Refer.Column.FieldType)
case *ast.CompareSubqueryExpr:
@ -256,6 +258,13 @@ func (v *typeInferrer) handleFuncCallExpr(x *ast.FuncCallExpr) {
tp = types.NewFieldType(mysql.TypeLonglong)
tp.Flag |= mysql.UnsignedFlag
case "if":
// TODO: fix this
// See: https://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if
// The default return type of IF() (which may matter when it is stored into a temporary table) is calculated as follows.
// Expression Return Value
// expr2 or expr3 returns a string string
// expr2 or expr3 returns a floating-point value floating-point
// expr2 or expr3 returns an integer integer
tp = x.Args[1].GetType()
default:
tp = types.NewFieldType(mysql.TypeUnspecified)
@ -275,3 +284,41 @@ func (v *typeInferrer) handleFuncCallExpr(x *ast.FuncCallExpr) {
}
x.SetType(tp)
}
// The return type of a CASE expression is the compatible aggregated type of all return values,
// but also depends on the context in which it is used.
// If used in a string context, the result is returned as a string.
// If used in a numeric context, the result is returned as a decimal, real, or integer value.
func (v *typeInferrer) handleCaseExpr(x *ast.CaseExpr) {
var currType *types.FieldType
for _, w := range x.WhenClauses {
t := w.Result.GetType()
if currType == nil {
currType = t
continue
}
mtp := types.MergeFieldType(currType.Tp, t.Tp)
if mtp == t.Tp && mtp != currType.Tp {
currType.Charset = t.Charset
currType.Collate = t.Collate
}
currType.Tp = mtp
}
if x.ElseClause != nil {
t := x.ElseClause.GetType()
if currType == nil {
currType = t
} else {
mtp := types.MergeFieldType(currType.Tp, t.Tp)
if mtp == t.Tp && mtp != currType.Tp {
currType.Charset = t.Charset
currType.Collate = t.Collate
}
currType.Tp = mtp
}
}
x.SetType(currType)
// TODO: We need a better way to set charset/collation
x.Type.Charset, x.Type.Collate = types.DefaultCharsetForType(x.Type.Tp)
}

View File

@ -123,6 +123,8 @@ func (ts *testTypeInferrerSuite) TestInferType(c *C) {
{"upper('TiDB')", mysql.TypeVarString, "utf8"},
{"connection_id()", mysql.TypeLonglong, charset.CharsetBin},
{"if(1>2, 2, 3)", mysql.TypeLonglong, charset.CharsetBin},
{"case c1 when null then 2 when 2 then 1.1 else 1 END", mysql.TypeNewDecimal, charset.CharsetBin},
{"case c1 when null then 2 when 2 then 'tidb' else 1.1 END", mysql.TypeVarchar, "utf8"},
}
for _, ca := range cases {
ctx := testKit.Se.(context.Context)

View File

@ -21,7 +21,6 @@ import (
"fmt"
"strings"
"github.com/ngaut/log"
"github.com/pingcap/tidb/mysql"
"github.com/pingcap/tidb/util/charset"
)
@ -160,7 +159,7 @@ func DefaultTypeForValue(value interface{}) *FieldType {
tp.Charset = charset.CharsetBin
tp.Collate = charset.CharsetBin
case string:
tp = NewFieldType(mysql.TypeVarchar)
tp = NewFieldType(mysql.TypeVarString)
tp.Charset = mysql.DefaultCharset
tp.Collate = mysql.DefaultCollationName
case float64:
@ -203,7 +202,6 @@ func DefaultTypeForValue(value interface{}) *FieldType {
tp = x.Type
default:
tp = NewFieldType(mysql.TypeDecimal)
log.Errorf("Unknown value type %T for default field type.", value)
}
return tp
}
@ -217,3 +215,868 @@ func DefaultCharsetForType(tp byte) (string, string) {
}
return charset.CharsetBin, charset.CollationBin
}
// MergeFieldType merges two MySQL type to a new type.
// This is used in hybrid field type expression.
// For example "select case c when 1 then 2 when 2 then 'tidb' from t;"
// The resule field type of the case expression is the merged type of the two when clause.
// See: https://github.com/mysql/mysql-server/blob/5.7/sql/field.cc#L1042
func MergeFieldType(a byte, b byte) byte {
ia := getFieldTypeIndex(a)
ib := getFieldTypeIndex(b)
return fieldTypeMergeRules[ia][ib]
}
func getFieldTypeIndex(tp byte) int {
itp := int(tp)
if itp < fieldTypeTearFrom {
return itp
}
return fieldTypeTearFrom + itp - fieldTypeTearTo - 1
}
const (
fieldTypeTearFrom = int(mysql.TypeBit) + 1
fieldTypeTearTo = int(mysql.TypeNewDecimal) - 1
fieldTypeNum = fieldTypeTearFrom + (255 - fieldTypeTearTo)
)
var fieldTypeMergeRules = [fieldTypeNum][fieldTypeNum]byte{
/* mysql.TypeDecimal -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
//mysql.TypeShort mysql.TypeLong
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeDecimal, mysql.TypeDecimal,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeTiny -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeTiny,
//mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeTiny, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeTiny,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeShort -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeShort,
//mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeShort, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeShort,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeLong -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeLong,
//mysql.TypeShort mysql.TypeLong
mysql.TypeLong, mysql.TypeLong,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeLong, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeLong,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeLong,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeFloat -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeDouble, mysql.TypeFloat,
//mysql.TypeShort mysql.TypeLong
mysql.TypeFloat, mysql.TypeDouble,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeFloat, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeFloat, mysql.TypeFloat,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeFloat,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeDouble, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeDouble -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeShort mysql.TypeLong
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeDouble, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeDouble,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeDouble, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeNull -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeTiny,
//mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNull, mysql.TypeTimestamp,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeLonglong,
//mysql.TypeDate mysql.TypeTime
mysql.TypeNewDate, mysql.TypeDuration,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeYear,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeBit,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeEnum,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeSet, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeGeometry,
},
/* mysql.TypeTimestamp -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeTimestamp, mysql.TypeTimestamp,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeDatetime, mysql.TypeDatetime,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeLonglong -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeLonglong,
//mysql.TypeShort mysql.TypeLong
mysql.TypeLonglong, mysql.TypeLonglong,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeLonglong, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeLong,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeLonglong,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeInt24 -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeInt24,
//mysql.TypeShort mysql.TypeLong
mysql.TypeInt24, mysql.TypeLong,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeInt24, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeInt24,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeDate -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNewDate, mysql.TypeDatetime,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeNewDate, mysql.TypeDatetime,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeTime -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeDuration, mysql.TypeDatetime,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeDatetime, mysql.TypeDuration,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeDatetime -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeDatetime, mysql.TypeDatetime,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeDatetime, mysql.TypeDatetime,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeYear -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeDecimal, mysql.TypeTiny,
//mysql.TypeShort mysql.TypeLong
mysql.TypeShort, mysql.TypeLong,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeFloat, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeYear, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLonglong, mysql.TypeInt24,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeYear,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeNewDate -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNewDate, mysql.TypeDatetime,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeNewDate, mysql.TypeDatetime,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeDatetime, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeNewDate, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeVarchar -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeVarchar, mysql.TypeVarchar,
},
/* mysql.TypeBit -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeBit, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeBit,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeNewDecimal -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
//mysql.TypeShort mysql.TypeLong
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeDouble, mysql.TypeDouble,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeNewDecimal, mysql.TypeNewDecimal,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeNewDecimal,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeNewDecimal, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeEnum -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeEnum, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeSet -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeSet, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeVarchar,
},
/* mysql.TypeTinyBlob -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeShort mysql.TypeLong
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeDate mysql.TypeTime
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeBit <16>-<245>
mysql.TypeTinyBlob,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeTinyBlob,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeTinyBlob, mysql.TypeTinyBlob,
},
/* mysql.TypeMediumBlob -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeShort mysql.TypeLong
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeDate mysql.TypeTime
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeBit <16>-<245>
mysql.TypeMediumBlob,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeMediumBlob, mysql.TypeMediumBlob,
},
/* mysql.TypeLongBlob -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeShort mysql.TypeLong
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeDate mysql.TypeTime
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeBit <16>-<245>
mysql.TypeLongBlob,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeLongBlob, mysql.TypeLongBlob,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeLongBlob, mysql.TypeLongBlob,
},
/* mysql.TypeBlob -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeShort mysql.TypeLong
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeDate mysql.TypeTime
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeBit <16>-<245>
mysql.TypeBlob,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeBlob,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeBlob, mysql.TypeBlob,
},
/* mysql.TypeVarString -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeVarchar, mysql.TypeVarchar,
},
/* mysql.TypeString -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeString, mysql.TypeString,
//mysql.TypeShort mysql.TypeLong
mysql.TypeString, mysql.TypeString,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeString, mysql.TypeString,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeString, mysql.TypeString,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeString, mysql.TypeString,
//mysql.TypeDate mysql.TypeTime
mysql.TypeString, mysql.TypeString,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeString, mysql.TypeString,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeString, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeString,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeString, mysql.TypeString,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeString, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeString,
},
/* mysql.TypeGeometry -> */
{
//mysql.TypeDecimal mysql.TypeTiny
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeShort mysql.TypeLong
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeFloat mysql.TypeDouble
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNull mysql.TypeTimestamp
mysql.TypeGeometry, mysql.TypeVarchar,
//mysql.TypeLonglong mysql.TypeInt24
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDate mysql.TypeTime
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeDatetime mysql.TypeYear
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeNewDate mysql.TypeVarchar
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeBit <16>-<245>
mysql.TypeVarchar,
//mysql.TypeNewDecimal mysql.TypeEnum
mysql.TypeVarchar, mysql.TypeVarchar,
//mysql.TypeSet mysql.TypeTinyBlob
mysql.TypeVarchar, mysql.TypeTinyBlob,
//mysql.TypeMediumBlob mysql.TypeLongBlob
mysql.TypeMediumBlob, mysql.TypeLongBlob,
//mysql.TypeBlob mysql.TypeVarString
mysql.TypeBlob, mysql.TypeVarchar,
//mysql.TypeString mysql.TypeGeometry
mysql.TypeString, mysql.TypeGeometry,
},
}

View File

@ -129,7 +129,7 @@ func (s *testFieldTypeSuite) TestDefaultTypeForValue(c *check.C) {
{nil, mysql.TypeNull},
{1, mysql.TypeLonglong},
{uint64(1), mysql.TypeLonglong},
{"abc", mysql.TypeVarchar},
{"abc", mysql.TypeVarString},
{1.1, mysql.TypeNewDecimal},
{[]byte("abc"), mysql.TypeBlob},
{mysql.Bit{}, mysql.TypeBit},