MySQL cast expressions.
This commit is contained in:
parent
fcce8d4262
commit
53dbcd9bfc
41 changed files with 1136 additions and 684 deletions
|
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
. "github.com/go-jet/jet"
|
||||
"github.com/go-jet/jet/internal/testutils"
|
||||
"github.com/go-jet/jet/postgres"
|
||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/model"
|
||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/test_sample/table"
|
||||
"github.com/go-jet/jet/tests/testdata/common"
|
||||
|
|
@ -64,20 +65,20 @@ func TestExpressionOperators(t *testing.T) {
|
|||
AllTypes.SmallIntPtr.NOT_IN(Int(11), Int(22), NULL),
|
||||
AllTypes.SmallIntPtr.NOT_IN(AllTypes.SELECT(AllTypes.IntegerPtr)),
|
||||
|
||||
CAST(String("TRUE")).AS_BOOL(),
|
||||
CAST(String("111")).AS_SMALLINT(),
|
||||
CAST(String("111")).AS_INTEGER(),
|
||||
CAST(String("111")).AS_BIGINT(),
|
||||
CAST(String("11.23")).AS_NUMERIC(30, 10),
|
||||
CAST(String("11.23")).AS_NUMERIC(30),
|
||||
CAST(String("11.23")).AS_REAL(),
|
||||
CAST(String("11.23")).AS_DOUBLE(),
|
||||
CAST(Int(234)).AS_TEXT(),
|
||||
CAST(String("1/8/1999")).AS_DATE(),
|
||||
CAST(String("04:05:06.789")).AS_TIME(),
|
||||
CAST(String("04:05:06 PST")).AS_TIMEZ(),
|
||||
CAST(String("1999-01-08 04:05:06")).AS_TIMESTAMP(),
|
||||
CAST(String("January 8 04:05:06 1999 PST")).AS_TIMESTAMPZ(),
|
||||
postgres.CAST(String("TRUE")).AS_BOOL(),
|
||||
postgres.CAST(String("111")).AS_SMALLINT(),
|
||||
postgres.CAST(String("111")).AS_INTEGER(),
|
||||
postgres.CAST(String("111")).AS_BIGINT(),
|
||||
postgres.CAST(String("11.23")).AS_NUMERIC(30, 10),
|
||||
postgres.CAST(String("11.23")).AS_NUMERIC(30),
|
||||
postgres.CAST(String("11.23")).AS_REAL(),
|
||||
postgres.CAST(String("11.23")).AS_DOUBLE(),
|
||||
postgres.CAST(Int(234)).AS_TEXT(),
|
||||
postgres.CAST(String("1/8/1999")).AS_DATE(),
|
||||
postgres.CAST(String("04:05:06.789")).AS_TIME(),
|
||||
postgres.CAST(String("04:05:06 PST")).AS_TIMEZ(),
|
||||
postgres.CAST(String("1999-01-08 04:05:06")).AS_TIMESTAMP(),
|
||||
postgres.CAST(String("January 8 04:05:06 1999 PST")).AS_TIMESTAMPZ(),
|
||||
|
||||
TO_CHAR(AllTypes.Timestamp, String("HH12:MI:SS")),
|
||||
TO_CHAR(AllTypes.Integer, String("999")),
|
||||
|
|
@ -277,7 +278,7 @@ func TestFloatOperators(t *testing.T) {
|
|||
TRUNC(ABSf(AllTypes.Decimal), Int(2)).AS("abs"),
|
||||
TRUNC(POWER(AllTypes.Decimal, Float(2.1)), Int(2)).AS("power"),
|
||||
TRUNC(SQRT(AllTypes.Decimal), Int(2)).AS("sqrt"),
|
||||
TRUNC(CAST(CBRT(AllTypes.Decimal)).AS_DECIMAL(), Int(2)).AS("cbrt"),
|
||||
TRUNC(postgres.CAST(CBRT(AllTypes.Decimal)).AS_DECIMAL(), Int(2)).AS("cbrt"),
|
||||
|
||||
CEIL(AllTypes.Real).AS("ceil"),
|
||||
FLOOR(AllTypes.Real).AS("floor"),
|
||||
|
|
@ -750,16 +751,16 @@ var allTypesRow0 = model.AllTypes{
|
|||
Text: "Some text",
|
||||
ByteaPtr: ByteArrayPtr([]byte("bytea")),
|
||||
Bytea: []byte("bytea"),
|
||||
TimestampzPtr: TimestampWithTimeZone("1999-01-08 13:05:06 +0100 CET", 0),
|
||||
Timestampz: *TimestampWithTimeZone("1999-01-08 13:05:06 +0100 CET", 0),
|
||||
TimestampzPtr: testutils.TimestampWithTimeZone("1999-01-08 13:05:06 +0100 CET", 0),
|
||||
Timestampz: *testutils.TimestampWithTimeZone("1999-01-08 13:05:06 +0100 CET", 0),
|
||||
TimestampPtr: testutils.TimestampWithoutTimeZone("1999-01-08 04:05:06", 0),
|
||||
Timestamp: *testutils.TimestampWithoutTimeZone("1999-01-08 04:05:06", 0),
|
||||
DatePtr: testutils.TimestampWithoutTimeZone("1999-01-08 00:00:00", 0),
|
||||
Date: *testutils.TimestampWithoutTimeZone("1999-01-08 00:00:00", 0),
|
||||
TimezPtr: TimeWithTimeZone("04:05:06 -0800"),
|
||||
Timez: *TimeWithTimeZone("04:05:06 -0800"),
|
||||
TimePtr: TimeWithoutTimeZone("04:05:06"),
|
||||
Time: *TimeWithoutTimeZone("04:05:06"),
|
||||
TimezPtr: testutils.TimeWithTimeZone("04:05:06 -0800"),
|
||||
Timez: *testutils.TimeWithTimeZone("04:05:06 -0800"),
|
||||
TimePtr: testutils.TimeWithoutTimeZone("04:05:06"),
|
||||
Time: *testutils.TimeWithoutTimeZone("04:05:06"),
|
||||
IntervalPtr: StringPtr("3 days 04:05:06"),
|
||||
Interval: "3 days 04:05:06",
|
||||
BooleanPtr: BoolPtr(true),
|
||||
|
|
@ -817,15 +818,15 @@ var allTypesRow1 = model.AllTypes{
|
|||
ByteaPtr: nil,
|
||||
Bytea: []byte("bytea"),
|
||||
TimestampzPtr: nil,
|
||||
Timestampz: *TimestampWithTimeZone("1999-01-08 13:05:06 +0100 CET", 0),
|
||||
Timestampz: *testutils.TimestampWithTimeZone("1999-01-08 13:05:06 +0100 CET", 0),
|
||||
TimestampPtr: nil,
|
||||
Timestamp: *testutils.TimestampWithoutTimeZone("1999-01-08 04:05:06", 0),
|
||||
DatePtr: nil,
|
||||
Date: *testutils.TimestampWithoutTimeZone("1999-01-08 00:00:00", 0),
|
||||
TimezPtr: nil,
|
||||
Timez: *TimeWithTimeZone("04:05:06 -0800"),
|
||||
Timez: *testutils.TimeWithTimeZone("04:05:06 -0800"),
|
||||
TimePtr: nil,
|
||||
Time: *TimeWithoutTimeZone("04:05:06"),
|
||||
Time: *testutils.TimeWithoutTimeZone("04:05:06"),
|
||||
IntervalPtr: nil,
|
||||
Interval: "3 days 04:05:06",
|
||||
BooleanPtr: nil,
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ ORDER BY employee.employee_id;
|
|||
EmployeeID: 1,
|
||||
FirstName: "Windy",
|
||||
LastName: "Hays",
|
||||
EmploymentDate: TimestampWithTimeZone("1999-01-08 04:05:06.1 +0100 CET", 1),
|
||||
EmploymentDate: testutils.TimestampWithTimeZone("1999-01-08 04:05:06.1 +0100 CET", 1),
|
||||
ManagerID: nil,
|
||||
})
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ ORDER BY employee.employee_id;
|
|||
EmployeeID: 8,
|
||||
FirstName: "Salley",
|
||||
LastName: "Lester",
|
||||
EmploymentDate: TimestampWithTimeZone("1999-01-08 04:05:06 +0100 CET", 1),
|
||||
EmploymentDate: testutils.TimestampWithTimeZone("1999-01-08 04:05:06 +0100 CET", 1),
|
||||
ManagerID: Int32Ptr(3),
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
package postgres
|
||||
|
||||
import (
|
||||
. "github.com/go-jet/jet"
|
||||
"github.com/go-jet/jet"
|
||||
"github.com/go-jet/jet/internal/testutils"
|
||||
. "github.com/go-jet/jet/postgres"
|
||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/enum"
|
||||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/model"
|
||||
. "github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/table"
|
||||
|
|
@ -1255,7 +1256,7 @@ func TestAllSetOperators(t *testing.T) {
|
|||
select1 := Payment.SELECT(Payment.AllColumns).WHERE(Payment.PaymentID.GT_EQ(Int(17600)).AND(Payment.PaymentID.LT(Int(17610))))
|
||||
select2 := Payment.SELECT(Payment.AllColumns).WHERE(Payment.PaymentID.GT_EQ(Int(17620)).AND(Payment.PaymentID.LT(Int(17630))))
|
||||
|
||||
type setOperator func(lhs, rhs SelectStatement, selects ...SelectStatement) SelectStatement
|
||||
type setOperator func(lhs, rhs jet.SelectStatement, selects ...jet.SelectStatement) jet.SelectStatement
|
||||
operators := []setOperator{
|
||||
UNION,
|
||||
UNION_ALL,
|
||||
|
|
|
|||
|
|
@ -6,9 +6,7 @@ import (
|
|||
"github.com/go-jet/jet/tests/.gentestdata/jetdb/dvds/model"
|
||||
"github.com/google/uuid"
|
||||
"gotest.tools/assert"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func assertExec(t *testing.T, stmt jet.Statement, rowsAffected int64) {
|
||||
|
|
@ -62,43 +60,6 @@ func UUIDPtr(u string) *uuid.UUID {
|
|||
return &newUUID
|
||||
}
|
||||
|
||||
func TimeWithoutTimeZone(t string) *time.Time {
|
||||
newTime, err := time.Parse("15:04:05", t)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return &newTime
|
||||
}
|
||||
|
||||
func TimeWithTimeZone(t string) *time.Time {
|
||||
newTimez, err := time.Parse("15:04:05 -0700", t)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return &newTimez
|
||||
}
|
||||
|
||||
func TimestampWithTimeZone(t string, precision int) *time.Time {
|
||||
|
||||
precisionStr := ""
|
||||
|
||||
if precision > 0 {
|
||||
precisionStr = "." + strings.Repeat("9", precision)
|
||||
}
|
||||
|
||||
newTime, err := time.Parse("2006-01-02 15:04:05"+precisionStr+" -0700 MST", t)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return &newTime
|
||||
}
|
||||
|
||||
var customer0 = model.Customer{
|
||||
CustomerID: 1,
|
||||
StoreID: 1,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue