siddharthteotia commented on issue #1030: [CALCITE-2822] Allow MultiJoin rules 
with any project/filter
URL: https://github.com/apache/calcite/pull/1030#issuecomment-478755526
 
 
   @vlsi , I have rebased and added a test case to test Filter and Project 
MultiJoin merge rules work with any implementations of Filter and Project as 
opposed to just LogicalFilter and LogicalProject. For this I added CustomFilter 
and CustomProject as implementations of Filter and Project interfaces. 
Similarly, I had to pass in a custom RelBuilderFactory to SqltoRelConverter 
config as by default it uses RelFactories.LOGICAL_BUILDER which has all the 
default factories. The test case has implementations of Custom filter and 
project factory.
   
   One problem I have been facing is that SqlToRelConverter has hardcoded the 
filter factory to be used as default filter factor in RelFactories and thus the 
custom implementation doesn't get used for Filter. If you look at the test case 
plan in RelOptRulesTest.xml, you can see that the plan now has "MyProject" 
instead of "LogicalProject" but it is still having "LogicalFilter" because of 
this hardcoded factory in SqlToRelConverter at line#990
   
   I couldn't really find a way of extracting the configured filter factor in 
SqlToRelConverter config -- something like 
config.getRelBuilderFactory.getFilterFactory(). AFAIK, there is probably no way 
of getting the specific factory class and using that instead of hardcoding to 
LogicalFilter factory.
   
   Can you please advise how this can be fixed?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to