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
- 0020-pg_restore-A-variable.patch (text/x-patch) patch 0020
- 0019-transactional-variables.patch (text/x-patch) patch 0019
- 0017-expression-with-session-variables-can-be-inlined.patch (text/x-patch) patch 0017
- 0021-variable-fence-syntax-support-and-variable-fence-usa.patch (text/x-patch) patch 0021
- 0018-this-patch-changes-error-message-column-doesn-t-exis.patch (text/x-patch) patch 0018
- 0016-plpgsql-implementation-for-LET-statement.patch (text/x-patch) patch 0016
- 0014-allow-read-an-value-of-session-variable-directly-fro.patch (text/x-patch) patch 0014
- 0015-allow-parallel-execution-queries-with-session-variab.patch (text/x-patch) patch 0015
- 0013-Implementation-of-NOT-NULL-and-IMMUTABLE-clauses.patch (text/x-patch) patch 0013
- 0012-Implementation-of-DEFAULT-clause-default-expressions.patch (text/x-patch) patch 0012
- 0011-Implementation-ON-TRANSACTION-END-RESET-clause.patch (text/x-patch) patch 0011
- 0010-implementation-of-temporary-session-variables.patch (text/x-patch) patch 0010
- 0009-PREPARE-LET-support.patch (text/x-patch) patch 0009
- 0008-EXPLAIN-LET-support.patch (text/x-patch) patch 0008
- 0007-GUC-session_variables_ambiguity_warning.patch (text/x-patch) patch 0007
- 0006-plpgsql-tests.patch (text/x-patch) patch 0006
- 0005-memory-cleaning-after-DROP-VARIABLE.patch (text/x-patch) patch 0005
- 0004-DISCARD-VARIABLES.patch (text/x-patch) patch 0004
- 0003-function-pg_session_variables-for-cleaning-tests.patch (text/x-patch) patch 0003
- 0002-Storage-for-session-variables-and-SQL-interface.patch (text/x-patch) patch 0002
- 0001-Enhancing-catalog-for-support-session-variables-and-.patch (text/x-patch) patch 0001
Hi
I wrote POC of VARIABLE(varname) syntax support
here is a copy from regress test
SET session_variables_ambiguity_warning TO on;
SET session_variables_use_fence_warning_guard TO on;
SET search_path TO 'public';
CREATE VARIABLE a AS int;
LET a = 10;
CREATE TABLE test_table(a int, b int);
INSERT INTO test_table VALUES(20, 20);
-- no warning
SELECT a;
a..
----
10
(1 row)
-- warning variable is shadowed
SELECT a, b FROM test_table;
WARNING: session variable "a" is shadowed
LINE 1: SELECT a, b FROM test_table;
^
DETAIL: Session variables can be shadowed by columns, routine's variables
and routine's arguments with the same name.
a | b..
----+----
20 | 20
(1 row)
-- no warning
SELECT variable(a) FROM test_table;
a..
----
10
(1 row)
ALTER TABLE test_table DROP COLUMN a;
-- warning - variable fence is not used
SELECT a, b FROM test_table;
WARNING: session variable "a" is not used inside variable fence
LINE 1: SELECT a, b FROM test_table;
^
DETAIL: The collision of session variable' names and column names is
possible.
a | b..
----+----
10 | 20
(1 row)
-- no warning
SELECT variable(a), b FROM test_table;
a | b..
----+----
10 | 20
(1 row)
DROP VARIABLE a;
DROP TABLE test_table;
SET session_variables_ambiguity_warning TO DEFAULT;
SET session_variables_use_fence_warning_guard TO DEFAULT;
SET search_path TO DEFAULT;
Regards
Pavel