Re: proposal: schema variables
Pavel Stehule <pavel.stehule@gmail.com>
Hi st 4. 3. 2026 v 11:03 odesílatel Haritabh Gupta <haritabh1992@gmail.com> napsal: > Hi, > > While reviewing I came across this behaviour and wanted to > check whether it's intended: > > CREATE TEMP VARIABLE y AS int; > LET y = 42; > > BEGIN; > SAVEPOINT s1; > LET y = generate_series(1,2); -- ERROR: too many rows > ROLLBACK TO s1; > SELECT VARIABLE(y); -- returns 1, not 42 > > It looks like svariableReceiveSlot writes the first row to the > variable (pfree'ing the old datum) before the second row triggers the > error, so the old value is lost even though LET failed. > > I understand variable values are intentionally non-transactional, but > is it expected that a failed LET has this side effect? > Yes, it does like you describe it. It is the most simple solution, because I don't need any extra buffer, and I can assign the value immediately when I have the value. I think I can postpone an assignment to svariableShutdownReceiver with a few more lines to get the behaviour that you expect. Regards Pavel > --- > Haritabh Gupta > Supabase
Commits
-
Reduce LEFT JOIN to ANTI JOIN using NOT NULL constraints
- cf74558feb8f 19 (unreleased) cited
-
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