Skip to content

Commit 44e7a2a

Browse files
committed
Back-patch into 7.2 branch the 7.3 changes that made contrib/cube
error messages reasonably independent of the bison version used to build cubeparse.c. Needed to get this branch passing on buildfarm.
1 parent 861e3c7 commit 44e7a2a

File tree

3 files changed

+28
-22
lines changed

3 files changed

+28
-22
lines changed

contrib/cube/Makefile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Header: /cvsroot/pgsql/contrib/cube/Makefile,v 1.6 2001/11/16 16:32:33 petere Exp $
1+
# $Header: /cvsroot/pgsql/contrib/cube/Makefile,v 1.6.2.1 2005/07/16 19:27:20 tgl Exp $
22

33
subdir = contrib/cube
44
top_builddir = ../..
@@ -14,11 +14,17 @@ REGRESS = cube
1414

1515
cubeparse.c: cubeparse.h ;
1616

17+
# The sed hack is so that we can get the same error messages with
18+
# bison 1.875 and later as we did with earlier bisons. Eventually,
19+
# I suppose, we should re-standardize on "syntax error" --- in which
20+
# case flip the sed translation, but don't remove it.
21+
1722
cubeparse.h: cubeparse.y
1823
ifdef YACC
1924
$(YACC) -d $(YFLAGS) -p cube_yy $<
20-
mv -f y.tab.c cubeparse.c
25+
sed -e 's/"syntax error/"parse error/' < y.tab.c > cubeparse.c
2126
mv -f y.tab.h cubeparse.h
27+
rm -f y.tab.c
2228
else
2329
@$(missing) bison $< $@
2430
endif

contrib/cube/cubeparse.y

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22
/* NdBox = [(lowerleft),(upperright)] */
33
/* [(xLL(1)...xLL(N)),(xUR(1)...xUR(n))] */
44

5-
#define YYERROR_VERBOSE
65
#define YYPARSE_PARAM result /* need this to pass a pointer (void *) to yyparse */
76
#define YYSTYPE char *
87
#define YYDEBUG 1
98

10-
#include <string.h>
9+
#include "postgres.h"
10+
1111
#include "cubedata.h"
1212
#include "buffer.h"
1313

14-
#include "postgres.h"
1514
#include "utils/palloc.h"
1615
#include "utils/elog.h"
1716

@@ -164,8 +163,9 @@ int cube_yyerror ( char *msg ) {
164163

165164
position = parse_buffer_pos() > parse_buffer_size() ? parse_buffer_pos() - 1 : parse_buffer_pos();
166165

167-
sprintf(
166+
snprintf(
168167
buf,
168+
256,
169169
"%s at or before position %d, character ('%c', \\%03o), input: '%s'\n",
170170
msg,
171171
position,
@@ -175,7 +175,7 @@ int cube_yyerror ( char *msg ) {
175175
);
176176

177177
reset_parse_buffer();
178-
elog(ERROR, buf);
178+
elog(ERROR, "%s", buf);
179179
return 0;
180180
}
181181

contrib/cube/expected/cube.out

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ SELECT '.1'::cube AS cube;
4141
(1 row)
4242

4343
SELECT '-.1'::cube AS cube;
44-
ERROR: parse error, expecting `FLOAT' or `O_PAREN' or `O_BRACKET' at or before position 2, character ('.', \056), input: '-.1'
44+
ERROR: parse error at or before position 2, character ('.', \056), input: '-.1'
4545

4646
SELECT '1.0'::cube AS cube;
4747
cube
@@ -217,46 +217,46 @@ SELECT '[(0,0,0,0),(1,0,0,0)]'::cube AS cube;
217217
SELECT ''::cube AS cube;
218218
ERROR: cube_in: can't parse an empty string
219219
SELECT 'ABC'::cube AS cube;
220-
ERROR: parse error, expecting `FLOAT' or `O_PAREN' or `O_BRACKET' at or before position 1, character ('A', \101), input: 'ABC'
220+
ERROR: parse error at or before position 1, character ('A', \101), input: 'ABC'
221221

222222
SELECT '()'::cube AS cube;
223-
ERROR: parse error, expecting `FLOAT' at or before position 2, character (')', \051), input: '()'
223+
ERROR: parse error at or before position 2, character (')', \051), input: '()'
224224

225225
SELECT '[]'::cube AS cube;
226-
ERROR: parse error, expecting `O_PAREN' at or before position 2, character (']', \135), input: '[]'
226+
ERROR: parse error at or before position 2, character (']', \135), input: '[]'
227227

228228
SELECT '[()]'::cube AS cube;
229-
ERROR: parse error, expecting `FLOAT' at or before position 3, character (')', \051), input: '[()]'
229+
ERROR: parse error at or before position 3, character (')', \051), input: '[()]'
230230

231231
SELECT '[(1)]'::cube AS cube;
232-
ERROR: parse error, expecting `COMMA' at or before position 5, character (']', \135), input: '[(1)]'
232+
ERROR: parse error at or before position 5, character (']', \135), input: '[(1)]'
233233

234234
SELECT '[(1),]'::cube AS cube;
235-
ERROR: parse error, expecting `O_PAREN' at or before position 6, character (']', \135), input: '[(1),]'
235+
ERROR: parse error at or before position 6, character (']', \135), input: '[(1),]'
236236

237237
SELECT '[(1),2]'::cube AS cube;
238-
ERROR: parse error, expecting `O_PAREN' at or before position 7, character (']', \135), input: '[(1),2]'
238+
ERROR: parse error at or before position 7, character (']', \135), input: '[(1),2]'
239239

240240
SELECT '[(1),(2),(3)]'::cube AS cube;
241-
ERROR: parse error, expecting `C_BRACKET' at or before position 9, character (',', \054), input: '[(1),(2),(3)]'
241+
ERROR: parse error at or before position 9, character (',', \054), input: '[(1),(2),(3)]'
242242

243243
SELECT '1,'::cube AS cube;
244-
ERROR: parse error, expecting `FLOAT' at or before position 2, character (',', \054), input: '1,'
244+
ERROR: parse error at or before position 2, character (',', \054), input: '1,'
245245

246246
SELECT '1,2,'::cube AS cube;
247-
ERROR: parse error, expecting `FLOAT' at or before position 4, character (',', \054), input: '1,2,'
247+
ERROR: parse error at or before position 4, character (',', \054), input: '1,2,'
248248

249249
SELECT '1,,2'::cube AS cube;
250-
ERROR: parse error, expecting `FLOAT' at or before position 3, character (',', \054), input: '1,,2'
250+
ERROR: parse error at or before position 3, character (',', \054), input: '1,,2'
251251

252252
SELECT '(1,)'::cube AS cube;
253-
ERROR: parse error, expecting `FLOAT' at or before position 4, character (')', \051), input: '(1,)'
253+
ERROR: parse error at or before position 4, character (')', \051), input: '(1,)'
254254

255255
SELECT '(1,2,)'::cube AS cube;
256-
ERROR: parse error, expecting `FLOAT' at or before position 6, character (')', \051), input: '(1,2,)'
256+
ERROR: parse error at or before position 6, character (')', \051), input: '(1,2,)'
257257

258258
SELECT '(1,,2)'::cube AS cube;
259-
ERROR: parse error, expecting `FLOAT' at or before position 4, character (',', \054), input: '(1,,2)'
259+
ERROR: parse error at or before position 4, character (',', \054), input: '(1,,2)'
260260

261261
-- invalid input: semantic errors and trailing garbage
262262
SELECT '[(1),(2)],'::cube AS cube; -- 0

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy