Refactor pl_funcs.c to provide a usage-independent tree walker.

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

Commit: 6a7283dd2f1c573f2cf3daaf14e8a246577da57d
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2025-02-11T17:14:12Z
Releases: 18.0
Refactor pl_funcs.c to provide a usage-independent tree walker.

We haven't done this up to now because there was only one use-case,
namely plpgsql_free_function_memory's search for expressions to clean
up.  However an upcoming patch has another need for walking plpgsql
functions' statement trees, so let's create sharable tree-walker
infrastructure in the same style as expression_tree_walker().

This patch actually makes the code shorter, although that's
mainly down to having used a more compact coding style.  (I didn't
write a separate subroutine for each statement type, and I made
use of some newer notations like foreach_ptr.)

Author: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru>
Reviewed-by: Pavel Borisov <pashkin.elfe@gmail.com>
Discussion: https://postgr.es/m/CACxu=vJaKFNsYxooSnW1wEgsAO5u_v1XYBacfVJ14wgJV_PYeg@mail.gmail.com

Files

PathChange+/−
src/pl/plpgsql/src/pl_funcs.c modified +244 −338

Discussion