Additional tests.
This commit is contained in:
parent
4ee047a675
commit
89e93710aa
4 changed files with 262 additions and 26 deletions
|
|
@ -394,8 +394,8 @@ func ARRAY_NDIMS[E Expression](arr Array[E]) IntegerExpression {
|
|||
// If the third argument is given, the search begins at that subscript.
|
||||
// The array must be one-dimensional.
|
||||
// Comparisons are done using IS NOT DISTINCT FROM semantics, so it is possible to search for NULL.
|
||||
func ARRAY_POSITION[E Expression](arr Array[E], elem E, beginAt ...IntegerExpression) IntegerExpression {
|
||||
return IntExp(Func("ARRAY_POSITION", optionalAppend([]Expression{arr, elem}, beginAt)...))
|
||||
func ARRAY_POSITION[E Expression](arr Array[E], elem E, start ...IntegerExpression) IntegerExpression {
|
||||
return IntExp(Func("ARRAY_POSITION", optionalAppend([]Expression{arr, elem}, start)...))
|
||||
}
|
||||
|
||||
// ARRAY_POSITIONS returns an array of the subscripts of all occurrences of the second argument in the array given as first argument.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package postgres
|
||||
|
||||
import (
|
||||
"github.com/lib/pq"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
|
@ -34,3 +35,41 @@ func TestGENERATE_SERIES(t *testing.T) {
|
|||
"GENERATE_SERIES(NOW(), NOW() + INTERVAL '10 DAY', INTERVAL '2 DAY')",
|
||||
)
|
||||
}
|
||||
|
||||
func TestArrayFunctions(t *testing.T) {
|
||||
|
||||
intArray := Int32Array(1, 2, 3)
|
||||
stringArrayColumn := StringArrayColumn("str_arr_col")
|
||||
|
||||
assertSerialize(t, ARRAY_LOWER(intArray), "ARRAY_LOWER($1::integer[])", pq.Int32Array{1, 2, 3})
|
||||
assertSerialize(t, ARRAY_DIMS(stringArrayColumn).EQ(String("[1,1]")),
|
||||
"(ARRAY_DIMS(str_arr_col) = $1::text)",
|
||||
"[1,1]",
|
||||
)
|
||||
assertSerialize(t, ARRAY_NDIMS(stringArrayColumn).EQ(Int(1)), "(ARRAY_NDIMS(str_arr_col) = $1)", int64(1))
|
||||
assertSerialize(t, ARRAY_REVERSE(stringArrayColumn), "ARRAY_REVERSE(str_arr_col)")
|
||||
assertSerialize(t, ARRAY_SAMPLE(stringArrayColumn, Int(2)).AT(Int(1)).EQ(String("john")),
|
||||
"(ARRAY_SAMPLE(str_arr_col, $1)[$2] = $3::text)",
|
||||
int64(2), int64(1), "john",
|
||||
)
|
||||
|
||||
assertSerialize(t, ARRAY_SHUFFLE(intArray).AT(Int(2)).EQ(Int(33)),
|
||||
"(ARRAY_SHUFFLE($1::integer[])[$2] = $3)",
|
||||
pq.Int32Array{1, 2, 3}, int64(2), int64(33),
|
||||
)
|
||||
|
||||
assertSerialize(t, ARRAY_SORT(stringArrayColumn, Bool(true)),
|
||||
"ARRAY_SORT(str_arr_col, $1::boolean)",
|
||||
true,
|
||||
)
|
||||
|
||||
assertSerialize(t, ARRAY_SORT(stringArrayColumn, Bool(true), Bool(false)),
|
||||
"ARRAY_SORT(str_arr_col, $1::boolean, $2::boolean)",
|
||||
true, false,
|
||||
)
|
||||
|
||||
assertSerialize(t, TRIM_ARRAY(stringArrayColumn, Int(6)),
|
||||
"TRIM_ARRAY(str_arr_col, $1)",
|
||||
int64(6),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue