Currently, load_hba() bails on the first parsing error. It would be better for the typo-prone sysadmin if it reported ALL errors, and THEN bailed out.

This patch implements that behavior.  Tested against 8.4 HEAD this morning.

Idea is to do a similar thing for postgresql.conf. That is a little more complicated and will be a separate patch.

-selena


--
Selena Deckelmann
End Point Corporation
sel...@endpoint.com
503-282-2512
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 6923d06..c6a7ba7 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -1304,6 +1304,7 @@ load_hba(void)
        List *hba_line_nums = NIL;
        ListCell   *line, *line_num;
        List *new_parsed_lines = NIL;
+       bool OK = true;
 
        file = AllocateFile(HbaFileName, "r");
        if (file == NULL)
@@ -1332,17 +1333,22 @@ load_hba(void)
 
                if (!parse_hba_line(lfirst(line), lfirst_int(line_num), 
newline))
                {
-                       /* Parse error in the file, so bail out */
+                       /* Parse error in the file, so indicate there's a 
problem */
                        free_hba_record(newline);
                        pfree(newline);
                        clean_hba_list(new_parsed_lines);
                        /* Error has already been reported in the parsing 
function */
-                       return false;
+                       OK = false;
+                       continue;
                }
 
                new_parsed_lines = lappend(new_parsed_lines, newline);
        }
 
+       if (!OK)
+               /* Parsing failed, so bail out */
+               return false;
+
        /* Loaded new file successfully, replace the one we use */
        clean_hba_list(parsed_hba_lines);
        parsed_hba_lines = new_parsed_lines;
-- 
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