I am building a RelNode using RelBuilder.
FrameworkConfig frameworkConfig = config().build();
final RelBuilder builder = RelBuilder.create(frameworkConfig);
RelNode root =
builder.scan("ITEM", "TEST")
.filter(
builder.equals(builder.field("ITEM_ID"), builder.literal("AM_TestItem_21Aug17_0614")))
.filter(
builder.equals(builder.field("OBJECT_TYPE"), builder.literal("Item")))
.build();
PreparedStatement preparedStatement = RelRunners.run(root)
preparedStatement.executeQuery()
public static Frameworks.ConfigBuilder config() {
CalciteSchema rootSchema1 = CalciteSchema.createRootSchema(true);
rootSchema1 = rootSchema1.add("ITEM", new MySchema());
// MySchema consists of Map of MyFilterableTable which extends AbstractTable and implements FilterableTable
return Frameworks.newConfigBuilder().defaultSchema(rootSchema1.plus());
}
scan method in MyFilterableTable
public Enumerable<Object[]> scan(DataContext root, List<RexNode> filters)
gets merged filter string as [AND(=($0, 'AM_TestItem_21Aug17_0614'), =($3, 'Item'))]
I want separate entries of these filters and not merged one. I want planner to ignore the FilterMergeRule.
Is there any way to do that?