diff --git a/src/sparsevec.c b/src/sparsevec.c index ac7e792..1844956 100644 --- a/src/sparsevec.c +++ b/src/sparsevec.c @@ -213,6 +213,10 @@ sparsevec_in(PG_FUNCTION_ARGS) errdetail("Vector contents must start with \"{\"."))); str++; + + while (sparsevec_isspace(*str)) + str++; + pt = strtok(str, ","); stringEnd = pt; diff --git a/test/expected/sparsevec_input.out b/test/expected/sparsevec_input.out index 0592e26..64f48cd 100644 --- a/test/expected/sparsevec_input.out +++ b/test/expected/sparsevec_input.out @@ -10,6 +10,12 @@ SELECT ' { 1 : 1.5 , 3 : 3.5 } / 5 '::sparsevec; {1:1.5,3:3.5}/5 (1 row) +SELECT ' { } / 5'::sparsevec; + sparsevec +----------- + {}/5 +(1 row) + SELECT ''::sparsevec; ERROR: invalid input syntax for type sparsevec: "" LINE 1: SELECT ''::sparsevec; @@ -24,6 +30,7 @@ SELECT '{ '::sparsevec; ERROR: invalid input syntax for type sparsevec: "{ " LINE 1: SELECT '{ '::sparsevec; ^ +DETAIL: Unexpected end of input. SELECT '{}'::sparsevec; ERROR: invalid input syntax for type sparsevec: "{}" LINE 1: SELECT '{}'::sparsevec; diff --git a/test/sql/sparsevec_input.sql b/test/sql/sparsevec_input.sql index 37c35db..0d01711 100644 --- a/test/sql/sparsevec_input.sql +++ b/test/sql/sparsevec_input.sql @@ -1,5 +1,6 @@ SELECT '{1:1.5,3:3.5}/5'::sparsevec; SELECT ' { 1 : 1.5 , 3 : 3.5 } / 5 '::sparsevec; +SELECT ' { } / 5'::sparsevec; SELECT ''::sparsevec; SELECT '{'::sparsevec;