Re: Schema variables - new implementation for Postgres 15 - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Schema variables - new implementation for Postgres 15
Date
Msg-id CAFj8pRB9a94Zw02KBKNL3LCybDWdyGWO1=ueNcT3RpmkgYShZw@mail.gmail.com
Whole thread Raw
In response to Re: Schema variables - new implementation for Postgres 15  (Justin Pryzby <pryzby@telsasoft.com>)
Responses Re: Schema variables - new implementation for Postgres 15
List pgsql-hackers


so 6. 11. 2021 v 15:57 odesílatel Justin Pryzby <pryzby@telsasoft.com> napsal:
On Sat, Nov 06, 2021 at 04:45:19AM +0100, Pavel Stehule wrote:
> st 3. 11. 2021 v 14:05 odesílatel Tomas Vondra <tomas.vondra@enterprisedb.com> napsal:
> > 1) Not sure why we need to call this "schema variables". Most objects
> > are placed in a schema, and we don't say "schema tables" for example.
> > And it's CREATE VARIABLE and not CREATE SCHEMA VARIABLE, so it's a bit
> > inconsistent.

+1

At least the error messages need to be consistent.
It doesn't make sense to have both of these:

+               elog(ERROR, "cache lookup failed for schema variable %u", varid);
+               elog(ERROR, "cache lookup failed for variable %u", varid);

> Yes, there is inconsistency, but I think it is necessary. The name
> "variable" is too generic. Theoretically we can use other adjectives like
> session variables or global variables and the name will be valid. But it
> doesn't describe the fundamentals of design. This is similar to the
> package's variables from PL/SQL. These variables are global, session's
> variables too. But the usual name is "package variables". So schema
> variables are assigned to schemes, and I think a good name can be "schema
> variables". But it is not necessary to repeat keyword schema in the CREATE
> COMMAND.
>
> My opinion is not too strong in this case, and I can accept just
> "variables" or "session's variables" or "global variables", but I am not
> sure if these names describe this feature well, because still they are too
> generic. There are too many different implementations of session global
> variables (see PL/SQL or T-SQL or DB2).

I would prefer "session variable".

To me, this feature seems similar to a CTE (which exists for a single
statement), or a temporary table (which exists for a single transaction).  So
"session" conveys a lot more of its meaning than "schema".

It depends on where you are looking. There are two perspectives - data and metadata. And if I use data perspective, then it is session related. If I use metadata perspective, then it can be persistent or temporal like tables. I see strong similarity with Global Temporary Tables - but I think naming "local temporary tables" and "global temporary tables" can be not intuitive or messy for a lot of people too. Anyway, if people will try to find this feature on Google, then probably use keywords "session variables", so maybe my preference of more technical terminology is obscure and not practical, and the name "session variables" can be more practical for other people. If I use the system used for GTT - then the exact name can be "Global Session Variable". Can we use this name? Or shortly just Session Variables because we don't support local session variables now.

What do you think about it?

Regards

Pavel



But don't rename everything just for me...

--
Justin

pgsql-hackers by date:

Previous
From: Justin Pryzby
Date:
Subject: Re: Schema variables - new implementation for Postgres 15
Next
From: Tomas Vondra
Date:
Subject: Re: GiST operator class for bool