Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit84e5ce7

Browse files
committed
Back-patch into 7.2 branch the 7.3 changes that made contrib/seg
error messages reasonably independent of the bison version used tobuild segparse.c. Needed to get this branch passing on buildfarm.
1 parent44e7a2a commit84e5ce7

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

‎contrib/seg/Makefile

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

33
subdir = contrib/seg
44
top_builddir = ../..
@@ -13,11 +13,17 @@ REGRESS = seg
1313

1414
segparse.c: segparse.h ;
1515

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

‎contrib/seg/expected/seg.out

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -393,25 +393,25 @@ SELECT '100(+-)1'::seg AS seg;
393393
SELECT ''::seg AS seg;
394394
ERROR: seg_in: can't parse an empty string
395395
SELECT 'ABC'::seg AS seg;
396-
ERROR: parse error, expecting `FLOAT' or `RANGE' or `EXTENSION' at or near position 1, character ('A', \101), input: 'ABC'
396+
ERROR: parse error at or near position 1, character ('A', \101), input: 'ABC'
397397

398398
SELECT '1ABC'::seg AS seg;
399-
ERROR:expecting end of input at or near position 2, character ('A', \101), input: '1ABC'
399+
ERROR:parse error at or near position 2, character ('A', \101), input: '1ABC'
400400

401401
SELECT '1.'::seg AS seg;
402-
ERROR:expecting end of input at or near position 2, character ('.', \056), input: '1.'
402+
ERROR:parse error at or near position 2, character ('.', \056), input: '1.'
403403

404404
SELECT '1.....'::seg AS seg;
405-
ERROR:expecting end of input at or near position 6, character ('.', \056), input: '1.....'
405+
ERROR:parse error at or near position 6, character ('.', \056), input: '1.....'
406406

407407
SELECT '.1'::seg AS seg;
408-
ERROR: parse error, expecting `FLOAT' or `RANGE' or `EXTENSION' at or near position 2, character ('1', \061), input: '.1'
408+
ERROR: parse error at or near position 2, character ('1', \061), input: '.1'
409409

410410
SELECT '1..2.'::seg AS seg;
411-
ERROR:expecting end of input at or near position 5, character ('.', \056), input: '1..2.'
411+
ERROR:parse error at or near position 5, character ('.', \056), input: '1..2.'
412412

413413
SELECT '1 e7'::seg AS seg;
414-
ERROR:expecting end of input at or near position 3, character ('e', \145), input: '1 e7'
414+
ERROR:parse error at or near position 3, character ('e', \145), input: '1 e7'
415415

416416
SELECT '1e700'::seg AS seg;
417417
ERROR: numeric value 1e700 unrepresentable

‎contrib/seg/segparse.y

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
%{
2-
#defineYYERROR_VERBOSE
32
#defineYYPARSE_PARAM result/* need this to pass a pointer (void *) to yyparse*/
43

5-
#include<string.h>
6-
#include<stdlib.h>
4+
#include"postgres.h"
5+
76
#include<errno.h>
87
#include<math.h>
8+
9+
#include"utils/elog.h"
10+
911
#include"segdata.h"
1012
#include"buffer.h"
1113

12-
#include"postgres.h"
13-
#include"utils/elog.h"
14-
1514
#ifdef __CYGWIN__
1615
#defineHUGE HUGE_VAL
1716
#endif/* __CYGWIN__*/
@@ -147,9 +146,9 @@ float seg_atof ( char *value ) {
147146
sscanf(value,"%f", &result);
148147

149148
if ( errno ) {
150-
sprintf(buf,"numeric value %s unrepresentable", value);
149+
snprintf(buf,256,"numeric value %s unrepresentable", value);
151150
reset_parse_buffer();
152-
elog(ERROR, buf);
151+
elog(ERROR,"%s",buf);
153152
}
154153

155154
return result;
@@ -168,8 +167,9 @@ int seg_yyerror ( char *msg ) {
168167

169168
position =parse_buffer_pos() >parse_buffer_size() ?parse_buffer_pos() -1 :parse_buffer_pos();
170169

171-
sprintf(
170+
snprintf(
172171
buf,
172+
256,
173173
"%s at or near position %d, character ('%c',\\%03o), input: '%s'\n",
174174
msg,
175175
position,
@@ -179,7 +179,7 @@ int seg_yyerror ( char *msg ) {
179179
);
180180

181181
reset_parse_buffer();
182-
elog(ERROR, buf);
182+
elog(ERROR,"%s",buf);
183183
return0;
184184
}
185185

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp