Skip to content

Instantly share code, notes, and snippets.

@junwen12221
Created December 3, 2021 15:49
Show Gist options
  • Save junwen12221/54f9ceb813aeadbf6dfb342f3fc7e088 to your computer and use it in GitHub Desktop.
Save junwen12221/54f9ceb813aeadbf6dfb342f3fc7e088 to your computer and use it in GitHub Desktop.
package io.ordinate.engine.factory;
import io.mycat.calcite.MycatRel;
import io.mycat.calcite.logical.MycatView;
import io.mycat.calcite.physical.*;
import io.mycat.calcite.table.MycatTableScan;
public class MycatCalciteCompiler {
public static MycatCalciteCompiler create(MycatCalciteCompilerOptions options) {
return null;
}
public Factory compile(MycatRel mycatRel) {
if (mycatRel instanceof MycatView) {
return ViewFactory.of((MycatView) mycatRel);
}
if (mycatRel instanceof MycatProject) {
MycatProject mycatProject = (MycatProject) mycatRel;
Factory inputFactory = compile((MycatRel) mycatProject.getInput());
return ProjectFactory.of(mycatProject,inputFactory);
}
if (mycatRel instanceof MycatFilter) {
MycatFilter mycatFilter = (MycatFilter) mycatRel;
Factory inputFactory = compile((MycatRel) mycatFilter.getInput());
return FilterFactory.of(mycatFilter,inputFactory);
}
if (mycatRel instanceof MycatCalc) {
MycatCalc mycatCalc = (MycatCalc) mycatRel;
Factory inputFactory = compile((MycatRel) mycatCalc.getInput());
return CaclFactory.of((MycatCalc) mycatRel,inputFactory);
}
if (mycatRel instanceof MycatHashAggregate) {
MycatHashAggregate mycatHashAggregate = (MycatHashAggregate) mycatRel;
Factory inputFactory = compile((MycatRel) mycatHashAggregate.getInput());
return HashAggFactory.of((MycatHashAggregate) mycatRel,inputFactory);
}
if (mycatRel instanceof MycatSortAgg) {
MycatSortAgg mycatSortAgg = (MycatSortAgg) mycatRel;
Factory inputFactory = compile((MycatRel) mycatSortAgg.getInput());
return SortAggFactory.of((MycatSortAgg) mycatRel,inputFactory);
}
if (mycatRel instanceof MycatMemSort) {
MycatMemSort mycatMemSort = (MycatMemSort) mycatRel;
Factory inputFactory = compile((MycatRel) mycatMemSort.getInput());
return MenSortFactory.of((MycatMemSort) mycatRel,inputFactory);
}
if (mycatRel instanceof MycatTopN) {
MycatTopN mycatTopN = (MycatTopN) mycatRel;
Factory inputFactory = compile((MycatRel) mycatTopN.getInput());
return TopNSortFactory.of(mycatTopN,inputFactory);
}
if (mycatRel instanceof MycatTableScan){
MycatTableScan tableScan =(MycatTableScan)mycatRel;
return new VisualTablescanFactory(tableScan);
}
return null;
}
public static void main(String[] args) {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment