I misplaced the IF NOT EXISTS clause in commit 
7b504eb282, before the
word STATISTICS.  Put it where it belongs.
Patch written independently by Amit Langote and myself.  I adopted his
submitted test case with a slight edit also.
Reported-by: Bruno Wolff III
Discussion: https://postgr.es/m/
20170621004237.GB8337@wolff.to
 /*****************************************************************************
  *
  *             QUERY :
- *                             CREATE STATISTICS stats_name [(stat types)]
+ *                             CREATE STATISTICS [IF NOT EXISTS] stats_name [(stat types)]
  *                                     ON expression-list FROM from_list
  *
  * Note: the expectation here is that the clauses after ON are a subset of
  *****************************************************************************/
 
 CreateStatsStmt:
-                       CREATE opt_if_not_exists STATISTICS any_name
+                       CREATE STATISTICS any_name
                        opt_name_list ON expr_list FROM from_list
                                {
                                        CreateStatsStmt *n = makeNode(CreateStatsStmt);
-                                       n->defnames = $4;
-                                       n->stat_types = $5;
-                                       n->exprs = $7;
-                                       n->relations = $9;
-                                       n->if_not_exists = $2;
+                                       n->defnames = $3;
+                                       n->stat_types = $4;
+                                       n->exprs = $6;
+                                       n->relations = $8;
+                                       n->if_not_exists = false;
+                                       $$ = (Node *)n;
+                               }
+                       | CREATE STATISTICS IF_P NOT EXISTS any_name
+                       opt_name_list ON expr_list FROM from_list
+                               {
+                                       CreateStatsStmt *n = makeNode(CreateStatsStmt);
+                                       n->defnames = $6;
+                                       n->stat_types = $7;
+                                       n->exprs = $9;
+                                       n->relations = $11;
+                                       n->if_not_exists = true;
                                        $$ = (Node *)n;
                                }
                        ;
 
 ERROR:  only simple column references are allowed in CREATE STATISTICS
 CREATE STATISTICS tst (unrecognized) ON relname, relnatts FROM pg_class;
 ERROR:  unrecognized statistic type "unrecognized"
--- Ensure stats are dropped sanely
+-- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it
 CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER);
-CREATE STATISTICS ab1_a_b_stats ON a, b FROM ab1;
+CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
+CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
+NOTICE:  statistics object "ab1_a_b_stats" already exists, skipping
 DROP STATISTICS ab1_a_b_stats;
 CREATE SCHEMA regress_schema_2;
 CREATE STATISTICS regress_schema_2.ab1_a_b_stats ON a, b FROM ab1;
 
 CREATE STATISTICS tst ON (relpages, reltuples) FROM pg_class;
 CREATE STATISTICS tst (unrecognized) ON relname, relnatts FROM pg_class;
 
--- Ensure stats are dropped sanely
+-- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it
 CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER);
-CREATE STATISTICS ab1_a_b_stats ON a, b FROM ab1;
+CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
+CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
 DROP STATISTICS ab1_a_b_stats;
 
 CREATE SCHEMA regress_schema_2;