On 2024-04-09 00:54 +0200, Tom Lane wrote: > I poked at this and found that the failures occur when the patched > code decides to trim an expression like "_r.v" to just "_r", naturally > breaking the semantics completely. That happens because when > plpgsql_yylex recognizes a compound token, it doesn't bother to > adjust the token length to include the additional word(s).
Thanks Tom! I haven't had the time to look at your patch. I'm surprised that the lexer handles compound tokens. I'd expect to find that in the parser, especially because of using the context-aware plpgsql_ns_lookup to determine if we have a T_DATUM or T_{WORD,CWORD}. Is this done by the lexer to allow push-back of those compound tokens and maybe even to also simplify some parser rules? -- Erik