I wouldn't call this behavior buggy, but I found it somewhat surprising. expression_tree_walker() assumes that the walker has already been invoked on the current node (the node that a given recursive call of expression_tree_walker() has been invoked on). Therefore, calling expression_tree_walker() on a primitive node type, such as a Var, is a no-op.
Neil Conway <neilc@samurai.com> writes:
> I wouldn't call this behavior buggy, but I found it somewhat surprising.
> expression_tree_walker() assumes that the walker has already been
> invoked on the current node (the node that a given recursive call of
> expression_tree_walker() has been invoked on). Therefore, calling
> expression_tree_walker() on a primitive node type, such as a Var, is a
> no-op.
The documented usage method is to call the walker itself at the top
level of recursion. The walker calls expression_tree_walker (after
doing its thing on the node); other code should not call
expression_tree_walker directly.
regards, tom lane
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера