Track nesting depth correctly when drilling down into RECORD Vars.
Tom Lane <tgl@sss.pgh.pa.us>
Track nesting depth correctly when drilling down into RECORD Vars. expandRecordVariable() failed to adjust the parse nesting structure correctly when recursing to inspect an outer-level Var. This could result in assertion failures or core dumps in corner cases. Likewise, get_name_for_var_field() failed to adjust the deparse namespace stack correctly when recursing to inspect an outer-level Var. In this case the likely result was a "bogus varno" error while deparsing a view. Per bug #18077 from Jingzhou Fu. Back-patch to all supported branches. Richard Guo, with some adjustments by me Discussion: https://postgr.es/m/18077-b9db97c6e0ab45d8@postgresql.org
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/parser/parse_target.c | modified | +13 −7 |
| src/backend/utils/adt/ruleutils.c | modified | +22 −15 |
| src/test/regress/expected/rowtypes.out | modified | +60 −0 |
| src/test/regress/sql/rowtypes.sql | modified | +25 −0 |
Discussion
- BUG #18077: PostgreSQL server subprocess crashed by a SELECT statement with WITH clause 16 messages · 2023-08-30 → 2023-09-18