in pkg/datasource/sql/datasource/utils.go [45:97]
func GetScanSlice(types []*sql.ColumnType) []interface{} {
scanSlice := make([]interface{}, 0, len(types))
for _, tpy := range types {
switch tpy.ScanType() {
case ScanTypeFloat32:
scanVal := float32(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeFloat64:
scanVal := float64(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeInt8:
scanVal := int8(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeInt16:
scanVal := int16(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeInt32:
scanVal := int32(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeInt64:
scanVal := int64(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeNullFloat:
scanVal := sql.NullFloat64{}
scanSlice = append(scanSlice, &scanVal)
case ScanTypeNullInt:
scanVal := sql.NullInt64{}
scanSlice = append(scanSlice, &scanVal)
case ScanTypeNullTime:
scanVal := sql.NullTime{}
scanSlice = append(scanSlice, &scanVal)
case ScanTypeUint8:
scanVal := uint8(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeUint16:
scanVal := uint16(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeUint32:
scanVal := uint32(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeUint64:
scanVal := uint64(0)
scanSlice = append(scanSlice, &scanVal)
case ScanTypeRawBytes:
scanVal := ""
scanSlice = append(scanSlice, &scanVal)
case ScanTypeUnknown:
scanVal := new(interface{})
scanSlice = append(scanSlice, &scanVal)
}
}
return scanSlice
}