44 lines
813 B
Go
44 lines
813 B
Go
|
package column
|
||
|
|
||
|
import (
|
||
|
"github.com/kshvakov/clickhouse/lib/binary"
|
||
|
)
|
||
|
|
||
|
type UInt8 struct{ base }
|
||
|
|
||
|
func (UInt8) Read(decoder *binary.Decoder) (interface{}, error) {
|
||
|
v, err := decoder.UInt8()
|
||
|
if err != nil {
|
||
|
return uint8(0), err
|
||
|
}
|
||
|
return v, nil
|
||
|
}
|
||
|
|
||
|
func (u *UInt8) Write(encoder *binary.Encoder, v interface{}) error {
|
||
|
switch v := v.(type) {
|
||
|
case bool:
|
||
|
return encoder.Bool(v)
|
||
|
case uint8:
|
||
|
return encoder.UInt8(v)
|
||
|
case int64:
|
||
|
return encoder.UInt8(uint8(v))
|
||
|
case int:
|
||
|
return encoder.UInt8(uint8(v))
|
||
|
|
||
|
// this relies on Nullable never sending nil values through
|
||
|
case *bool:
|
||
|
return encoder.Bool(*v)
|
||
|
case *uint8:
|
||
|
return encoder.UInt8(*v)
|
||
|
case *int64:
|
||
|
return encoder.UInt8(uint8(*v))
|
||
|
case *int:
|
||
|
return encoder.UInt8(uint8(*v))
|
||
|
}
|
||
|
|
||
|
return &ErrUnexpectedType{
|
||
|
T: v,
|
||
|
Column: u,
|
||
|
}
|
||
|
}
|