Dialect refactor improvements and clean up.

This commit is contained in:
go-jet 2019-08-06 10:29:04 +02:00
parent 23fd973699
commit 647ef21aaf
52 changed files with 1097 additions and 671 deletions

View file

@ -127,6 +127,7 @@ func TestExpressionCast(t *testing.T) {
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_NUMERIC(),
postgres.CAST(String("11.23")).AS_REAL(),
postgres.CAST(String("11.23")).AS_DOUBLE(),
postgres.CAST(Int(234)).AS_TEXT(),
@ -162,45 +163,56 @@ func TestExpressionCast(t *testing.T) {
func TestStringOperators(t *testing.T) {
query := AllTypes.SELECT(
AllTypes.Text.EQ(AllTypes.Character),
AllTypes.Text.EQ(AllTypes.Char),
AllTypes.Text.EQ(String("Text")),
AllTypes.Text.NOT_EQ(AllTypes.CharacterVaryingPtr),
AllTypes.Text.NOT_EQ(AllTypes.VarCharPtr),
AllTypes.Text.NOT_EQ(String("Text")),
AllTypes.Text.GT(AllTypes.Text),
AllTypes.Text.GT(String("Text")),
AllTypes.Text.GT_EQ(AllTypes.TextPtr),
AllTypes.Text.GT_EQ(String("Text")),
AllTypes.Text.LT(AllTypes.Character),
AllTypes.Text.LT(AllTypes.Char),
AllTypes.Text.LT(String("Text")),
AllTypes.Text.LT_EQ(AllTypes.CharacterVaryingPtr),
AllTypes.Text.LT_EQ(AllTypes.VarChar),
AllTypes.Text.LT_EQ(String("Text")),
AllTypes.Text.CONCAT(String("text2")),
AllTypes.Text.CONCAT(Int(11)),
AllTypes.Text.LIKE(String("abc")),
AllTypes.Text.NOT_LIKE(String("_b_")),
AllTypes.Text.SIMILAR_TO(String("%(b|d)%")),
AllTypes.Text.NOT_SIMILAR_TO(String("(b|c)%")),
AllTypes.Text.REGEXP_LIKE(String("aba")),
AllTypes.Text.REGEXP_LIKE(String("aba"), "c"),
AllTypes.Text.REGEXP_LIKE(String("aba"), "i"),
BIT_LENGTH(AllTypes.Text),
CHAR_LENGTH(AllTypes.Character),
BIT_LENGTH(String("length")),
CHAR_LENGTH(AllTypes.Char),
CHAR_LENGTH(String("length")),
OCTET_LENGTH(AllTypes.Text),
LOWER(AllTypes.CharacterVaryingPtr),
UPPER(AllTypes.Character),
BTRIM(AllTypes.CharacterVarying),
BTRIM(AllTypes.CharacterVarying, String("AA")),
LTRIM(AllTypes.CharacterVarying),
LTRIM(AllTypes.CharacterVarying, String("A")),
RTRIM(AllTypes.CharacterVarying),
RTRIM(AllTypes.CharacterVarying, String("B")),
OCTET_LENGTH(String("length")),
LOWER(AllTypes.VarCharPtr),
LOWER(String("length")),
UPPER(AllTypes.Char),
UPPER(String("upper")),
BTRIM(AllTypes.VarChar),
BTRIM(String("btrim")),
BTRIM(AllTypes.VarChar, String("AA")),
BTRIM(String("btrim"), String("AA")),
LTRIM(AllTypes.VarChar),
LTRIM(String("ltrim")),
LTRIM(AllTypes.VarChar, String("A")),
LTRIM(String("Ltrim"), String("A")),
RTRIM(String("rtrim")),
RTRIM(AllTypes.VarChar, String("B")),
CHR(Int(65)),
//CONCAT(String("string1"), Int(1), Float(11.12)),
//CONCAT_WS(String("string1"), Int(1), Float(11.12)),
CONVERT(String("text_in_utf8"), String("UTF8"), String("LATIN1")),
CONCAT(AllTypes.VarCharPtr, AllTypes.VarCharPtr, String("aaa"), Int(1)),
CONCAT(Bool(false), Int(1), Float(22.2), String("test test")),
CONCAT_WS(String("string1"), Int(1), Float(11.22), String("bytea"), Bool(false)), //Float(11.12)),
CONVERT(String("bytea"), String("UTF8"), String("LATIN1")),
CONVERT(AllTypes.Bytea, String("UTF8"), String("LATIN1")),
CONVERT_FROM(String("text_in_utf8"), String("UTF8")),
CONVERT_TO(String("text_in_utf8"), String("UTF8")),
ENCODE(String("123\000\001"), String("base64")),
DECODE(String("MTIzAAE="), String("base64")),
//FORMAT(String("Hello %s, %1$s"), String("World")),
FORMAT(String("Hello %s, %1$s"), String("World")),
INITCAP(String("hi THOMAS")),
LEFT(String("abcde"), Int(2)),
RIGHT(String("abcde"), Int(2)),
@ -210,13 +222,13 @@ func TestStringOperators(t *testing.T) {
LPAD(String("Hi"), Int(5), String("xy")),
RPAD(String("Hi"), Int(5)),
RPAD(String("Hi"), Int(5), String("xy")),
MD5(AllTypes.CharacterVarying),
MD5(AllTypes.VarChar),
REPEAT(AllTypes.Text, Int(33)),
REPLACE(AllTypes.Character, String("BA"), String("AB")),
REVERSE(AllTypes.CharacterVarying),
REPLACE(AllTypes.Char, String("BA"), String("AB")),
REVERSE(AllTypes.VarChar),
STRPOS(AllTypes.Text, String("A")),
SUBSTR(AllTypes.CharacterPtr, Int(3)),
SUBSTR(AllTypes.CharacterPtr, Int(3), Int(2)),
SUBSTR(AllTypes.Char, Int(3)),
SUBSTR(AllTypes.CharPtr, Int(3), Int(2)),
TO_HEX(AllTypes.IntegerPtr),
)
@ -224,7 +236,7 @@ func TestStringOperators(t *testing.T) {
//fmt.Println(query.Sql())
//fmt.Println(args[15])
//fmt.Println(query.DebugSql())
fmt.Println(query.Sql())
err := query.Query(db, &struct{}{})
@ -459,7 +471,7 @@ func TestIntegerOperators(t *testing.T) {
AllTypes.SmallInt.BIT_XOR(Int(11)).AS("bit xor 2"),
BIT_NOT(MINUSi(AllTypes.SmallInt)).AS("bit_not_1"),
BIT_NOT(MINUSi(Int(11, true))).AS("bit_not_2"),
BIT_NOT(MINUSi(Int(11))).AS("bit_not_2"),
AllTypes.SmallInt.BIT_SHIFT_LEFT(AllTypes.SmallInt.DIV(Int(2))).AS("bit shift left 1"),
AllTypes.SmallInt.BIT_SHIFT_LEFT(Int(4)).AS("bit shift left 2"),
@ -513,8 +525,8 @@ SELECT all_types.big_int AS "all_types.big_int",
(all_types.small_int | $16) AS "bit or 2",
(all_types.small_int # all_types.small_int) AS "bit xor 1",
(all_types.small_int # $17) AS "bit xor 2",
(~ (- all_types.small_int)) AS "bit_not_1",
(~ (- 11)) AS "bit_not_2",
(~ all_types.small_int) AS "bit_not_1",
(~ 11) AS "bit_not_2",
(all_types.small_int << (all_types.small_int / $18)) AS "bit shift left 1",
(all_types.small_int << $19) AS "bit shift left 2",
(all_types.small_int >> (all_types.small_int / $20)) AS "bit shift right 1",
@ -539,7 +551,7 @@ LIMIT $22;
testutils.AssertJSONFile(t, dest, "./testdata/common/int_operators.json")
}
func TestTimeOperators(t *testing.T) {
func TestTimeExpression(t *testing.T) {
query := AllTypes.SELECT(
AllTypes.Time.EQ(AllTypes.Time),
AllTypes.Time.EQ(Time(23, 6, 6, 1)),
@ -799,10 +811,10 @@ var allTypesRow0 = model.AllTypes{
Bigserial: 1,
//MoneyPtr: nil,
//Money:
CharacterVaryingPtr: StringPtr("ABBA"),
CharacterVarying: "ABBA",
CharacterPtr: StringPtr("JOHN "),
Character: "JOHN ",
VarCharPtr: StringPtr("ABBA"),
VarChar: "ABBA",
CharPtr: StringPtr("JOHN "),
Char: "JOHN ",
TextPtr: StringPtr("Some text"),
Text: "Some text",
ByteaPtr: ByteArrayPtr([]byte("bytea")),
@ -865,10 +877,10 @@ var allTypesRow1 = model.AllTypes{
Bigserial: 2,
//MoneyPtr: nil,
//Money:
CharacterVaryingPtr: nil,
CharacterVarying: "ABBA",
CharacterPtr: nil,
Character: "JOHN ",
VarCharPtr: nil,
VarChar: "ABBA",
CharPtr: nil,
Char: "JOHN ",
TextPtr: nil,
Text: "Some text",
ByteaPtr: nil,

View file

@ -1273,8 +1273,6 @@ func TestAllSetOperators(t *testing.T) {
UNION_ALL,
INTERSECT,
INTERSECT_ALL,
//EXCEPT,
//EXCEPT_ALL,
}
expectedDestLen := []int{