]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Track nesting depth correctly when drilling down into RECORD Vars.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 15 Sep 2023 21:01:26 +0000 (17:01 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 15 Sep 2023 21:01:26 +0000 (17:01 -0400)
commitd29812c0c6cd58794cb1c0eb1603a17a1ceb0d0b
tree6de4a109b41864809a911683b5d9ec5445b45208
parent8a15b4178c40247ad56158b7ab79d66e9c8af908
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
src/backend/parser/parse_target.c
src/backend/utils/adt/ruleutils.c
src/test/regress/expected/rowtypes.out
src/test/regress/sql/rowtypes.sql