You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1046 lines
37 KiB
Go
1046 lines
37 KiB
Go
// Copyright 2015 PingCAP, Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package types
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/pingcap/tidb/mysql"
|
|
"github.com/pingcap/tidb/util/charset"
|
|
)
|
|
|
|
// UnspecifiedLength is unspecified length.
|
|
const (
|
|
UnspecifiedLength int = -1
|
|
)
|
|
|
|
// FieldType records field type information.
|
|
type FieldType struct {
|
|
Tp byte
|
|
Flag uint
|
|
Flen int
|
|
Decimal int
|
|
Charset string
|
|
Collate string
|
|
// Elems is the element list for enum and set type.
|
|
Elems []string
|
|
}
|
|
|
|
// NewFieldType returns a FieldType,
|
|
// with a type and other information about field type.
|
|
func NewFieldType(tp byte) *FieldType {
|
|
return &FieldType{
|
|
Tp: tp,
|
|
Flen: UnspecifiedLength,
|
|
Decimal: UnspecifiedLength,
|
|
}
|
|
}
|
|
|
|
// CompactStr only considers Tp/CharsetBin/Flen/Deimal.
|
|
// This is used for showing column type in infoschema.
|
|
func (ft *FieldType) CompactStr() string {
|
|
ts := TypeToStr(ft.Tp, ft.Charset)
|
|
suffix := ""
|
|
switch ft.Tp {
|
|
case mysql.TypeEnum, mysql.TypeSet:
|
|
// Format is ENUM ('e1', 'e2') or SET ('e1', 'e2')
|
|
es := make([]string, 0, len(ft.Elems))
|
|
for _, e := range ft.Elems {
|
|
e = strings.Replace(e, "'", "''", -1)
|
|
es = append(es, e)
|
|
}
|
|
suffix = fmt.Sprintf("('%s')", strings.Join(es, "','"))
|
|
case mysql.TypeTimestamp, mysql.TypeDatetime, mysql.TypeDate:
|
|
if ft.Decimal != UnspecifiedLength && ft.Decimal != 0 {
|
|
suffix = fmt.Sprintf("(%d)", ft.Decimal)
|
|
}
|
|
default:
|
|
if ft.Flen != UnspecifiedLength {
|
|
if ft.Decimal == UnspecifiedLength {
|
|
if ft.Tp != mysql.TypeFloat && ft.Tp != mysql.TypeDouble {
|
|
suffix = fmt.Sprintf("(%d)", ft.Flen)
|
|
}
|
|
} else {
|
|
suffix = fmt.Sprintf("(%d,%d)", ft.Flen, ft.Decimal)
|
|
}
|
|
} else if ft.Decimal != UnspecifiedLength {
|
|
suffix = fmt.Sprintf("(%d)", ft.Decimal)
|
|
}
|
|
}
|
|
return ts + suffix
|
|
}
|
|
|
|
// String joins the information of FieldType and
|
|
// returns a string.
|
|
func (ft *FieldType) String() string {
|
|
strs := []string{ft.CompactStr()}
|
|
if mysql.HasUnsignedFlag(ft.Flag) {
|
|
strs = append(strs, "UNSIGNED")
|
|
}
|
|
if mysql.HasZerofillFlag(ft.Flag) {
|
|
strs = append(strs, "ZEROFILL")
|
|
}
|
|
if mysql.HasBinaryFlag(ft.Flag) {
|
|
strs = append(strs, "BINARY")
|
|
}
|
|
|
|
if IsTypeChar(ft.Tp) || IsTypeBlob(ft.Tp) {
|
|
if ft.Charset != "" && ft.Charset != charset.CharsetBin {
|
|
strs = append(strs, fmt.Sprintf("CHARACTER SET %s", ft.Charset))
|
|
}
|
|
if ft.Collate != "" && ft.Collate != charset.CharsetBin {
|
|
strs = append(strs, fmt.Sprintf("COLLATE %s", ft.Collate))
|
|
}
|
|
}
|
|
|
|
return strings.Join(strs, " ")
|
|
}
|
|
|
|
// DefaultTypeForValue returns the default FieldType for the value.
|
|
func DefaultTypeForValue(value interface{}) *FieldType {
|
|
var tp *FieldType
|
|
switch x := value.(type) {
|
|
case nil:
|
|
tp = NewFieldType(mysql.TypeNull)
|
|
case bool, int64, int:
|
|
tp = NewFieldType(mysql.TypeLonglong)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case uint64:
|
|
tp = NewFieldType(mysql.TypeLonglong)
|
|
tp.Flag |= mysql.UnsignedFlag
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case string:
|
|
tp = NewFieldType(mysql.TypeVarString)
|
|
tp.Charset = mysql.DefaultCharset
|
|
tp.Collate = mysql.DefaultCollationName
|
|
case float64:
|
|
tp = NewFieldType(mysql.TypeNewDecimal)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case []byte:
|
|
tp = NewFieldType(mysql.TypeBlob)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case mysql.Bit:
|
|
tp = NewFieldType(mysql.TypeBit)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case mysql.Hex:
|
|
tp = NewFieldType(mysql.TypeVarchar)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case mysql.Time:
|
|
tp = NewFieldType(x.Type)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case mysql.Duration:
|
|
tp = NewFieldType(mysql.TypeDuration)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case mysql.Decimal:
|
|
tp = NewFieldType(mysql.TypeNewDecimal)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case mysql.Enum:
|
|
tp = NewFieldType(mysql.TypeEnum)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
case mysql.Set:
|
|
tp = NewFieldType(mysql.TypeSet)
|
|
tp.Charset = charset.CharsetBin
|
|
tp.Collate = charset.CharsetBin
|
|
default:
|
|
tp = NewFieldType(mysql.TypeDecimal)
|
|
}
|
|
return tp
|
|
}
|
|
|
|
// DefaultCharsetForType returns the default charset/collation for mysql type.
|
|
func DefaultCharsetForType(tp byte) (string, string) {
|
|
switch tp {
|
|
case mysql.TypeVarString, mysql.TypeString, mysql.TypeVarchar:
|
|
// Default charset for string types is utf8.
|
|
return mysql.DefaultCharset, mysql.DefaultCollationName
|
|
}
|
|
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,
|
|
},
|
|
}
|