Re: misleading error message in ProcessUtilitySlow T_CreateStatsStmt

Álvaro Herrera <alvherre@kurilemu.de>

From: Álvaro Herrera <alvherre@kurilemu.de>
To: jian he <jian.universality@gmail.com>
Cc: Peter Eisentraut <peter@eisentraut.org>, Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Kirill Reshke <reshkekirill@gmail.com>
Date: 2025-11-13T08:24:52Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. CREATE STATISTICS: improve misleading error message

  2. Glossary: improve definition of "relation"

  3. Extended statistics on expressions

On 2025-Nov-13, jian he wrote:

> @@ -15658,10 +15658,19 @@ ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId, char *cmd,
>  			querytree_list = list_concat(querytree_list, afterStmts);
>  		}
>  		else if (IsA(stmt, CreateStatsStmt))
> +		{
> +			RangeTblEntry 	*rte;
> +			CreateStatsStmt *ss = castNode(CreateStatsStmt, stmt);
> +
> +			rte = makeNode(RangeTblEntry);
> +			rte->rtekind = RTE_RELATION;
> +			rte->relid = oldRelId;
> +			rte->rellockmode = ShareUpdateExclusiveLock;
> +			ss->rtable = list_make1(rte);
> +
>  			querytree_list = lappend(querytree_list,
> -									 transformStatsStmt(oldRelId,
> -														(CreateStatsStmt *) stmt,
> -														cmd));
> +									 transformStatsStmt(ss, cmd));
> +		}
>  		else
>  			querytree_list = lappend(querytree_list, stmt);
>  	}

Hmm, how would this part here work in the hypothetical world where a
stats object references multiple relations?

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
"No renuncies a nada. No te aferres a nada."