diff options
| author | Tom Lane | 2003-07-24 17:52:50 +0000 |
|---|---|---|
| committer | Tom Lane | 2003-07-24 17:52:50 +0000 |
| commit | 8fd5b3ed67d91937516d855bd6f225052aa88f2a (patch) | |
| tree | 5f14c30cb79692b6d35e612ed97feb79f62a155d /contrib/cube | |
| parent | f0c5384d4a21d85198f86281f61d5754bfdca7a5 (diff) | |
Error message editing in contrib (mostly by Joe Conway --- thanks Joe!)
Diffstat (limited to 'contrib/cube')
| -rw-r--r-- | contrib/cube/buffer.c | 7 | ||||
| -rw-r--r-- | contrib/cube/cubeparse.y | 83 | ||||
| -rw-r--r-- | contrib/cube/expected/cube.out | 123 |
3 files changed, 132 insertions, 81 deletions
diff --git a/contrib/cube/buffer.c b/contrib/cube/buffer.c index bab7ae303c6..3a1b7288128 100644 --- a/contrib/cube/buffer.c +++ b/contrib/cube/buffer.c @@ -2,8 +2,6 @@ #include "postgres.h" -#include "utils/elog.h" - static char *PARSE_BUFFER; static char *PARSE_BUFFER_PTR; static unsigned int PARSE_BUFFER_SIZE; @@ -26,7 +24,10 @@ set_parse_buffer(char *s) PARSE_BUFFER = s; PARSE_BUFFER_SIZE = strlen(s); if (PARSE_BUFFER_SIZE == 0) - elog(ERROR, "cube_in: can't parse an empty string"); + ereport(ERROR, + (errcode(ERRCODE_ZERO_LENGTH_CHARACTER_STRING), + errmsg("can't parse an empty string"))); + PARSE_BUFFER_PTR = PARSE_BUFFER; SCANNER_POS = 0; } diff --git a/contrib/cube/cubeparse.y b/contrib/cube/cubeparse.y index 854912857bb..917d84079e3 100644 --- a/contrib/cube/cubeparse.y +++ b/contrib/cube/cubeparse.y @@ -11,9 +11,6 @@ #include "cubedata.h" #include "buffer.h" -#include "utils/palloc.h" -#include "utils/elog.h" - #undef yylex /* falure to redefine yylex will result in a call to the */ #define yylex cube_yylex /* wrong scanner when running inside the postgres backend */ @@ -48,19 +45,31 @@ box: if ( c != '\0' ) { /* Not at EOF */ reset_parse_buffer(); - elog(ERROR, "(0) bad cube representation; garbage at or before char %d, ('%c', \\%03o)\n", pos, c, c ); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("garbage at or before char %d, ('%c', \\%03o)", + pos, c, c))); YYERROR; } dim = delim_count($2, ',') + 1; if ( (delim_count($4, ',') + 1) != dim ) { reset_parse_buffer(); - elog(ERROR, "(1) bad cube representation; different point dimensions in (%s) and (%s)\n", $2, $4); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("different point dimensions in (%s) and (%s)", + $2, $4))); YYABORT; } if (dim > CUBE_MAX_DIM) { reset_parse_buffer(); - elog(ERROR, "(8) bad cube representation; more than %d dimensions\n", CUBE_MAX_DIM); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("more than %d dimensions", + CUBE_MAX_DIM))); YYABORT; } @@ -75,7 +84,11 @@ box: if ( c != '\0' ) { /* Not at EOF */ reset_parse_buffer(); - elog(ERROR, "(2) bad cube representation; garbage at or before char %d, ('%c', \\%03o)\n", pos, c, c ); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("garbage at or before char %d, ('%c', \\%03o)", + pos, c, c))); YYABORT; } @@ -83,12 +96,20 @@ box: if ( (delim_count($3, ',') + 1) != dim ) { reset_parse_buffer(); - elog(ERROR, "(3) bad cube representation; different point dimensions in (%s) and (%s)\n", $1, $3); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("different point dimensions in (%s) and (%s)", + $1, $3))); YYABORT; } if (dim > CUBE_MAX_DIM) { reset_parse_buffer(); - elog(ERROR, "(8) bad cube representation; more than %d dimensions\n", CUBE_MAX_DIM); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("more than %d dimensions", + CUBE_MAX_DIM))); YYABORT; } @@ -103,21 +124,33 @@ box: if ( c != '\0') { /* Not at EOF */ reset_parse_buffer(); - elog(ERROR, "(4) bad cube representation; garbage at or before char %d, ('%c', \\%03o)\n", pos, c, c ); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("garbage at or before char %d, ('%c', \\%03o)", + pos, c, c))); YYABORT; } if ( yychar != YYEOF) { /* There's still a lookahead token to be parsed */ reset_parse_buffer(); - elog(ERROR, "(5) bad cube representation; garbage at or before char %d, ('end of input', \\%03o)\n", pos, c); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("garbage at or before char %d, ('end of input', \\%03o)", + pos, c))); YYABORT; } dim = delim_count($1, ',') + 1; if (dim > CUBE_MAX_DIM) { reset_parse_buffer(); - elog(ERROR, "(8) bad cube representation; more than %d dimensions\n", CUBE_MAX_DIM); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("more than %d dimensions", + CUBE_MAX_DIM))); YYABORT; } @@ -133,21 +166,33 @@ box: if ( c != '\0') { /* Not at EOF */ reset_parse_buffer(); - elog(ERROR, "(6) bad cube representation; garbage at or before char %d, ('%c', \\%03o)\n", pos, c, c); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("garbage at or before char %d, ('%c', \\%03o)", + pos, c, c))); YYABORT; } if ( yychar != YYEOF) { /* There's still a lookahead token to be parsed */ reset_parse_buffer(); - elog(ERROR, "(7) bad cube representation; garbage at or before char %d, ('end of input', \\%03o)\n", pos, c); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("garbage at or before char %d, ('end of input', \\%03o)", + pos, c))); YYABORT; } dim = delim_count($1, ',') + 1; if (dim > CUBE_MAX_DIM) { reset_parse_buffer(); - elog(ERROR, "(8) bad cube representation; more than %d dimensions\n", CUBE_MAX_DIM); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("more than %d dimensions", + CUBE_MAX_DIM))); YYABORT; } *((void **)result) = write_point_as_box($1, dim); @@ -191,7 +236,7 @@ int cube_yyerror ( char *msg ) { snprintf( buf, 256, - "%s at or before position %d, character ('%c', \\%03o), input: '%s'\n", + "%s at or before position %d, character ('%c', \\%03o), input: '%s'", msg, position, parse_buffer()[position - 1], @@ -200,7 +245,11 @@ int cube_yyerror ( char *msg ) { ); reset_parse_buffer(); - elog(ERROR, "%s", buf); + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("bad cube representation"), + errdetail("%s", buf))); + return 0; } diff --git a/contrib/cube/expected/cube.out b/contrib/cube/expected/cube.out index aeda8314d77..4e4e70488bf 100644 --- a/contrib/cube/expected/cube.out +++ b/contrib/cube/expected/cube.out @@ -6,8 +6,9 @@ -- does not depend on contents of cube.sql. -- \set ECHO none -psql:cube.sql:10: NOTICE: ProcedureCreate: type cube is not yet defined -psql:cube.sql:15: NOTICE: Argument type "cube" is only a shell +psql:cube.sql:10: NOTICE: type cube is not yet defined +DETAIL: Creating a shell type definition. +psql:cube.sql:15: NOTICE: argument type cube is only a shell -- -- testing the input and output functions -- @@ -256,89 +257,89 @@ SELECT '[(0,0,0,0),(1,0,0,0)]'::cube AS cube; -- invalid input: parse errors SELECT ''::cube AS cube; -ERROR: cube_in: can't parse an empty string +ERROR: can't parse an empty string SELECT 'ABC'::cube AS cube; -ERROR: syntax error at or before position 1, character ('A', \101), input: 'ABC' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 1, character ('A', \101), input: 'ABC' SELECT '()'::cube AS cube; -ERROR: syntax error at or before position 2, character (')', \051), input: '()' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 2, character (')', \051), input: '()' SELECT '[]'::cube AS cube; -ERROR: syntax error at or before position 2, character (']', \135), input: '[]' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 2, character (']', \135), input: '[]' SELECT '[()]'::cube AS cube; -ERROR: syntax error at or before position 3, character (')', \051), input: '[()]' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 3, character (')', \051), input: '[()]' SELECT '[(1)]'::cube AS cube; -ERROR: syntax error at or before position 5, character (']', \135), input: '[(1)]' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 5, character (']', \135), input: '[(1)]' SELECT '[(1),]'::cube AS cube; -ERROR: syntax error at or before position 6, character (']', \135), input: '[(1),]' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 6, character (']', \135), input: '[(1),]' SELECT '[(1),2]'::cube AS cube; -ERROR: syntax error at or before position 7, character (']', \135), input: '[(1),2]' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 7, character (']', \135), input: '[(1),2]' SELECT '[(1),(2),(3)]'::cube AS cube; -ERROR: syntax error at or before position 9, character (',', \054), input: '[(1),(2),(3)]' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 9, character (',', \054), input: '[(1),(2),(3)]' SELECT '1,'::cube AS cube; -ERROR: syntax error at or before position 2, character (',', \054), input: '1,' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 2, character (',', \054), input: '1,' SELECT '1,2,'::cube AS cube; -ERROR: syntax error at or before position 4, character (',', \054), input: '1,2,' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 4, character (',', \054), input: '1,2,' SELECT '1,,2'::cube AS cube; -ERROR: syntax error at or before position 3, character (',', \054), input: '1,,2' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 3, character (',', \054), input: '1,,2' SELECT '(1,)'::cube AS cube; -ERROR: syntax error at or before position 4, character (')', \051), input: '(1,)' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 4, character (')', \051), input: '(1,)' SELECT '(1,2,)'::cube AS cube; -ERROR: syntax error at or before position 6, character (')', \051), input: '(1,2,)' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 6, character (')', \051), input: '(1,2,)' SELECT '(1,,2)'::cube AS cube; -ERROR: syntax error at or before position 4, character (',', \054), input: '(1,,2)' - +ERROR: bad cube representation +DETAIL: syntax error at or before position 4, character (',', \054), input: '(1,,2)' -- invalid input: semantic errors and trailing garbage SELECT '[(1),(2)],'::cube AS cube; -- 0 -ERROR: (0) bad cube representation; garbage at or before char 9, (',', \054) - +ERROR: bad cube representation +DETAIL: garbage at or before char 9, (',', \054) SELECT '[(1,2,3),(2,3)]'::cube AS cube; -- 1 -ERROR: (1) bad cube representation; different point dimensions in (1,2,3) and (2,3) - +ERROR: bad cube representation +DETAIL: different point dimensions in (1,2,3) and (2,3) SELECT '[(1,2),(1,2,3)]'::cube AS cube; -- 1 -ERROR: (1) bad cube representation; different point dimensions in (1,2) and (1,2,3) - +ERROR: bad cube representation +DETAIL: different point dimensions in (1,2) and (1,2,3) SELECT '(1),(2),'::cube AS cube; -- 2 -ERROR: (2) bad cube representation; garbage at or before char 7, (',', \054) - +ERROR: bad cube representation +DETAIL: garbage at or before char 7, (',', \054) SELECT '(1,2,3),(2,3)'::cube AS cube; -- 3 -ERROR: (3) bad cube representation; different point dimensions in (1,2,3) and (2,3) - +ERROR: bad cube representation +DETAIL: different point dimensions in (1,2,3) and (2,3) SELECT '(1,2),(1,2,3)'::cube AS cube; -- 3 -ERROR: (3) bad cube representation; different point dimensions in (1,2) and (1,2,3) - +ERROR: bad cube representation +DETAIL: different point dimensions in (1,2) and (1,2,3) SELECT '(1,2,3)ab'::cube AS cube; -- 4 -ERROR: (4) bad cube representation; garbage at or before char 8, ('b', \142) - +ERROR: bad cube representation +DETAIL: garbage at or before char 8, ('b', \142) SELECT '(1,2,3)a'::cube AS cube; -- 5 -ERROR: (5) bad cube representation; garbage at or before char 8, ('end of input', \000) - +ERROR: bad cube representation +DETAIL: garbage at or before char 8, ('end of input', \000) SELECT '(1,2)('::cube AS cube; -- 5 -ERROR: (5) bad cube representation; garbage at or before char 6, ('end of input', \000) - +ERROR: bad cube representation +DETAIL: garbage at or before char 6, ('end of input', \000) SELECT '1,2ab'::cube AS cube; -- 6 -ERROR: (6) bad cube representation; garbage at or before char 4, ('b', \142) - +ERROR: bad cube representation +DETAIL: garbage at or before char 4, ('b', \142) SELECT '1 e7'::cube AS cube; -- 6 -ERROR: (6) bad cube representation; garbage at or before char 3, ('7', \067) - +ERROR: bad cube representation +DETAIL: garbage at or before char 3, ('7', \067) SELECT '1,2a'::cube AS cube; -- 7 -ERROR: (7) bad cube representation; garbage at or before char 4, ('end of input', \000) - +ERROR: bad cube representation +DETAIL: garbage at or before char 4, ('end of input', \000) SELECT '1..2'::cube AS cube; -- 7 -ERROR: (7) bad cube representation; garbage at or before char 4, ('end of input', \000) - +ERROR: bad cube representation +DETAIL: garbage at or before char 4, ('end of input', \000) -- -- Testing building cubes from float8 values -- @@ -397,11 +398,11 @@ SELECT '(0)'::text::cube; -- Testing limit of CUBE_MAX_DIM dimensions check in cube_in. -- select '(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)'::cube; -ERROR: (8) bad cube representation; more than 100 dimensions - +ERROR: bad cube representation +DETAIL: more than 100 dimensions select '(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)'::cube; -ERROR: (8) bad cube representation; more than 100 dimensions - +ERROR: bad cube representation +DETAIL: more than 100 dimensions -- -- testing the operators -- |
