Hi all! I did a reproducer for mentioned case, and possible fix (at least it fixes this particular problem). [1]
Could someone verify please is provided reproducer/fix valid? [1] https://github.com/korlov42/calcite/commit/f4a5c2f01e0ec67156f7e91c6b5839dca1db6776 <https://github.com/korlov42/calcite/commit/f4a5c2f01e0ec67156f7e91c6b5839dca1db6776> -- Regards, Konstantin Orlov > On 5 Mar 2021, at 19:53, Konstantin Orlov <[email protected]> wrote: > > Hi, folks! > > I am facing the problem that derive is not being called for some newly > created relations. > > We have a several join algorithms, so we implemented a several physical > nodes. During an optimization process they all are created from a logical > join with default distribution trait and then they are converted to a single > distribution by a passThrough call. But derive is invoked only for the first > physical rel, because others relations after conversion from a logical rel > are added to the already optimized subset (subset.taskState == OPTIMIZED). > > A derive invocation is important for us, because we create a different > variations of distribution here (like colocated join, sending one side to > another or full rehashing). > > So the questions are: > 1) Is it a bug or it so by design? > 2) if this was done on purpose, how can we best get around this limitation? > > Thanks in advance! > > -- > Regards, > Konstantin Orlov > >
