|
@@ -10,6 +10,7 @@ import (
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"github.com/tux21b/gocql/uuid"
|
|
"github.com/tux21b/gocql/uuid"
|
|
|
"math"
|
|
"math"
|
|
|
|
|
+ "reflect"
|
|
|
"strconv"
|
|
"strconv"
|
|
|
"time"
|
|
"time"
|
|
|
)
|
|
)
|
|
@@ -76,6 +77,8 @@ func (e *columnEncoder) ColumnConverter(idx int) ValueConverter {
|
|
|
switch e.columnTypes[idx] {
|
|
switch e.columnTypes[idx] {
|
|
|
case typeInt:
|
|
case typeInt:
|
|
|
return ValueConverter(encInt)
|
|
return ValueConverter(encInt)
|
|
|
|
|
+ case typeBigInt:
|
|
|
|
|
+ return ValueConverter(encBigInt)
|
|
|
case typeFloat:
|
|
case typeFloat:
|
|
|
return ValueConverter(encFloat)
|
|
return ValueConverter(encFloat)
|
|
|
case typeDouble:
|
|
case typeDouble:
|
|
@@ -121,6 +124,13 @@ func encInt(v interface{}) (driver.Value, error) {
|
|
|
return b, nil
|
|
return b, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func encBigInt(v interface{}) (driver.Value, error) {
|
|
|
|
|
+ x := reflect.Indirect(reflect.ValueOf(v)).Interface()
|
|
|
|
|
+ b := make([]byte, 8)
|
|
|
|
|
+ binary.BigEndian.PutUint64(b, uint64(x.(int64)))
|
|
|
|
|
+ return b, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func encVarchar(v interface{}) (driver.Value, error) {
|
|
func encVarchar(v interface{}) (driver.Value, error) {
|
|
|
x, err := driver.String.ConvertValue(v)
|
|
x, err := driver.String.ConvertValue(v)
|
|
|
if err != nil {
|
|
if err != nil {
|