Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit 3e3d029

Browse files
committed
allow null enums when wire send zero value
1 parent 812fd59 commit 3e3d029

24 files changed

+28
-28
lines changed

lib/column/array.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type Array struct {
1616
column Column
1717
}
1818

19-
func (array *Array) Read(decoder *binary.Decoder) (interface{}, error) {
19+
func (array *Array) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
2020
return nil, fmt.Errorf("do not use Read method for Array(T) column")
2121
}
2222

@@ -69,7 +69,7 @@ func (array *Array) read(decoder *binary.Decoder, offsets [][]uint64, index uint
6969
err error
7070
)
7171
if level == array.depth-1 {
72-
value, err = array.column.Read(decoder)
72+
value, err = array.column.Read(decoder, false)
7373
} else {
7474
value, err = array.read(decoder, offsets, i, level+1)
7575
}

lib/column/column.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type Column interface {
1313
Name() string
1414
CHType() string
1515
ScanType() reflect.Type
16-
Read(*binary.Decoder) (interface{}, error)
16+
Read(*binary.Decoder, bool) (interface{}, error)
1717
Write(*binary.Encoder, interface{}) error
1818
defaultValue() interface{}
1919
Depth() int

lib/column/date.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ type Date struct {
1212
offset int64
1313
}
1414

15-
func (dt *Date) Read(decoder *binary.Decoder) (interface{}, error) {
15+
func (dt *Date) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
1616
sec, err := decoder.Int16()
1717
if err != nil {
1818
return nil, err

lib/column/datetime.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type DateTime struct {
1111
Timezone *time.Location
1212
}
1313

14-
func (dt *DateTime) Read(decoder *binary.Decoder) (interface{}, error) {
14+
func (dt *DateTime) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
1515
sec, err := decoder.Int32()
1616
if err != nil {
1717
return nil, err

lib/column/datetime64.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type DateTime64 struct {
1414
Timezone *time.Location
1515
}
1616

17-
func (dt *DateTime64) Read(decoder *binary.Decoder) (interface{}, error) {
17+
func (dt *DateTime64) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
1818
value, err := decoder.Int64()
1919
if err != nil {
2020
return nil, err

lib/column/decimal.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ type Decimal struct {
2727
scale int
2828
}
2929

30-
func (d *Decimal) Read(decoder *binary.Decoder) (interface{}, error) {
30+
func (d *Decimal) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
3131
switch d.nobits {
3232
case 32:
3333
return decoder.Int32()

lib/column/enum.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type Enum struct {
1515
baseType interface{}
1616
}
1717

18-
func (enum *Enum) Read(decoder *binary.Decoder) (interface{}, error) {
18+
func (enum *Enum) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
1919
var (
2020
err error
2121
ident interface{}
@@ -30,7 +30,7 @@ func (enum *Enum) Read(decoder *binary.Decoder) (interface{}, error) {
3030
return nil, err
3131
}
3232
}
33-
if ident, found := enum.vi[ident]; found {
33+
if ident, found := enum.vi[ident]; found || isNull {
3434
return ident, nil
3535
}
3636
return nil, fmt.Errorf("invalid Enum value: %v", ident)

lib/column/fixed_string.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type FixedString struct {
1414
scanType reflect.Type
1515
}
1616

17-
func (str *FixedString) Read(decoder *binary.Decoder) (interface{}, error) {
17+
func (str *FixedString) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
1818
v, err := decoder.Fixed(str.len)
1919
if err != nil {
2020
return "", err

lib/column/float32.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
type Float32 struct{ base }
88

9-
func (Float32) Read(decoder *binary.Decoder) (interface{}, error) {
9+
func (Float32) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
1010
v, err := decoder.Float32()
1111
if err != nil {
1212
return float32(0), err

lib/column/float64.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
type Float64 struct{ base }
88

9-
func (Float64) Read(decoder *binary.Decoder) (interface{}, error) {
9+
func (Float64) Read(decoder *binary.Decoder, isNull bool) (interface{}, error) {
1010
v, err := decoder.Float64()
1111
if err != nil {
1212
return float64(0), err

0 commit comments

Comments
 (0)