v201-0004-Build-syncrep_scanner.c-standalone.patch

text/x-patch

Filename: v201-0004-Build-syncrep_scanner.c-standalone.patch
Type: text/x-patch
Part: 3
Message: Re: build remaining Flex files standalone

Patch

Format: format-patch
Series: patch v201-0004
Subject: Build syncrep_scanner.c standalone
File+
src/backend/replication/.gitignore 1 0
src/backend/replication/Makefile 9 2
src/backend/replication/syncrep_gram.y 0 2
src/backend/replication/syncrep_scanner.l 11 6
From 92d48ac8354bce8bb57a43e01448835e1cd75871 Mon Sep 17 00:00:00 2001
From: John Naylor <john.naylor@postgresql.org>
Date: Fri, 12 Aug 2022 18:27:39 +0700
Subject: [PATCH v201 4/9] Build syncrep_scanner.c standalone

---
 src/backend/replication/.gitignore        |  1 +
 src/backend/replication/Makefile          | 11 +++++++++--
 src/backend/replication/syncrep_gram.y    |  2 --
 src/backend/replication/syncrep_scanner.l | 17 +++++++++++------
 4 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/src/backend/replication/.gitignore b/src/backend/replication/.gitignore
index d1df6147bd..ad138c0c98 100644
--- a/src/backend/replication/.gitignore
+++ b/src/backend/replication/.gitignore
@@ -1,4 +1,5 @@
 /repl_gram.c
 /repl_scanner.c
+/syncrep_gram.h
 /syncrep_gram.c
 /syncrep_scanner.c
diff --git a/src/backend/replication/Makefile b/src/backend/replication/Makefile
index bc8170418f..23f29ba545 100644
--- a/src/backend/replication/Makefile
+++ b/src/backend/replication/Makefile
@@ -21,6 +21,7 @@ OBJS = \
 	slotfuncs.o \
 	syncrep.o \
 	syncrep_gram.o \
+	syncrep_scanner.o \
 	walreceiver.o \
 	walreceiverfuncs.o \
 	walsender.o
@@ -38,8 +39,14 @@ repl_gram.c: BISONFLAGS += -d
 # Force these dependencies to be known even without dependency info built:
 repl_gram.o repl_scanner.o: repl_gram.h
 
-# syncrep_scanner is compiled as part of syncrep_gram
-syncrep_gram.o: syncrep_scanner.c
+# See notes in src/backend/parser/Makefile about the following two rules
+syncrep_gram.h: syncrep_gram.c
+	touch $@
+
+syncrep_gram.c: BISONFLAGS += -d
+
+# Force these dependencies to be known even without dependency info built:
+syncrep_gram.o syncrep_scanner.o: syncrep_gram.h
 
 # repl_gram.c, repl_scanner.c, syncrep_gram.c and syncrep_scanner.c
 # are in the distribution tarball, so they are not cleaned here.
diff --git a/src/backend/replication/syncrep_gram.y b/src/backend/replication/syncrep_gram.y
index d932f2cda3..4fc3647da1 100644
--- a/src/backend/replication/syncrep_gram.y
+++ b/src/backend/replication/syncrep_gram.y
@@ -112,5 +112,3 @@ create_syncrep_config(const char *num_sync, List *members, uint8 syncrep_method)
 
 	return config;
 }
-
-#include "syncrep_scanner.c"
diff --git a/src/backend/replication/syncrep_scanner.l b/src/backend/replication/syncrep_scanner.l
index 1952c8c6e0..8f38cb4613 100644
--- a/src/backend/replication/syncrep_scanner.l
+++ b/src/backend/replication/syncrep_scanner.l
@@ -1,4 +1,4 @@
-%{
+%top{
 /*-------------------------------------------------------------------------
  *
  * syncrep_scanner.l
@@ -16,7 +16,12 @@
 #include "postgres.h"
 
 #include "lib/stringinfo.h"
+#include "replication/syncrep.h"
+
+#include "syncrep_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)
@@ -82,28 +87,28 @@ xdinside		[^"]+
 				appendStringInfoString(&xdbuf, yytext);
 		}
 <xd>{xdstop} {
-				yylval.str = xdbuf.data;
+				syncrep_yylval.str = xdbuf.data;
 				xdbuf.data = NULL;
 				BEGIN(INITIAL);
 				return NAME;
 		}
 <xd><<EOF>> {
-				yyerror("unterminated quoted identifier");
+				syncrep_yyerror("unterminated quoted identifier");
 				return JUNK;
 		}
 
 {identifier} {
-				yylval.str = pstrdup(yytext);
+				syncrep_yylval.str = pstrdup(yytext);
 				return NAME;
 		}
 
 {digit}+	{
-				yylval.str = pstrdup(yytext);
+				syncrep_yylval.str = pstrdup(yytext);
 				return NUM;
 		}
 
 "*"		{
-				yylval.str = "*";
+				syncrep_yylval.str = "*";
 				return NAME;
 		}
 
-- 
2.36.1