]> granicus.if.org Git - postgresql/commitdiff
Provide Assert() for frontend code.
authorAndrew Dunstan <andrew@dunslane.net>
Fri, 14 Dec 2012 23:03:07 +0000 (18:03 -0500)
committerAndrew Dunstan <andrew@dunslane.net>
Fri, 14 Dec 2012 23:03:07 +0000 (18:03 -0500)
Per discussion on-hackers. psql is converted to use the new code.

Follows a suggestion from Heikki Linnakangas.

src/bin/psql/command.c
src/bin/psql/common.c
src/bin/psql/common.h
src/bin/psql/psqlscan.l
src/bin/psql/stringutils.c
src/bin/psql/tab-complete.c
src/include/postgres_fe.h

index 8ccd00d75f7b0b54536ad127dc489fe107cedc91..e60578501a5d7a123ca918b29045ebebf05eeede 100644 (file)
@@ -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);
index 179c1622793ea89449a5d87ffe4cb361d53d1433..c2a2ab6f8498ba8b89b544f834e27dd0f600ce84 100644 (file)
@@ -1160,7 +1160,7 @@ ExecQueryUsingCursor(const char *query, double *elapsed_msec)
                        }
 
                        OK = AcceptResult(results);
-                       psql_assert(!OK);
+                       Assert(!OK);
                        PQclear(results);
                        break;
                }
index f54baab841d30a8c6951a9ada4ddb888adf06e48..7f342901ad15fb02afd276d703b901dc5361b4df 100644 (file)
 #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))
 
 /*
index 6c1429815f2eec597f735d18ea86d9c8c9f1f3a2..f8822cc17f98f6507f1c34b2c67852aeb9f3970e 100644 (file)
@@ -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;
index b557c5a6bacb96504f053fed5a88eedb140418b4..f0bed2bc00348e45e1df50ec155b8bd70cfef052 100644 (file)
@@ -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 */
index 18a2595a3e013bf44291f01d00892642dd2a708f..86d0f2e365ced44cea77fb04fa65c78c19fb5543 100644 (file)
@@ -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;
                }
        }
index fcfbd31d35c93c17f2644c1de6fa8b322b8f53d0..8fd580fbf75f1d3953998ac77c3ab91da24d147a 100644 (file)
 
 #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 */