Reintroduce Uint64 literal constructor for postgres dialect.
This commit is contained in:
parent
7047de44a9
commit
33c1d9e663
4 changed files with 24 additions and 1 deletions
|
|
@ -1,3 +1,3 @@
|
|||
package main
|
||||
|
||||
const version = "v2.11.1"
|
||||
const version = "v2.12.0"
|
||||
|
|
|
|||
|
|
@ -49,6 +49,11 @@ func Uint32(value uint32) IntegerExpression {
|
|||
return CAST(jet.Uint32(value)).AS_BIGINT()
|
||||
}
|
||||
|
||||
// Uint64 is constructor for 64 bit unsigned integer expressions literals.
|
||||
func Uint64(value uint64) IntegerExpression {
|
||||
return CAST(jet.Uint64(value)).AS_BIGINT()
|
||||
}
|
||||
|
||||
// Float creates new float literal expression
|
||||
var Float = jet.Float
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,11 @@ func TestUint32(t *testing.T) {
|
|||
assertSerialize(t, Uint32(val), `$1::bigint`, val)
|
||||
}
|
||||
|
||||
func TestUint64(t *testing.T) {
|
||||
val := uint32(math.MaxUint32)
|
||||
assertSerialize(t, Uint32(val), `$1::bigint`, val)
|
||||
}
|
||||
|
||||
func TestFloat(t *testing.T) {
|
||||
assertSerialize(t, Float(12.34), `$1`, float64(12.34))
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package postgres
|
|||
import (
|
||||
"github.com/go-jet/jet/v2/internal/utils/ptr"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"math"
|
||||
|
||||
"github.com/go-jet/jet/v2/qrm"
|
||||
"testing"
|
||||
|
|
@ -715,6 +716,18 @@ LIMIT $38;
|
|||
testutils.AssertJSONFile(t, dest, "./testdata/results/common/float_operators.json")
|
||||
}
|
||||
|
||||
func TestUInt64Overflow(t *testing.T) {
|
||||
stmt := AllTypes.INSERT(AllTypes.BigInt).
|
||||
VALUES(Uint64(math.MaxUint64))
|
||||
|
||||
_, err := stmt.Exec(db)
|
||||
if isPgxDriver() {
|
||||
require.ErrorContains(t, err, "18446744073709551615 is greater than maximum value for Int8")
|
||||
} else {
|
||||
require.ErrorContains(t, err, "sql: converting argument $1 type: uint64 values with high bit set are not supported")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntegerOperators(t *testing.T) {
|
||||
skipForCockroachDB(t) // some functions are still unimplemented
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue