Hi all,

$subject has been raised in a recent thread here:
https://www.postgresql.org/message-id/CAB7nPqTmym5t-X6hvMF_P-KRc=ndXtbQCTiU=nhs_jvl7x1...@mail.gmail.com

The idea is to make the replication protocol a bit more flexible, in a
way similar to what 5c837dd has done, but for repl_scanner.l. This
will also allow to avoid any problems like what has been fixed in
aa41bc7 where the SHOW commands used in libpq have to be capitalized.
Personally, I have pested about the lack of flexibility a couple of
times when running tests using psql..

I am parking that in the next CF.
Thanks,
-- 
Michael
diff --git a/src/backend/replication/repl_scanner.l b/src/backend/replication/repl_scanner.l
index 52ae7b343f..2bceff0b55 100644
--- a/src/backend/replication/repl_scanner.l
+++ b/src/backend/replication/repl_scanner.l
@@ -80,29 +80,31 @@ identifier		{ident_start}{ident_cont}*
 
 %%
 
-BASE_BACKUP			{ return K_BASE_BACKUP; }
-FAST			{ return K_FAST; }
-IDENTIFY_SYSTEM		{ return K_IDENTIFY_SYSTEM; }
-SHOW		{ return K_SHOW; }
-LABEL			{ return K_LABEL; }
-NOWAIT			{ return K_NOWAIT; }
-PROGRESS			{ return K_PROGRESS; }
-MAX_RATE		{ return K_MAX_RATE; }
-WAL			{ return K_WAL; }
-TABLESPACE_MAP			{ return K_TABLESPACE_MAP; }
-TIMELINE			{ return K_TIMELINE; }
-START_REPLICATION	{ return K_START_REPLICATION; }
-CREATE_REPLICATION_SLOT		{ return K_CREATE_REPLICATION_SLOT; }
-DROP_REPLICATION_SLOT		{ return K_DROP_REPLICATION_SLOT; }
-TIMELINE_HISTORY	{ return K_TIMELINE_HISTORY; }
-PHYSICAL			{ return K_PHYSICAL; }
-RESERVE_WAL			{ return K_RESERVE_WAL; }
-LOGICAL				{ return K_LOGICAL; }
-SLOT				{ return K_SLOT; }
-TEMPORARY			{ return K_TEMPORARY; }
-EXPORT_SNAPSHOT		{ return K_EXPORT_SNAPSHOT; }
-NOEXPORT_SNAPSHOT	{ return K_NOEXPORT_SNAPSHOT; }
-USE_SNAPSHOT		{ return K_USE_SNAPSHOT; }
+	/* brute-force case insensitivity is safer than relying on flex -i */
+
+[Bb][Aa][Ss][Ee]_[Bb][Aa][Cc][Kk][Uu][Pp]	{ return K_BASE_BACKUP; }
+[Ff][Aa][Ss][Tt]	{ return K_FAST; }
+[Ii][Dd][Ee][Nn][Tt][Ii][Ff][Yy]_[Ss][Yy][Ss][Tt][Ee][Mm]	{ return K_IDENTIFY_SYSTEM; }
+[Ss][Hh][Oo][Ww]	{ return K_SHOW; }
+[Ll][Aa][Bb][Ee][Ll]	{ return K_LABEL; }
+[Nn][Oo][Ww][Aa][Ii][Tt]	{ return K_NOWAIT; }
+[Pp][Rr][Oo][Gg][Rr][Ee][Ss][Ss]	{ return K_PROGRESS; }
+[Mm][Aa][Xx]_[Rr][Aa][Tt][Ee]		{ return K_MAX_RATE; }
+[Ww][Aa][Ll]		{ return K_WAL; }
+[Tt][Aa][Bb][Ll][Ee][Ss][Pp][Aa][Cc][Ee]_[Mm][Aa][Pp]	{ return K_TABLESPACE_MAP; }
+[Tt][Ii][Mm][Ee][Ll][Ii][Nn][Ee]	{ return K_TIMELINE; }
+[Ss][Tt][Aa][Rr][Tt]_[Rr][Ee][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn]	{ return K_START_REPLICATION; }
+[Cc][Rr][Ee][Aa][Tt][Ee]_[Rr][Ee][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn]_[Ss][Ll][Oo][Tt]	{ return K_CREATE_REPLICATION_SLOT; }
+[Dd][Rr][Oo][Pp]_[Rr][Ee][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn]_[Ss][Ll][Oo][Tt]	{ return K_DROP_REPLICATION_SLOT; }
+[Tt][Ii][Mm][Ee][Ll][Ii][Nn][Ee]_[Hh][Ii][Ss][Tt][Oo][Rr][Yy]	{ return K_TIMELINE_HISTORY; }
+[Pp][Hh][Yy][Ss][Ii][Cc][Aa][Ll]	{ return K_PHYSICAL; }
+[Rr][Ee][Ss][Ee][Rr][Vv][Ee]_[Ww][Aa][Ll]	{ return K_RESERVE_WAL; }
+[Ll][Oo][Gg][Ii][Cc][Aa][Ll]	{ return K_LOGICAL; }
+[Ss][Ll][Oo][Tt]	{ return K_SLOT; }
+[Tt][Ee][Mm][Pp][Oo][Rr][Aa][Rr][Yy]	{ return K_TEMPORARY; }
+[Ee][Xx][Pp][Oo][Rr][Tt]_[Ss][Nn][Aa][Pp][Ss][Hh][Oo][Tt]	{ return K_EXPORT_SNAPSHOT; }
+[Nn][Oo][Ee][Xx][Pp][Oo][Rr][Tt]_[Ss][Nn][Aa][Pp][Ss][Hh][Oo][Tt]	{ return K_NOEXPORT_SNAPSHOT; }
+[Uu][Ss][Ee]_[Ss][Nn][Aa][Pp][Ss][Hh][Oo][Tt]	{ return K_USE_SNAPSHOT; }
 
 ","				{ return ','; }
 ";"				{ return ';'; }
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to