Re: proposal: schema variables
Pavel Stehule <pavel.stehule@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Move WAL sequence code into its own file
- a87987cafca6 19 (unreleased) cited
-
Add ExplainState argument to pg_plan_query() and planner().
- c83ac02ec730 19 (unreleased) cited
-
Don't include access/htup_details.h in executor/tuptable.h
- 1a8b5b11e48a 19 (unreleased) cited
-
Refactor to avoid code duplication in transformPLAssignStmt.
- b0fb2c6aa5a4 19 (unreleased) cited
-
Avoid including commands/dbcommands.h in so many places
- 325fc0ab14d1 19 (unreleased) cited
-
Restrict psql meta-commands in plain-text dumps.
- 71ea0d679543 19 (unreleased) cited
-
Split func.sgml into more manageable pieces
- 4e23c9ef65ac 19 (unreleased) cited
-
Fix squashing algorithm for query texts
- 0f65f3eec478 18.0 cited
-
EXPLAIN: Always use two fractional digits for row counts.
- 95dbd827f2ed 18.0 cited
-
Preliminary refactoring of plpgsql expression construction.
- a654af21ae52 18.0 cited
-
plpgsql: pure parser and reentrant scanner
- 7b27f5fd36cb 18.0 cited
-
Add some sanity checks in executor for query ID reporting
- 24f520594809 18.0 cited
-
Fix misleading error message context
- 4af123ad45bd 18.0 cited
-
Add macros for looping through a List without a ListCell.
- 14dd0f27d7cd 17.0 cited
Attachments
- v20240724-2-0003-function-pg_session_variables-for-cleaning-tests.patch (text/x-patch) patch v20240724-0003
- v20240724-2-0001-Enhancing-catalog-for-support-session-variables-and-.patch (text/x-patch) patch v20240724-0001
- v20240724-2-0005-memory-cleaning-after-DROP-VARIABLE.patch (text/x-patch) patch v20240724-0005
- v20240724-2-0004-DISCARD-VARIABLES.patch (text/x-patch) patch v20240724-0004
- v20240724-2-0002-Storage-for-session-variables-and-SQL-interface.patch (text/x-patch) patch v20240724-0002
- v20240724-2-0008-EXPLAIN-LET-support.patch (text/x-patch) patch v20240724-0008
- v20240724-2-0006-plpgsql-tests.patch (text/x-patch) patch v20240724-0006
- v20240724-2-0007-GUC-session_variables_ambiguity_warning.patch (text/x-patch) patch v20240724-0007
- v20240724-2-0009-PREPARE-LET-support.patch (text/x-patch) patch v20240724-0009
- v20240724-2-0011-Implementation-ON-TRANSACTION-END-RESET-clause.patch (text/x-patch) patch v20240724-0011
- v20240724-2-0012-Implementation-of-DEFAULT-clause-default-expressions.patch (text/x-patch) patch v20240724-0012
- v20240724-2-0013-Implementation-of-NOT-NULL-and-IMMUTABLE-clauses.patch (text/x-patch) patch v20240724-0013
- v20240724-2-0010-implementation-of-temporary-session-variables.patch (text/x-patch) patch v20240724-0010
- v20240724-2-0014-allow-read-an-value-of-session-variable-directly-fro.patch (text/x-patch) patch v20240724-0014
- v20240724-2-0015-allow-parallel-execution-queries-with-session-variab.patch (text/x-patch) patch v20240724-0015
- v20240724-2-0017-expression-with-session-variables-can-be-inlined.patch (text/x-patch) patch v20240724-0017
- v20240724-2-0016-plpgsql-implementation-for-LET-statement.patch (text/x-patch) patch v20240724-0016
- v20240724-2-0018-this-patch-changes-error-message-column-doesn-t-exis.patch (text/x-patch) patch v20240724-0018
- v20240724-2-0019-transactional-variables.patch (text/x-patch) patch v20240724-0019
- v20240724-2-0020-pg_restore-A-variable.patch (text/x-patch) patch v20240724-0020
st 24. 7. 2024 v 19:02 odesílatel Laurenz Albe <laurenz.albe@cybertec.at> napsal: > On Wed, 2024-07-24 at 17:19 +0200, Pavel Stehule wrote: > > > This is buggy: > > > > > > CREATE VARIABLE str AS text NOT NULL DEFAULT NULL; > > > > > > Ugh. > > > > > > SELECT str; > > > ERROR: null value is not allowed for NOT NULL session variable > "laurenz.str" > > > DETAIL: The result of DEFAULT expression is NULL. > > > > > > Perhaps that is a leftover from the previous coding, but I think > there need be > > > no check upon SELECT. It should be enough to check during CREATE > VARIABLE and > > > LET. > > > > I think it is correct. When you use SELECT str, then DEFAULT expression > is > > executed, and then the result is assigned to a variable, and there is > NOT NULL > > guard, which raises an exception. The variable is not initialized when > you run > > DDL, but it is initialized when you first read or write from/to the > variable. > > The DEFAULT expression is not evaluated in DDL time. In this case, I can > detect > > the problem in DDL time because the result is transformed to NULL node, > but > > generally there can be SQL non immutable function, and then I need to > wait until > > the DEFAULT expression will be evaluated - and it is time of first > reading. > > Unfortunately, there is not an available check if some expression is > NULL, > > that I can use in DDL time, but I have it in plpgsql_check. > > That makes sense to me. > > In that case, I think we can drop the requirement that NOT NULL variables > need a default clause. > removed > > > > > > I can see the usefulness of IMMUTABLE variables, but I am surprised > that > > > they are reset by DISCARD. What is the use case you have in mind? > > > The use case I can envision is an application that sets a value > right after > > > authentication, for use with row-level security. But then it would > be harmful > > > if the user could reset the variable with DISCARD. > > > > Primary I think about IMMUTABLE variables like about some form of cache. > > This cache is protected against unwanted repeated write - and can help > with > > detection of this situation. > > We can leave it as it is. The IMMUTABLE feature need not go into the first > release, so that can be discussed some more later. > > Thanks for the new patch set; I'll look at it soon. > Thank you very much Regards Pavel > > Yours, > Laurenz Albe >