Reintroduce Uint64 literal constructor for postgres dialect.

This commit is contained in:
go-jet 2025-03-04 19:57:42 +01:00
parent 7047de44a9
commit 33c1d9e663
4 changed files with 24 additions and 1 deletions

View file

@ -1,3 +1,3 @@
package main package main
const version = "v2.11.1" const version = "v2.12.0"

View file

@ -49,6 +49,11 @@ func Uint32(value uint32) IntegerExpression {
return CAST(jet.Uint32(value)).AS_BIGINT() 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 // Float creates new float literal expression
var Float = jet.Float var Float = jet.Float

View file

@ -49,6 +49,11 @@ func TestUint32(t *testing.T) {
assertSerialize(t, Uint32(val), `$1::bigint`, val) 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) { func TestFloat(t *testing.T) {
assertSerialize(t, Float(12.34), `$1`, float64(12.34)) assertSerialize(t, Float(12.34), `$1`, float64(12.34))

View file

@ -3,6 +3,7 @@ package postgres
import ( import (
"github.com/go-jet/jet/v2/internal/utils/ptr" "github.com/go-jet/jet/v2/internal/utils/ptr"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"math"
"github.com/go-jet/jet/v2/qrm" "github.com/go-jet/jet/v2/qrm"
"testing" "testing"
@ -715,6 +716,18 @@ LIMIT $38;
testutils.AssertJSONFile(t, dest, "./testdata/results/common/float_operators.json") 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) { func TestIntegerOperators(t *testing.T) {
skipForCockroachDB(t) // some functions are still unimplemented skipForCockroachDB(t) // some functions are still unimplemented