2019-08-06 10:29:04 +02:00
|
|
|
package postgres
|
|
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
|
|
func TestString_REGEXP_LIKE_operator(t *testing.T) {
|
2019-12-01 18:26:01 +01:00
|
|
|
assertSerialize(t, table3StrCol.REGEXP_LIKE(table2ColStr), "(table3.col2 ~* table2.col_str)")
|
2022-05-05 13:01:42 +02:00
|
|
|
assertSerialize(t, table3StrCol.REGEXP_LIKE(String("JOHN")), "(table3.col2 ~* $1::text)", "JOHN")
|
|
|
|
|
assertSerialize(t, table3StrCol.REGEXP_LIKE(String("JOHN"), false), "(table3.col2 ~* $1::text)", "JOHN")
|
|
|
|
|
assertSerialize(t, table3StrCol.REGEXP_LIKE(String("JOHN"), true), "(table3.col2 ~ $1::text)", "JOHN")
|
2019-08-06 10:29:04 +02:00
|
|
|
}
|
|
|
|
|
|
2019-08-15 11:10:02 +02:00
|
|
|
func TestString_NOT_REGEXP_LIKE_operator(t *testing.T) {
|
2019-12-01 18:26:01 +01:00
|
|
|
assertSerialize(t, table3StrCol.NOT_REGEXP_LIKE(table2ColStr), "(table3.col2 !~* table2.col_str)")
|
2022-05-05 13:01:42 +02:00
|
|
|
assertSerialize(t, table3StrCol.NOT_REGEXP_LIKE(String("JOHN")), "(table3.col2 !~* $1::text)", "JOHN")
|
|
|
|
|
assertSerialize(t, table3StrCol.NOT_REGEXP_LIKE(String("JOHN"), false), "(table3.col2 !~* $1::text)", "JOHN")
|
|
|
|
|
assertSerialize(t, table3StrCol.NOT_REGEXP_LIKE(String("JOHN"), true), "(table3.col2 !~ $1::text)", "JOHN")
|
2019-08-06 10:29:04 +02:00
|
|
|
}
|
2019-08-11 14:29:03 +02:00
|
|
|
|
|
|
|
|
func TestExists(t *testing.T) {
|
2019-12-01 18:26:01 +01:00
|
|
|
assertSerialize(t, EXISTS(
|
2019-08-11 14:29:03 +02:00
|
|
|
table2.
|
|
|
|
|
SELECT(Int(1)).
|
|
|
|
|
WHERE(table1Col1.EQ(table2Col3)),
|
|
|
|
|
),
|
|
|
|
|
`(EXISTS (
|
|
|
|
|
SELECT $1
|
|
|
|
|
FROM db.table2
|
|
|
|
|
WHERE table1.col1 = table2.col3
|
|
|
|
|
))`, int64(1))
|
2019-12-07 18:52:46 +01:00
|
|
|
|
|
|
|
|
assertSerialize(t, EXISTS(
|
|
|
|
|
SELECT(Int(1)),
|
|
|
|
|
).EQ(Bool(true)),
|
|
|
|
|
`((EXISTS (
|
|
|
|
|
SELECT $1
|
2021-12-26 17:15:43 +01:00
|
|
|
)) = $2::boolean)`, int64(1), true)
|
2019-12-07 18:52:46 +01:00
|
|
|
|
|
|
|
|
assertProjectionSerialize(t, EXISTS(
|
|
|
|
|
SELECT(Int(1)),
|
|
|
|
|
).AS("exists"),
|
|
|
|
|
`(EXISTS (
|
|
|
|
|
SELECT $1
|
|
|
|
|
)) AS "exists"`, int64(1))
|
2019-08-11 14:29:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestIN(t *testing.T) {
|
|
|
|
|
|
2019-12-01 18:26:01 +01:00
|
|
|
assertSerialize(t, Float(1.11).IN(table1.SELECT(table1Col1)),
|
2021-10-21 13:35:37 +02:00
|
|
|
`($1 IN (
|
2019-08-11 14:29:03 +02:00
|
|
|
SELECT table1.col1 AS "table1.col1"
|
|
|
|
|
FROM db.table1
|
2021-10-21 13:35:37 +02:00
|
|
|
))`, float64(1.11))
|
2019-08-11 14:29:03 +02:00
|
|
|
|
2019-12-01 18:26:01 +01:00
|
|
|
assertSerialize(t, ROW(Int(12), table1Col1).IN(table2.SELECT(table2Col3, table3Col1)),
|
2021-10-21 13:35:37 +02:00
|
|
|
`(ROW($1, table1.col1) IN (
|
2019-08-11 14:29:03 +02:00
|
|
|
SELECT table2.col3 AS "table2.col3",
|
|
|
|
|
table3.col1 AS "table3.col1"
|
|
|
|
|
FROM db.table2
|
2021-10-21 13:35:37 +02:00
|
|
|
))`, int64(12))
|
2019-08-11 14:29:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestNOT_IN(t *testing.T) {
|
|
|
|
|
|
2019-12-01 18:26:01 +01:00
|
|
|
assertSerialize(t, Float(1.11).NOT_IN(table1.SELECT(table1Col1)),
|
2021-10-21 13:35:37 +02:00
|
|
|
`($1 NOT IN (
|
2019-08-11 14:29:03 +02:00
|
|
|
SELECT table1.col1 AS "table1.col1"
|
|
|
|
|
FROM db.table1
|
2021-10-21 13:35:37 +02:00
|
|
|
))`, float64(1.11))
|
2019-08-11 14:29:03 +02:00
|
|
|
|
2019-12-01 18:26:01 +01:00
|
|
|
assertSerialize(t, ROW(Int(12), table1Col1).NOT_IN(table2.SELECT(table2Col3, table3Col1)),
|
2021-10-21 13:35:37 +02:00
|
|
|
`(ROW($1, table1.col1) NOT IN (
|
2019-08-11 14:29:03 +02:00
|
|
|
SELECT table2.col3 AS "table2.col3",
|
|
|
|
|
table3.col1 AS "table3.col1"
|
|
|
|
|
FROM db.table2
|
2021-10-21 13:35:37 +02:00
|
|
|
))`, int64(12))
|
2019-08-11 14:29:03 +02:00
|
|
|
}
|
2020-02-16 10:25:21 +01:00
|
|
|
|
|
|
|
|
func TestReservedWordEscaped(t *testing.T) {
|
|
|
|
|
var table1ColUser = IntervalColumn("user")
|
|
|
|
|
var table1ColVariadic = IntervalColumn("VARIADIC")
|
|
|
|
|
var table1ColProcedure = IntervalColumn("procedure")
|
|
|
|
|
|
2021-03-21 17:17:44 +01:00
|
|
|
_ = NewTable("db", "table1", "", table1ColUser, table1ColVariadic, table1ColProcedure)
|
2020-02-16 10:25:21 +01:00
|
|
|
|
|
|
|
|
assertSerialize(t, table1ColUser, `table1."user"`)
|
|
|
|
|
assertSerialize(t, table1ColVariadic, `table1."VARIADIC"`)
|
|
|
|
|
assertSerialize(t, table1ColProcedure, `table1.procedure`)
|
|
|
|
|
}
|