@@ -74,6 +74,7 @@ static Node *wrapper_make_expression(WrapperNode *wrap, int index, bool *alwaysT
74
74
static void disable_inheritance (Query * parse );
75
75
static void disable_inheritance_cte (Query * parse );
76
76
static void disable_inheritance_subselect (Query * parse );
77
+ static bool disable_inheritance_subselect_walker (Node * node ,void * context );
77
78
78
79
/* Expression tree handlers */
79
80
static Datum increase_hashable_value (const PartRelationInfo * prel ,Datum value );
@@ -388,13 +389,22 @@ disable_inheritance_subselect(Query *parse)
388
389
return ;
389
390
390
391
quals = parse -> jointree -> quals ;
391
- if (! IsA ( quals ,SubLink ))
392
- return ;
392
+ disable_inheritance_subselect_walker ( quals ,NULL );
393
+ }
393
394
394
- if (!IsA (((SubLink * )quals )-> subselect ,Query ))
395
- return ;
395
+ static bool
396
+ disable_inheritance_subselect_walker (Node * node ,void * context )
397
+ {
398
+ if (node == NULL )
399
+ return false;
400
+
401
+ if (IsA (node ,SubLink ))
402
+ {
403
+ disable_inheritance ((Query * ) (((SubLink * )node )-> subselect ));
404
+ return false;
405
+ }
396
406
397
- disable_inheritance (( Query * ) ((( SubLink * )quals ) -> subselect ) );
407
+ return expression_tree_walker ( node , disable_inheritance_subselect_walker , ( void * )context );
398
408
}
399
409
400
410
/*