Re: Making Vars outer-join aware - Mailing list pgsql-hackers

From Anton A. Melnikov
Subject Re: Making Vars outer-join aware
Date
Msg-id 5b370a46-f6d2-373d-9dbc-0d55250e82c1@inbox.ru
Whole thread Raw
In response to Re: Making Vars outer-join aware  (Justin Pryzby <pryzby@telsasoft.com>)
Responses Re: Making Vars outer-join aware
List pgsql-hackers
Hello!

I'm having doubts about this fix but most likely i don't understand something.
Could you help me to figure it out, please.

The thing is that for custom scan nodes as readme says:
"INDEX_VAR is abused to signify references to columns of a custom scan tuple type"
But INDEX_VAR has a negative value, so it can not be used in varnullingrels bitmapset.
And therefore this improvement seems will not work with custom scan nodes and some
extensions that use such nodes.

If i'm wrong in my doubts and bitmapset for varnullingrels is ok, may be add a check before
adjust_relid_set() call like this:

@@ -569,9 +569,10 @@ ChangeVarNodes_walker(Node *node, ChangeVarNodes_context *context)
                 {
                         if (var->varno == context->rt_index)
                                 var->varno = context->new_index;
-                       var->varnullingrels = adjust_relid_set(var->varnullingrels,
-                                                              context->rt_index,
-                                                              context->new_index);
+                       if (context->rt_index >= 0 && context->new_index >= 0)
+                               var->varnullingrels = adjust_relid_set(var->varnullingrels,
+                                                                      context->rt_index,
+

With the best wishes,

-- 
Anton A. Melnikov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company



pgsql-hackers by date:

Previous
From: "Drouvot, Bertrand"
Date:
Subject: Re: Autogenerate some wait events code and documentation
Next
From: Richard Guo
Date:
Subject: Introduce join_info_array for direct lookups of SpecialJoinInfo by ojrelid