func GetScanSlice()

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
}