Fixed consecutive delimiters with text representation

This commit is contained in:
Andrew Kane
2023-06-11 12:10:52 -07:00
parent a577c2df80
commit 0a98a953cd
4 changed files with 15 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
## 0.4.4 (unreleased)
- Improved error message for malformed vector literal
- Fixed consecutive delimiters with text representation
## 0.4.3 (2023-06-10)

View File

@@ -225,6 +225,15 @@ vector_in(PG_FUNCTION_ARGS)
errmsg("malformed vector literal: \"%s\"", lit),
errdetail("Junk after closing right brace.")));
/* Ensure no consecutive delimiters since strtok skips */
for (pt = lit + 1; *pt != '\0'; pt++)
{
if (pt[-1] == ',' && *pt == ',')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("malformed vector literal: \"%s\"", lit)));
}
if (dim < 1)
ereport(ERROR,
(errcode(ERRCODE_DATA_EXCEPTION),

View File

@@ -65,6 +65,10 @@ SELECT '[1,]'::vector;
ERROR: invalid input syntax for type vector: "[1,]"
LINE 1: SELECT '[1,]'::vector;
^
SELECT '[1,,3]'::vector;
ERROR: malformed vector literal: "[1,,3]"
LINE 1: SELECT '[1,,3]'::vector;
^
SELECT '[1,2,3]'::vector(2);
ERROR: expected 2 dimensions, not 3
SELECT unnest('{"[1,2,3]", "[4,5,6]"}'::vector[]);

View File

@@ -12,6 +12,7 @@ SELECT '[1,2,3]9'::vector;
SELECT '1,2,3'::vector;
SELECT '[]'::vector;
SELECT '[1,]'::vector;
SELECT '[1,,3]'::vector;
SELECT '[1,2,3]'::vector(2);
SELECT unnest('{"[1,2,3]", "[4,5,6]"}'::vector[]);