Track nesting depth correctly when drilling down into RECORD Vars.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: d29812c0c6cd58794cb1c0eb1603a17a1ceb0d0b
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2023-09-15T21:01:26Z
Releases: 12.17
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

Discussion