Re: Re: proposal: schema variables

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: jian he <jian(dot)universality(at)gmail(dot)com>
Cc: Dmitry Dolgov <9erthalion6(at)gmail(dot)com>, Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, Erik Rijkers <er(at)xs4all(dot)nl>, Michael Paquier <michael(at)paquier(dot)xyz>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, DUVAL REMI <REMI(dot)DUVAL(at)cheops(dot)fr>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Re: proposal: schema variables
Date: 2024-12-28 21:49:59
Message-ID: CAFj8pRDK2heEhQNcwD=tcKpG5YyPu7zOz2jdRW5A5QfoSUEi_g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-performance

Hi

so 28. 12. 2024 v 17:47 odesílatel jian he <jian(dot)universality(at)gmail(dot)com>
napsal:

> hi.
>
> + if (stmt->collClause)
> + collation = LookupCollation(pstate,
> + stmt->collClause->collname,
> + stmt->collClause->location);
> + else
> + collation = typcollation;;
>
> two semi-colon. should be only one.
>

removed

> ------------------<<>>>---------------
> + /* locks the variable with an AccessShareLock */
> + varid = IdentifyVariable(names, &attrname, &not_unique, false);
> + if (not_unique)
> + ereport(ERROR,
> + (errcode(ERRCODE_AMBIGUOUS_PARAMETER),
> + errmsg("target \"%s\" of LET command is ambiguous",
> + NameListToString(names)),
> + parser_errposition(pstate, stmt->location)));
>
> the following are tests for the above "LET command is ambiguous" error
> message.
>
> create schema test;
> CREATE TYPE test AS (test int);
> CREATE variable test.test as test;
> set search_path to test;
> let test.test = 1;
>

done

------------------<<>>>---------------
> + 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

>
> ------------------<<>>>---------------
> + /*
> + * a.b.c can mean catalog.schema.variable or
> + * schema.variable.field.
> ....
> + /*
> + * a.b can mean "schema"."variable" or "variable"."field".
> + * Check both variants, and returns InvalidOid with
> + * not_unique flag, when both interpretations are
> + * possible.
> + */
> here, we use the word "field", but the function IdentifyVariable above
> comment, we use
> word "attribute", for consistency's sake, we should use "attribute"
> instead of "field"
>

done

>
> +/* -----
> + * IdentifyVariable - try to find a variable from a list of identifiers
> + *
> + * Returns the OID of the variable found, or InvalidOid.
> + *
> + * "names" is a list of up to four identifiers; possible meanings are:
> + * - variable (searched on the search_path)
> + * - schema.variable
> + * - variable.attribute (searched on the search_path)
> + * - schema.variable.attribute
> + * - database.schema.variable
> + * - database.schema.variable.attribute
>
> ------------------<<>>>---------------
>

updated patchset assigned

Thank you very much for review

Regards

Pavel

Attachment Content-Type Size
v20241228-0022-pg_restore-A-variable.patch text/x-patch 2.8 KB
v20241228-0020-this-patch-changes-error-message-column-doesn-t-exis.patch text/x-patch 29.1 KB
v20241228-0019-expression-with-session-variables-can-be-inlined.patch text/x-patch 4.2 KB
v20241228-0021-transactional-variables.patch text/x-patch 37.3 KB
v20241228-0018-plpgsql-implementation-for-LET-statement.patch text/x-patch 17.1 KB
v20241228-0017-allow-parallel-execution-queries-with-session-variab.patch text/x-patch 11.9 KB
v20241228-0016-allow-read-an-value-of-session-variable-directly-fro.patch text/x-patch 15.5 KB
v20241228-0015-Implementation-of-NOT-NULL-and-IMMUTABLE-clauses.patch text/x-patch 33.9 KB
v20241228-0013-Implementation-ON-TRANSACTION-END-RESET-clause.patch text/x-patch 14.6 KB
v20241228-0014-Implementation-of-DEFAULT-clause-default-expressions.patch text/x-patch 32.0 KB
v20241228-0012-implementation-of-temporary-session-variables.patch text/x-patch 40.6 KB
v20241228-0011-PREPARE-LET-support.patch text/x-patch 7.4 KB
v20241228-0010-EXPLAIN-LET-support.patch text/x-patch 8.2 KB
v20241228-0009-dynamic-check-of-usage-of-session-variable-fences.patch text/x-patch 16.2 KB
v20241228-0007-GUC-session_variables_ambiguity_warning.patch text/x-patch 14.0 KB
v20241228-0008-variable-fence-syntax-support-and-variable-fence-usa.patch text/x-patch 19.4 KB
v20241228-0006-plpgsql-tests.patch text/x-patch 16.9 KB
v20241228-0005-memory-cleaning-after-DROP-VARIABLE.patch text/x-patch 21.0 KB
v20241228-0004-DISCARD-VARIABLES.patch text/x-patch 9.6 KB
v20241228-0003-function-pg_session_variables-for-cleaning-tests.patch text/x-patch 4.3 KB
v20241228-0002-Storage-for-session-variables-and-SQL-interface.patch text/x-patch 154.3 KB
v20241228-0001-Enhancing-catalog-for-support-session-variables-and-.patch text/x-patch 167.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2024-12-28 23:47:08 Re: IANA timezone abbreviations versus timezone_abbreviations
Previous Message Tom Lane 2024-12-28 21:24:06 Re: Connection limits/permissions, slotsync workers, etc

Browse pgsql-performance by date

  From Date Subject
Next Message jian he 2024-12-29 02:48:51 Re: Re: proposal: schema variables
Previous Message Pavel Stehule 2024-12-28 17:29:26 Re: Re: proposal: schema variables