Re: Re: proposal: schema variables

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: jian he <jian.universality@gmail.com>
Cc: Dmitry Dolgov <9erthalion6@gmail.com>, Laurenz Albe <laurenz.albe@cybertec.at>, Erik Rijkers <er@xs4all.nl>, Michael Paquier <michael@paquier.xyz>, Amit Kapila <amit.kapila16@gmail.com>, DUVAL REMI <REMI.DUVAL@cheops.fr>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-12-29T08:42:11Z
Lists: pgsql-hackers, pgsql-performance

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Move WAL sequence code into its own file

  2. Add ExplainState argument to pg_plan_query() and planner().

  3. Don't include access/htup_details.h in executor/tuptable.h

  4. Refactor to avoid code duplication in transformPLAssignStmt.

  5. Avoid including commands/dbcommands.h in so many places

  6. Restrict psql meta-commands in plain-text dumps.

  7. Split func.sgml into more manageable pieces

  8. Fix squashing algorithm for query texts

  9. EXPLAIN: Always use two fractional digits for row counts.

  10. Preliminary refactoring of plpgsql expression construction.

  11. plpgsql: pure parser and reentrant scanner

  12. Add some sanity checks in executor for query ID reporting

  13. Fix misleading error message context

  14. Add macros for looping through a List without a ListCell.

Attachments

Hi

ne 29. 12. 2024 v 3:49 odesílatel jian he <jian.universality@gmail.com>
napsal:

> On Sun, Dec 29, 2024 at 5:50 AM Pavel Stehule <pavel.stehule@gmail.com>
> wrote:
> >
> > Hi
> >
> >
> >> ------------------<<>>>---------------
> >> + else
> >> + {
> >> + /* the last field of list can be star too */
> >> + Assert(IsA(field2, A_Star));
> >> +
> >> + /*
> >> + * In this case, the field1 should be variable name. But
> >> + * direct unboxing of composite session variables is not
> >> + * supported now, and then we don't need to try lookup
> >> + * related variable.
> >> + *
> >> + * Unboxing is supported by syntax (var).*
> >> + */
> >> + return InvalidOid;
> >> + }
> >> I don't fully understand the above comments,
> >
> >
> > The parser allows only two syntaxes - identifier.identifier or
> identifier.star. Second
> > syntax is not supported by session variables, and then I didn't try to
> search for the variable.
> > Some users can be confused by similar syntaxes identifier.* and
> (identifier).* Only
> > second syntax is composite unboxing, and only second syntax is supported
> for
> > session variables.
> >
> > Maybe the note about unboxing is messy there?
> >
> >> add
> >> `elog(INFO, "%s:%d called", __FILE__, __LINE__); ` within the ELSE
> branch.
> >> Then I found out the ELSE branch doesn't have coverage tests.
> >
> >
> > I don't understand this comment? I don't use elog(INFO anywhere
> >
> >
>
> sorry for confusion, i mean,
> i added " elog(INFO", the regress test is still successful,
> therefore it means the above ELSE branch code doesn't have coverage tests.
>

yes, force this case can be little bit tricky

a) the variable should not be shadowed,
or session_variables_ambiguity_warning should be on
b) the transformColumnRef should be executed and the star symbol should be
in the list - it is possible for aggregate functions

SELECT count(v.*) FROM foo

I wrote requested regress tests

Regards

Pavel