aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2012-12-14 18:03:07 -0500
committerAndrew Dunstan <andrew@dunslane.net>2012-12-14 18:03:07 -0500
commit1c382655ad90b7cd224230452f7056040337facf (patch)
tree378e1dd57280308b4267f7f7c55677b233be3fd8
parent75758a6ff01156e163779f5f7386fa36720fb38f (diff)
downloadpostgresql-1c382655ad90b7cd224230452f7056040337facf.tar.gz
postgresql-1c382655ad90b7cd224230452f7056040337facf.zip
Provide Assert() for frontend code.
Per discussion on-hackers. psql is converted to use the new code. Follows a suggestion from Heikki Linnakangas.
-rw-r--r--src/bin/psql/command.c6
-rw-r--r--src/bin/psql/common.c2
-rw-r--r--src/bin/psql/common.h7
-rw-r--r--src/bin/psql/psqlscan.l14
-rw-r--r--src/bin/psql/stringutils.c8
-rw-r--r--src/bin/psql/tab-complete.c6
-rw-r--r--src/include/postgres_fe.h12
7 files changed, 30 insertions, 25 deletions
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 8ccd00d75f7..e60578501a5 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -99,7 +99,7 @@ HandleSlashCmds(PsqlScanState scan_state,
char *cmd;
char *arg;
- psql_assert(scan_state);
+ Assert(scan_state != NULL);
/* Parse off the command name */
cmd = psql_scan_slash_command(scan_state);
@@ -1819,7 +1819,7 @@ editFile(const char *fname, int lineno)
char *sys;
int result;
- psql_assert(fname);
+ Assert(fname != NULL);
/* Find an editor to use */
editorName = getenv("PSQL_EDITOR");
@@ -2177,7 +2177,7 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
{
size_t vallen = 0;
- psql_assert(param);
+ Assert(param != NULL);
if (value)
vallen = strlen(value);
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index 179c1622793..c2a2ab6f849 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -1160,7 +1160,7 @@ ExecQueryUsingCursor(const char *query, double *elapsed_msec)
}
OK = AcceptResult(results);
- psql_assert(!OK);
+ Assert(!OK);
PQclear(results);
break;
}
diff --git a/src/bin/psql/common.h b/src/bin/psql/common.h
index f54baab841d..7f342901ad1 100644
--- a/src/bin/psql/common.h
+++ b/src/bin/psql/common.h
@@ -12,13 +12,6 @@
#include <setjmp.h>
#include "libpq-fe.h"
-#ifdef USE_ASSERT_CHECKING
-#include <assert.h>
-#define psql_assert(p) assert(p)
-#else
-#define psql_assert(p)
-#endif
-
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
/*
diff --git a/src/bin/psql/psqlscan.l b/src/bin/psql/psqlscan.l
index 6c1429815f2..f8822cc17f9 100644
--- a/src/bin/psql/psqlscan.l
+++ b/src/bin/psql/psqlscan.l
@@ -1184,8 +1184,8 @@ psql_scan_setup(PsqlScanState state,
const char *line, int line_len)
{
/* Mustn't be scanning already */
- psql_assert(state->scanbufhandle == NULL);
- psql_assert(state->buffer_stack == NULL);
+ Assert(state->scanbufhandle == NULL);
+ Assert(state->buffer_stack == NULL);
/* Do we need to hack the character set encoding? */
state->encoding = pset.encoding;
@@ -1245,7 +1245,7 @@ psql_scan(PsqlScanState state,
int lexresult;
/* Must be scanning already */
- psql_assert(state->scanbufhandle);
+ Assert(state->scanbufhandle != NULL);
/* Set up static variables that will be used by yylex */
cur_state = state;
@@ -1424,7 +1424,7 @@ psql_scan_slash_command(PsqlScanState state)
PQExpBufferData mybuf;
/* Must be scanning already */
- psql_assert(state->scanbufhandle);
+ Assert(state->scanbufhandle != NULL);
/* Build a local buffer that we'll return the data of */
initPQExpBuffer(&mybuf);
@@ -1478,7 +1478,7 @@ psql_scan_slash_option(PsqlScanState state,
char local_quote;
/* Must be scanning already */
- psql_assert(state->scanbufhandle);
+ Assert(state->scanbufhandle != NULL);
if (quote == NULL)
quote = &local_quote;
@@ -1512,7 +1512,7 @@ psql_scan_slash_option(PsqlScanState state,
* or LEXRES_EOL (the latter indicating end of string). If we were inside
* a quoted string, as indicated by YY_START, EOL is an error.
*/
- psql_assert(lexresult == LEXRES_EOL || lexresult == LEXRES_OK);
+ Assert(lexresult == LEXRES_EOL || lexresult == LEXRES_OK);
switch (YY_START)
{
@@ -1608,7 +1608,7 @@ void
psql_scan_slash_command_end(PsqlScanState state)
{
/* Must be scanning already */
- psql_assert(state->scanbufhandle);
+ Assert(state->scanbufhandle != NULL);
/* Set up static variables that will be used by yylex */
cur_state = state;
diff --git a/src/bin/psql/stringutils.c b/src/bin/psql/stringutils.c
index b557c5a6bac..f0bed2bc003 100644
--- a/src/bin/psql/stringutils.c
+++ b/src/bin/psql/stringutils.c
@@ -245,8 +245,8 @@ strip_quotes(char *source, char quote, char escape, int encoding)
char *src;
char *dst;
- psql_assert(source);
- psql_assert(quote);
+ Assert(source != NULL);
+ Assert(quote != '\0');
src = dst = source;
@@ -299,8 +299,8 @@ quote_if_needed(const char *source, const char *entails_quote,
char *dst;
bool need_quotes = false;
- psql_assert(source);
- psql_assert(quote);
+ Assert(source != NULL);
+ Assert(quote != '\0');
src = source;
dst = ret = pg_malloc(2 * strlen(src) + 3); /* excess */
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 18a2595a3e0..86d0f2e365c 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3558,7 +3558,7 @@ complete_from_list(const char *text, int state)
const char *item;
/* need to have a list */
- psql_assert(completion_charpp);
+ Assert(completion_charpp != NULL);
/* Initialization */
if (state == 0)
@@ -3620,7 +3620,7 @@ complete_from_list(const char *text, int state)
static char *
complete_from_const(const char *text, int state)
{
- psql_assert(completion_charp);
+ Assert(completion_charp != NULL);
if (state == 0)
{
if (completion_case_sensitive)
@@ -3708,7 +3708,7 @@ complete_from_files(const char *text, int state)
/* expect a NULL return for the empty string only */
if (!unquoted_text)
{
- psql_assert(!*text);
+ Assert(*text == '\0');
unquoted_text = text;
}
}
diff --git a/src/include/postgres_fe.h b/src/include/postgres_fe.h
index fcfbd31d35c..8fd580fbf75 100644
--- a/src/include/postgres_fe.h
+++ b/src/include/postgres_fe.h
@@ -24,4 +24,16 @@
#include "c.h"
+/*
+ * Assert() can be used in both frontend and backend code. In frontend code it
+ * just calls the standard assert, if it's available. If use of assertions is
+ * not configured, it does nothing.
+ */
+#ifdef USE_ASSERT_CHECKING
+#include <assert.h>
+#define Assert(p) assert(p)
+#else
+#define Assert(p)
+#endif
+
#endif /* POSTGRES_FE_H */