From 5666462f2e60ffc5c7cf4670381313687625bae4 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 29 May 2003 22:30:02 +0000 Subject: [PATCH] Ensure that in all flex lexers that are part of the backend, a yy_fatal_error() call results in elog(ERROR) not exit(). This was already fixed in the main lexer and plpgsql, but extend same technique to all the other dot-l files. Also, on review of the possible calls to yy_fatal_error(), it seems safe to use elog(ERROR) not elog(FATAL). --- contrib/cube/cubescan.l | 4 +++- contrib/seg/segscan.l | 3 +++ contrib/tsearch/parser.l | 3 +++ src/backend/bootstrap/bootscanner.l | 8 ++++++-- src/backend/parser/scan.l | 4 ++-- src/backend/utils/misc/guc-file.l | 5 ++++- src/pl/plpgsql/src/scan.l | 4 ++-- 7 files changed, 23 insertions(+), 8 deletions(-) diff --git a/contrib/cube/cubescan.l b/contrib/cube/cubescan.l index 8367477adb..1b44397f46 100644 --- a/contrib/cube/cubescan.l +++ b/contrib/cube/cubescan.l @@ -7,6 +7,9 @@ #include "buffer.h" +/* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ +#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) + /* flex screws a couple symbols when used with the -P option; fix those */ #define YY_DECL int cube_yylex YY_PROTO(( void )); \ @@ -52,6 +55,5 @@ float ({integer}|{real})([eE]{integer})? int cube_yylex(); void cube_flush_scanner_buffer(void) { - fprintf(stderr, "cube_flush_scanner_buffer called\n"); YY_FLUSH_BUFFER; } diff --git a/contrib/seg/segscan.l b/contrib/seg/segscan.l index c0962eca8c..190174d742 100644 --- a/contrib/seg/segscan.l +++ b/contrib/seg/segscan.l @@ -7,6 +7,9 @@ #include "buffer.h" +/* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ +#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) + /* flex screws a couple symbols when used with the -P option; fix those */ #define YY_DECL int seg_yylex YY_PROTO(( void )); \ diff --git a/contrib/tsearch/parser.l b/contrib/tsearch/parser.l index fb34aac713..4323bda7ef 100644 --- a/contrib/tsearch/parser.l +++ b/contrib/tsearch/parser.l @@ -4,6 +4,9 @@ #include "deflex.h" #include "parser.h" +/* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ +#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) + /* postgres allocation function */ #define free pfree #define malloc palloc diff --git a/src/backend/bootstrap/bootscanner.l b/src/backend/bootstrap/bootscanner.l index f0c1027c88..fbb104c18a 100644 --- a/src/backend/bootstrap/bootscanner.l +++ b/src/backend/bootstrap/bootscanner.l @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootscanner.l,v 1.27 2002/11/04 14:22:32 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootscanner.l,v 1.28 2003/05/29 22:30:01 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -44,7 +44,11 @@ /* #include "bootstrap_tokens.h" */ -int yyline; /* keep track of the line number for error reporting */ +/* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ +#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) + + +static int yyline; /* keep track of the line number for error reporting */ %} diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 6cb5972b2f..083c19e650 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.106 2003/05/29 20:40:36 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.107 2003/05/29 22:30:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -33,7 +33,7 @@ #define YY_READ_BUF_SIZE 16777216 /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ -#define fprintf(file, fmt, msg) ereport(FATAL, (errmsg_internal("%s", msg))) +#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) extern YYSTYPE yylval; diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l index 3c4601c0fc..778f003e4d 100644 --- a/src/backend/utils/misc/guc-file.l +++ b/src/backend/utils/misc/guc-file.l @@ -4,7 +4,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc-file.l,v 1.15 2003/05/27 17:49:46 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc-file.l,v 1.16 2003/05/29 22:30:02 tgl Exp $ */ %{ @@ -21,6 +21,9 @@ #include "utils/elog.h" #include "utils/guc.h" +/* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ +#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) + #define CONFIG_FILENAME "postgresql.conf" static unsigned ConfigFileLineno; diff --git a/src/pl/plpgsql/src/scan.l b/src/pl/plpgsql/src/scan.l index 5f7e162f08..e6614bf810 100644 --- a/src/pl/plpgsql/src/scan.l +++ b/src/pl/plpgsql/src/scan.l @@ -4,7 +4,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.25 2003/05/05 16:46:28 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.26 2003/05/29 22:30:02 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -43,7 +43,7 @@ #define YY_READ_BUF_SIZE 16777216 /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ -#define fprintf(file, fmt, msg) ereport(FATAL, (errmsg_internal("%s", msg))) +#define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) /* Handles to the buffer that the lexer uses internally */ static YY_BUFFER_STATE scanbufhandle;