final Convention convention = (Convention) traits.getTrait(0); if (!convention.getInterface().isInstance(rel) && !(rel instanceof ConverterRel)) { throw Util.newInternal( + " has calling-convention " + convention + " but does not implement the required interface '" + convention.getInterface() + "' of that convention");
/** * Creates a simple planner that can plan "select * from myTable" but not * much more. */ protected RelOptPlanner createTapPlanner() { final VolcanoPlanner planner = new VolcanoPlanner(); planner.addRelTraitDef( Cascading.CONVENTION.getTraitDef() ); planner.addRelTraitDef( ConventionTraitDef.instance ); planner.addRule( TableAccessRule.instance ); planner.addRule( JavaRules.ENUMERABLE_CALC_RULE ); planner.addRule( ProjectToCalcRule.instance ); planner.addRule( EnumerableTapRule.INSTANCE ); planner.setLocked( true ); // prevent further rules being added return planner; } }
final Convention convention = (Convention) traits.getTrait(0); if (!convention.getInterface().isInstance(rel) && !(rel instanceof ConverterRel)) + " has calling-convention " + convention + " but does not implement the required interface '" + convention.getInterface() + "' of that convention");
public static void registerRules( RelOptPlanner planner ) { planner.addRelTraitDef( Cascading.CONVENTION.getTraitDef() ); planner.addRelTraitDef( ConventionTraitDef.instance ); planner.addRule( PushJoinThroughJoinRule.INSTANCE ); // handles actual flow planning planner.addRule( CascadingEnumerableConverterRule.INSTANCE ); planner.addRule( CascadingTableModificationConverterRule.INSTANCE ); planner.addRule( CascadingAggregateConverterRule.INSTANCE ); planner.addRule( CascadingCalcConverterRule.INSTANCE ); planner.addRule( CascadingProjectConverterRule.INSTANCE ); // planner.addRule( CascadingFilterRule.INSTANCE ); planner.addRule( CascadingAggregateRule.INSTANCE ); planner.addRule( CascadingProjectRule.INSTANCE ); planner.addRule( CascadingSortRule.INSTANCE ); planner.addRule( CascadingJoinRule.INSTANCE ); planner.addRule( CascadingUnionRule.INSTANCE ); planner.addRule( CascadingValuesRule.INSTANCE ); planner.addRule( CascadingInsertValuesRule.INSTANCE ); planner.addRule( AbstractConverter.ExpandConversionRule.instance ); }