summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2012-03-31 17:15:53 +0000
committerTom Lane2012-03-31 17:15:53 +0000
commitc252a17d828756e2f7d635f69eace53aaf983420 (patch)
treeeb6433c27f9fff6c4aafbba6d5cb968444e46914
parenta52e6fe7bcf86f7e52d7b1d6f59260cb57b565fa (diff)
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.)
-rw-r--r--src/bin/pg_dump/dumputils.c8
-rw-r--r--src/bin/pg_dump/keywords.c4
-rw-r--r--src/interfaces/ecpg/preproc/ecpg_keywords.c10
-rw-r--r--src/interfaces/ecpg/preproc/keywords.c4
4 files changed, 17 insertions, 9 deletions
diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c
index 8f702594157..9b306295150 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 7294a55f80f..44e4c55c697 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 8032c30c405..fb54d7b5c6d 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 b6dcfe27746..71f60c5062e 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);