Replace run-time error check with assertion
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 27 May 2021 07:52:12 +0000 (09:52 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 27 May 2021 07:54:14 +0000 (09:54 +0200)
The error message was checking that the structures returned from the
parser matched expectations.  That's something we usually use
assertions for, not a full user-facing error message.  So replace that
with an assertion (hidden inside lfirst_node()).

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/452e9df8-ec89-e01b-b64a-8cc6ce830458%40enterprisedb.com

src/backend/commands/statscmds.c

index acae19176c01d5314604ee8459dcd50966e01d91..b244a0fbd7bde610ed12215d115641e77c9de4e3 100644 (file)
@@ -220,26 +220,14 @@ CreateStatistics(CreateStatsStmt *stmt)
     */
    foreach(cell, stmt->exprs)
    {
-       Node       *expr = (Node *) lfirst(cell);
-       StatsElem  *selem;
-       HeapTuple   atttuple;
-       Form_pg_attribute attForm;
-       TypeCacheEntry *type;
-
-       /*
-        * We should not get anything else than StatsElem, given the grammar.
-        * But let's keep it as a safety.
-        */
-       if (!IsA(expr, StatsElem))
-           ereport(ERROR,
-                   (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("only simple column references and expressions are allowed in CREATE STATISTICS")));
-
-       selem = (StatsElem *) expr;
+       StatsElem  *selem = lfirst_node(StatsElem, cell);
 
        if (selem->name)        /* column reference */
        {
            char       *attname;
+           HeapTuple   atttuple;
+           Form_pg_attribute attForm;
+           TypeCacheEntry *type;
 
            attname = selem->name;
 
@@ -273,6 +261,7 @@ CreateStatistics(CreateStatsStmt *stmt)
        {
            Node       *expr = selem->expr;
            Oid         atttype;
+           TypeCacheEntry *type;
 
            Assert(expr != NULL);