Created
December 3, 2021 15:49
-
-
Save junwen12221/54f9ceb813aeadbf6dfb342f3fc7e088 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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