arrow/scalar/numeric.gen.go (575 lines of code) (raw):
// Code generated by scalar/numeric.gen.go.tmpl. DO NOT EDIT.
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you 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,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package scalar
import (
"fmt"
"reflect"
"unsafe"
"github.com/aliyun/aliyun-odps-go-sdk/arrow"
"golang.org/x/xerrors"
)
type Int8 struct {
scalar
Value int8
}
func (s *Int8) Data() []byte {
return (*[arrow.Int8SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Int8) equals(rhs Scalar) bool {
return s.Value == rhs.(*Int8).Value
}
func (s *Int8) value() interface{} {
return s.Value
}
func (s *Int8) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Int8) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type int8 to type %s", dt)
}
func NewInt8Scalar(val int8) *Int8 {
return &Int8{scalar{Type: arrow.PrimitiveTypes.Int8, Valid: true}, val}
}
type Int16 struct {
scalar
Value int16
}
func (s *Int16) Data() []byte {
return (*[arrow.Int16SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Int16) equals(rhs Scalar) bool {
return s.Value == rhs.(*Int16).Value
}
func (s *Int16) value() interface{} {
return s.Value
}
func (s *Int16) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Int16) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type int16 to type %s", dt)
}
func NewInt16Scalar(val int16) *Int16 {
return &Int16{scalar{Type: arrow.PrimitiveTypes.Int16, Valid: true}, val}
}
type Int32 struct {
scalar
Value int32
}
func (s *Int32) Data() []byte {
return (*[arrow.Int32SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Int32) equals(rhs Scalar) bool {
return s.Value == rhs.(*Int32).Value
}
func (s *Int32) value() interface{} {
return s.Value
}
func (s *Int32) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Int32) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type int32 to type %s", dt)
}
func NewInt32Scalar(val int32) *Int32 {
return &Int32{scalar{Type: arrow.PrimitiveTypes.Int32, Valid: true}, val}
}
type Int64 struct {
scalar
Value int64
}
func (s *Int64) Data() []byte {
return (*[arrow.Int64SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Int64) equals(rhs Scalar) bool {
return s.Value == rhs.(*Int64).Value
}
func (s *Int64) value() interface{} {
return s.Value
}
func (s *Int64) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Int64) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type int64 to type %s", dt)
}
func NewInt64Scalar(val int64) *Int64 {
return &Int64{scalar{Type: arrow.PrimitiveTypes.Int64, Valid: true}, val}
}
type Uint8 struct {
scalar
Value uint8
}
func (s *Uint8) Data() []byte {
return (*[arrow.Uint8SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Uint8) equals(rhs Scalar) bool {
return s.Value == rhs.(*Uint8).Value
}
func (s *Uint8) value() interface{} {
return s.Value
}
func (s *Uint8) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Uint8) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type uint8 to type %s", dt)
}
func NewUint8Scalar(val uint8) *Uint8 {
return &Uint8{scalar{Type: arrow.PrimitiveTypes.Uint8, Valid: true}, val}
}
type Uint16 struct {
scalar
Value uint16
}
func (s *Uint16) Data() []byte {
return (*[arrow.Uint16SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Uint16) equals(rhs Scalar) bool {
return s.Value == rhs.(*Uint16).Value
}
func (s *Uint16) value() interface{} {
return s.Value
}
func (s *Uint16) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Uint16) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type uint16 to type %s", dt)
}
func NewUint16Scalar(val uint16) *Uint16 {
return &Uint16{scalar{Type: arrow.PrimitiveTypes.Uint16, Valid: true}, val}
}
type Uint32 struct {
scalar
Value uint32
}
func (s *Uint32) Data() []byte {
return (*[arrow.Uint32SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Uint32) equals(rhs Scalar) bool {
return s.Value == rhs.(*Uint32).Value
}
func (s *Uint32) value() interface{} {
return s.Value
}
func (s *Uint32) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Uint32) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type uint32 to type %s", dt)
}
func NewUint32Scalar(val uint32) *Uint32 {
return &Uint32{scalar{Type: arrow.PrimitiveTypes.Uint32, Valid: true}, val}
}
type Uint64 struct {
scalar
Value uint64
}
func (s *Uint64) Data() []byte {
return (*[arrow.Uint64SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Uint64) equals(rhs Scalar) bool {
return s.Value == rhs.(*Uint64).Value
}
func (s *Uint64) value() interface{} {
return s.Value
}
func (s *Uint64) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Uint64) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type uint64 to type %s", dt)
}
func NewUint64Scalar(val uint64) *Uint64 {
return &Uint64{scalar{Type: arrow.PrimitiveTypes.Uint64, Valid: true}, val}
}
type Float32 struct {
scalar
Value float32
}
func (s *Float32) Data() []byte {
return (*[arrow.Float32SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Float32) equals(rhs Scalar) bool {
return s.Value == rhs.(*Float32).Value
}
func (s *Float32) value() interface{} {
return s.Value
}
func (s *Float32) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Float32) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type float32 to type %s", dt)
}
func NewFloat32Scalar(val float32) *Float32 {
return &Float32{scalar{Type: arrow.PrimitiveTypes.Float32, Valid: true}, val}
}
type Float64 struct {
scalar
Value float64
}
func (s *Float64) Data() []byte {
return (*[arrow.Float64SizeBytes]byte)(unsafe.Pointer(&s.Value))[:]
}
func (s *Float64) equals(rhs Scalar) bool {
return s.Value == rhs.(*Float64).Value
}
func (s *Float64) value() interface{} {
return s.Value
}
func (s *Float64) String() string {
if !s.Valid {
return "null"
}
val, err := s.CastTo(arrow.BinaryTypes.String)
if err != nil {
return "..."
}
return string(val.(*String).Value.Bytes())
}
func (s *Float64) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
r, ok := numericMap[dt.ID()]
if ok {
return convertToNumeric(reflect.ValueOf(s.Value), r.valueType, r.scalarFunc), nil
}
switch dt := dt.(type) {
case *arrow.BooleanType:
return NewBooleanScalar(s.Value != 0), nil
case *arrow.Date32Type:
return NewDate32Scalar(arrow.Date32(s.Value)), nil
case *arrow.Date64Type:
return NewDate64Scalar(arrow.Date64(s.Value)), nil
case *arrow.Time32Type:
return NewTime32Scalar(arrow.Time32(s.Value), dt), nil
case *arrow.Time64Type:
return NewTime64Scalar(arrow.Time64(s.Value), dt), nil
case *arrow.TimestampType:
return NewTimestampScalar(arrow.Timestamp(s.Value), dt), nil
case *arrow.MonthIntervalType:
return NewMonthIntervalScalar(arrow.MonthInterval(s.Value)), nil
case *arrow.StringType:
return NewStringScalar(fmt.Sprintf("%v", s.Value)), nil
}
return nil, xerrors.Errorf("invalid scalar cast from type float64 to type %s", dt)
}
func NewFloat64Scalar(val float64) *Float64 {
return &Float64{scalar{Type: arrow.PrimitiveTypes.Float64, Valid: true}, val}
}
var numericMap = map[arrow.Type]struct {
scalarFunc reflect.Value
valueType reflect.Type
}{
arrow.INT8: {scalarFunc: reflect.ValueOf(NewInt8Scalar), valueType: reflect.TypeOf(int8(0))},
arrow.INT16: {scalarFunc: reflect.ValueOf(NewInt16Scalar), valueType: reflect.TypeOf(int16(0))},
arrow.INT32: {scalarFunc: reflect.ValueOf(NewInt32Scalar), valueType: reflect.TypeOf(int32(0))},
arrow.INT64: {scalarFunc: reflect.ValueOf(NewInt64Scalar), valueType: reflect.TypeOf(int64(0))},
arrow.UINT8: {scalarFunc: reflect.ValueOf(NewUint8Scalar), valueType: reflect.TypeOf(uint8(0))},
arrow.UINT16: {scalarFunc: reflect.ValueOf(NewUint16Scalar), valueType: reflect.TypeOf(uint16(0))},
arrow.UINT32: {scalarFunc: reflect.ValueOf(NewUint32Scalar), valueType: reflect.TypeOf(uint32(0))},
arrow.UINT64: {scalarFunc: reflect.ValueOf(NewUint64Scalar), valueType: reflect.TypeOf(uint64(0))},
arrow.FLOAT32: {scalarFunc: reflect.ValueOf(NewFloat32Scalar), valueType: reflect.TypeOf(float32(0))},
arrow.FLOAT64: {scalarFunc: reflect.ValueOf(NewFloat64Scalar), valueType: reflect.TypeOf(float64(0))},
}
var (
_ Scalar = (*Int8)(nil)
_ Scalar = (*Int16)(nil)
_ Scalar = (*Int32)(nil)
_ Scalar = (*Int64)(nil)
_ Scalar = (*Uint8)(nil)
_ Scalar = (*Uint16)(nil)
_ Scalar = (*Uint32)(nil)
_ Scalar = (*Uint64)(nil)
_ Scalar = (*Float32)(nil)
_ Scalar = (*Float64)(nil)
)