diff --git a/src/intvec.c b/src/intvec.c index 68209a8..fc9283b 100644 --- a/src/intvec.c +++ b/src/intvec.c @@ -363,7 +363,7 @@ array_to_intvec(PG_FUNCTION_ARGS) { ArrayType *array = PG_GETARG_ARRAYTYPE_P(0); int32 typmod = PG_GETARG_INT32(1); - Vector *result; + IntVector *result; int16 typlen; bool typbyval; char typalign; @@ -386,7 +386,7 @@ array_to_intvec(PG_FUNCTION_ARGS) CheckDim(nelemsp); CheckExpectedDim(typmod, nelemsp); - result = InitVector(nelemsp); + result = InitIntVector(nelemsp); if (ARR_ELEMTYPE(array) == INT4OID) { @@ -609,10 +609,10 @@ intvec_cmp_internal(IntVector * a, IntVector * b) /* Check values before dimensions to be consistent with Postgres arrays */ for (int i = 0; i < dim; i++) { - if (a->x[i] < b->x[i]) + if ((int) a->x[i] < (int) b->x[i]) return -1; - if (a->x[i] > b->x[i]) + if ((int) a->x[i] > (int) b->x[i]) return 1; } diff --git a/test/t/033_comparison.pl b/test/t/033_comparison.pl index b668748..ea59cfa 100644 --- a/test/t/033_comparison.pl +++ b/test/t/033_comparison.pl @@ -40,6 +40,10 @@ for (1 .. 50) $actual = $node->safe_psql("postgres", "SELECT halfvec_cmp(v::halfvec, '$query'::real[]::halfvec) FROM tst"); is($expected, $actual); + # Test intvec + $actual = $node->safe_psql("postgres", "SELECT intvec_cmp(v::int[]::intvec, '$query'::int[]::intvec) FROM tst"); + is($expected, $actual); + # Test sparsevec $actual = $node->safe_psql("postgres", "SELECT sparsevec_cmp(v::vector::sparsevec, '$query'::real[]::vector::sparsevec) FROM tst"); is($expected, $actual);