diff options
Diffstat (limited to 'src/backend/replication/repl_scanner.l')
| -rw-r--r-- | src/backend/replication/repl_scanner.l | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/backend/replication/repl_scanner.l b/src/backend/replication/repl_scanner.l index 586f0d3a5c..23fcb2a11d 100644 --- a/src/backend/replication/repl_scanner.l +++ b/src/backend/replication/repl_scanner.l @@ -1,4 +1,4 @@ -%{ +%top{ /*------------------------------------------------------------------------- * * repl_scanner.l @@ -18,6 +18,15 @@ #include "utils/builtins.h" #include "parser/scansup.h" +/* + * NB: include repl_gram.h only AFTER including walsender_private.h, because + * walsender_private includes headers that define XLogRecPtr. + */ +#include "replication/walsender_private.h" +#include "repl_gram.h" +} + +%{ /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ #undef fprintf #define fprintf(file, fmt, msg) fprintf_to_ereport(fmt, msg) @@ -130,7 +139,7 @@ WAIT { return K_WAIT; } {space}+ { /* do nothing */ } {digit}+ { - yylval.uintval = strtoul(yytext, NULL, 10); + replication_yylval.uintval = strtoul(yytext, NULL, 10); return UCONST; } @@ -138,8 +147,8 @@ WAIT { return K_WAIT; } uint32 hi, lo; if (sscanf(yytext, "%X/%X", &hi, &lo) != 2) - yyerror("invalid streaming start location"); - yylval.recptr = ((uint64) hi) << 32 | lo; + replication_yyerror("invalid streaming start location"); + replication_yylval.recptr = ((uint64) hi) << 32 | lo; return RECPTR; } @@ -151,7 +160,7 @@ WAIT { return K_WAIT; } <xq>{quotestop} { yyless(1); BEGIN(INITIAL); - yylval.str = litbufdup(); + replication_yylval.str = litbufdup(); return SCONST; } @@ -173,9 +182,9 @@ WAIT { return K_WAIT; } yyless(1); BEGIN(INITIAL); - yylval.str = litbufdup(); - len = strlen(yylval.str); - truncate_identifier(yylval.str, len, true); + replication_yylval.str = litbufdup(); + len = strlen(replication_yylval.str); + truncate_identifier(replication_yylval.str, len, true); return IDENT; } @@ -186,7 +195,7 @@ WAIT { return K_WAIT; } {identifier} { int len = strlen(yytext); - yylval.str = downcase_truncate_identifier(yytext, len, true); + replication_yylval.str = downcase_truncate_identifier(yytext, len, true); return IDENT; } @@ -195,7 +204,7 @@ WAIT { return K_WAIT; } return yytext[0]; } -<xq,xd><<EOF>> { yyerror("unterminated quoted string"); } +<xq,xd><<EOF>> { replication_yyerror("unterminated quoted string"); } <<EOF>> { @@ -231,7 +240,7 @@ addlitchar(unsigned char ychar) } void -yyerror(const char *message) +replication_yyerror(const char *message) { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), |
