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.
---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match