func()

in sqldriver/row.go [134:218]


func (rr *rowsReader) ColumnTypeScanType(index int) reflect.Type {
	column := rr.columns[index]
	dataType := column.Type
	nullable := !column.NotNull

	switch dataType.ID() {
	case datatype.BIGINT:
		if nullable {
			return reflect.TypeOf(NullInt64{})
		}

		return reflect.TypeOf(int64(0))
	case datatype.INT:
		if nullable {
			return reflect.TypeOf(NullInt32{})
		}

		return reflect.TypeOf(int(0))
	case datatype.SMALLINT:
		if nullable {
			return reflect.TypeOf(NullInt16{})
		}

		return reflect.TypeOf(int16(0))
	case datatype.TINYINT:
		if nullable {
			return reflect.TypeOf(NullInt8{})
		}

		return reflect.TypeOf(int8(0))
	case datatype.DOUBLE:
		if nullable {
			return reflect.TypeOf(NullFloat64{})
		}

		return reflect.TypeOf(float64(0))
	case datatype.FLOAT:
		if nullable {
			return reflect.TypeOf(NullFloat32{})
		}

		return reflect.TypeOf(float32(0))

	case datatype.STRING, datatype.CHAR, datatype.VARCHAR:
		if nullable {
			return reflect.TypeOf(NullString{})
		}

		return reflect.TypeOf("")
	case datatype.BINARY:
		return reflect.TypeOf(Binary{})
	case datatype.BOOLEAN:
		if nullable {
			return reflect.TypeOf(NullBool{})
		}

		return reflect.TypeOf(false)
	case datatype.DATETIME:
		return reflect.TypeOf(NullDateTime{})
	case datatype.DATE:
		return reflect.TypeOf(NullDate{})
	case datatype.TIMESTAMP:
		return reflect.TypeOf(NullTimeStamp{})
	case datatype.TIMESTAMP_NTZ:
		return reflect.TypeOf(NullTimeStampNtz{})
	case datatype.DECIMAL:
		return reflect.TypeOf(Decimal{})
	case datatype.MAP:
		return reflect.TypeOf(Map{})
	case datatype.ARRAY:
		return reflect.TypeOf(Array{})
	case datatype.STRUCT:
		return reflect.TypeOf(Struct{})
	case datatype.JSON:
		return reflect.TypeOf(Json{})
	case datatype.VOID:
		return reflect.TypeOf(data.Null)
	case datatype.IntervalDayTime:
		return reflect.TypeOf(data.IntervalDayTime{})
	case datatype.IntervalYearMonth:
		return reflect.TypeOf(data.IntervalYearMonth(0))
	}

	return nil
}