On 26/11/2020 16:58, Andy Fan wrote:
This patch has stopped moving for a while,  any suggestion about
how to move on is appreciated.

The question on whether UniqueKey.exprs should be a list of EquivalenceClasses or PathKeys is unresolved. I don't have an opinion on that, but I'd suggest that you pick one or the other and just go with it. If it turns out to be a bad choice, then we'll change it.

Quickly looking at the patches, there's one thing I think no one's mentioned yet, but looks really ugly to me:

+               /* Make sure the path->parent point to current joinrel, can't 
update it in-place. */
+               foreach(lc, outer_rel->pathlist)
+               {
+                       Size sz = size_of_path(lfirst(lc));
+                       Path *path = palloc(sz);
+                       memcpy(path, lfirst(lc), sz);
+                       path->parent = joinrel;
+                       add_path(joinrel, path);
+               }

Copying a Path and modifying it like that is not good, there's got to be a better way to do this. Perhaps wrap the original Paths in ProjectionPaths, where the ProjectionPath's parent is the joinrel and dummypp=true.

- Heikki


Reply via email to