Improved error message for malformed vector literal - #153

This commit is contained in:
Andrew Kane
2023-06-11 09:24:11 -07:00
parent 987026a559
commit 2b939edfee
3 changed files with 12 additions and 5 deletions

View File

@@ -1,3 +1,7 @@
## 0.4.4 (unreleased)
- Improved error message for malformed vector literal
## 0.4.3 (2023-06-10)
- Improved cost estimation

View File

@@ -174,6 +174,7 @@ vector_in(PG_FUNCTION_ARGS)
char *pt;
char *stringEnd;
Vector *result;
char *lit = pstrdup(str);
while (vector_isspace(*str))
str++;
@@ -181,7 +182,7 @@ vector_in(PG_FUNCTION_ARGS)
if (*str != '[')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("malformed vector literal: \"%s\"", str),
errmsg("malformed vector literal: \"%s\"", lit),
errdetail("Vector contents must start with \"[\".")));
str++;
@@ -219,7 +220,7 @@ vector_in(PG_FUNCTION_ARGS)
if (*stringEnd != ']')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("malformed vector literal"),
errmsg("malformed vector literal: \"%s\"", lit),
errdetail("Unexpected end of input.")));
stringEnd++;
@@ -231,7 +232,7 @@ vector_in(PG_FUNCTION_ARGS)
if (*stringEnd != '\0')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("malformed vector literal"),
errmsg("malformed vector literal: \"%s\"", lit),
errdetail("Junk after closing right brace.")));
if (dim < 1)
@@ -239,6 +240,8 @@ vector_in(PG_FUNCTION_ARGS)
(errcode(ERRCODE_DATA_EXCEPTION),
errmsg("vector must have at least 1 dimension")));
pfree(lit);
CheckExpectedDim(typmod, dim);
result = InitVector(dim);

View File

@@ -43,12 +43,12 @@ ERROR: infinite value not allowed in vector
LINE 1: SELECT '[4e38,1]'::vector;
^
SELECT '[1,2,3'::vector;
ERROR: malformed vector literal
ERROR: malformed vector literal: "[1,2,3"
LINE 1: SELECT '[1,2,3'::vector;
^
DETAIL: Unexpected end of input.
SELECT '[1,2,3]9'::vector;
ERROR: malformed vector literal
ERROR: malformed vector literal: "[1,2,3]9"
LINE 1: SELECT '[1,2,3]9'::vector;
^
DETAIL: Junk after closing right brace.