From c252a17d828756e2f7d635f69eace53aaf983420 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 31 Mar 2012 13:15:53 -0400 Subject: [PATCH] Rename frontend keyword arrays to avoid conflict with backend. ecpg and pg_dump each contain keyword arrays with structure similar to the backend's keyword array. Up to now, we actually named those arrays the same as the backend's and relied on parser/keywords.h to declare them. This seems a tad too cute, though, and it breaks now that we need to PGDLLIMPORT-decorate the backend symbols. Rename to avoid the problem. Per buildfarm. (It strikes me that maybe we should get rid of the separate keywords.c files altogether, and just define these arrays in the modules that use them, but that's a rather more invasive change.) --- src/bin/pg_dump/dumputils.c | 8 ++++++-- src/bin/pg_dump/keywords.c | 4 ++-- src/interfaces/ecpg/preproc/ecpg_keywords.c | 10 +++++++--- src/interfaces/ecpg/preproc/keywords.c | 4 ++-- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c index 8f70259415..9b30629515 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -22,6 +22,10 @@ #include "parser/keywords.h" +/* Globals from keywords.c */ +extern const ScanKeyword FEScanKeywords[]; +extern const int NumFEScanKeywords; + /* Globals exported by this file */ int quote_all_identifiers = 0; const char *progname = NULL; @@ -150,8 +154,8 @@ fmtId(const char *rawid) * that's fine, since we already know we have all-lower-case. */ const ScanKeyword *keyword = ScanKeywordLookup(rawid, - ScanKeywords, - NumScanKeywords); + FEScanKeywords, + NumFEScanKeywords); if (keyword != NULL && keyword->category != UNRESERVED_KEYWORD) need_quotes = true; diff --git a/src/bin/pg_dump/keywords.c b/src/bin/pg_dump/keywords.c index 7294a55f80..44e4c55c69 100644 --- a/src/bin/pg_dump/keywords.c +++ b/src/bin/pg_dump/keywords.c @@ -23,8 +23,8 @@ */ #define PG_KEYWORD(a,b,c) {a,0,c}, -const ScanKeyword ScanKeywords[] = { +const ScanKeyword FEScanKeywords[] = { #include "parser/kwlist.h" }; -const int NumScanKeywords = lengthof(ScanKeywords); +const int NumFEScanKeywords = lengthof(FEScanKeywords); diff --git a/src/interfaces/ecpg/preproc/ecpg_keywords.c b/src/interfaces/ecpg/preproc/ecpg_keywords.c index 8032c30c40..fb54d7b5c6 100644 --- a/src/interfaces/ecpg/preproc/ecpg_keywords.c +++ b/src/interfaces/ecpg/preproc/ecpg_keywords.c @@ -16,13 +16,17 @@ #include "extern.h" #include "preproc.h" +/* Globals from keywords.c */ +extern const ScanKeyword SQLScanKeywords[]; +extern const int NumSQLScanKeywords; + /* * List of (keyword-name, keyword-token-value) pairs. * * !!WARNING!!: This list must be sorted, because binary * search is used to locate entries. */ -static const ScanKeyword ScanECPGKeywords[] = { +static const ScanKeyword ECPGScanKeywords[] = { /* name, value, category */ /* @@ -87,12 +91,12 @@ ScanECPGKeywordLookup(const char *text) const ScanKeyword *res; /* First check SQL symbols defined by the backend. */ - res = ScanKeywordLookup(text, ScanKeywords, NumScanKeywords); + res = ScanKeywordLookup(text, SQLScanKeywords, NumSQLScanKeywords); if (res) return res; /* Try ECPG-specific keywords. */ - res = ScanKeywordLookup(text, ScanECPGKeywords, lengthof(ScanECPGKeywords)); + res = ScanKeywordLookup(text, ECPGScanKeywords, lengthof(ECPGScanKeywords)); if (res) return res; diff --git a/src/interfaces/ecpg/preproc/keywords.c b/src/interfaces/ecpg/preproc/keywords.c index b6dcfe2774..71f60c5062 100644 --- a/src/interfaces/ecpg/preproc/keywords.c +++ b/src/interfaces/ecpg/preproc/keywords.c @@ -22,8 +22,8 @@ #define PG_KEYWORD(a,b,c) {a,b,c}, -const ScanKeyword ScanKeywords[] = { +const ScanKeyword SQLScanKeywords[] = { #include "parser/kwlist.h" }; -const int NumScanKeywords = lengthof(ScanKeywords); +const int NumSQLScanKeywords = lengthof(SQLScanKeywords); -- 2.40.0