Re: Schema variables - new implementation for Postgres 15

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: Schema variables - new implementation for Postgres 15
Дата
Msg-id CAFj8pRB9a94Zw02KBKNL3LCybDWdyGWO1=ueNcT3RpmkgYShZw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Schema variables - new implementation for Postgres 15  (Justin Pryzby <pryzby@telsasoft.com>)
Ответы Re: Schema variables - new implementation for Postgres 15  (Tomas Vondra <tomas.vondra@enterprisedb.com>)
Список 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 по дате отправления:

Предыдущее
От: Justin Pryzby
Дата:
Сообщение: Re: Schema variables - new implementation for Postgres 15
Следующее
От: Tomas Vondra
Дата:
Сообщение: Re: GiST operator class for bool