1717
1818package org .apache .wayang .api .sql .calcite .optimizer ;
1919
20- import com .google .common .collect .ImmutableList ;
20+ import java .util .ArrayList ;
21+ import java .util .Collection ;
22+ import java .util .Collections ;
23+ import java .util .Properties ;
24+
2125import org .apache .calcite .avatica .util .Casing ;
2226import org .apache .calcite .config .CalciteConnectionConfig ;
2327import org .apache .calcite .config .CalciteConnectionConfigImpl ;
2428import org .apache .calcite .config .CalciteConnectionProperty ;
2529import org .apache .calcite .jdbc .CalciteSchema ;
2630import org .apache .calcite .jdbc .JavaTypeFactoryImpl ;
27- import org .apache .calcite .plan .*;
31+ import org .apache .calcite .plan .Contexts ;
32+ import org .apache .calcite .plan .ConventionTraitDef ;
33+ import org .apache .calcite .plan .RelOptCluster ;
34+ import org .apache .calcite .plan .RelOptCostImpl ;
35+ import org .apache .calcite .plan .RelTraitSet ;
2836import org .apache .calcite .plan .volcano .VolcanoPlanner ;
2937import org .apache .calcite .prepare .CalciteCatalogReader ;
3038import org .apache .calcite .prepare .Prepare ;
3745import org .apache .calcite .sql .fun .SqlStdOperatorTable ;
3846import org .apache .calcite .sql .parser .SqlParseException ;
3947import org .apache .calcite .sql .parser .SqlParser ;
40- import org .apache .calcite .sql .util .ChainedSqlOperatorTable ;
48+ import org .apache .calcite .sql .util .SqlOperatorTables ;
4149import org .apache .calcite .sql .validate .SqlValidator ;
4250import org .apache .calcite .sql .validate .SqlValidatorUtil ;
4351import org .apache .calcite .sql2rel .SqlToRelConverter ;
5462import org .apache .wayang .core .plan .wayangplan .Operator ;
5563import org .apache .wayang .core .plan .wayangplan .WayangPlan ;
5664
57- import java .util .ArrayList ;
58- import java .util .Collection ;
59- import java .util .Collections ;
60- import java .util .Properties ;
65+ import com .google .common .collect .ImmutableList ;
6166
6267public class Optimizer {
6368
@@ -67,178 +72,173 @@ public class Optimizer {
6772 private final VolcanoPlanner volcanoPlanner ;
6873
6974 public Optimizer (
70- CalciteConnectionConfig config ,
71- SqlValidator sqlValidator ,
72- SqlToRelConverter sqlToRelConverter ,
73- VolcanoPlanner volcanoPlanner ) {
75+ final CalciteConnectionConfig config ,
76+ final SqlValidator sqlValidator ,
77+ final SqlToRelConverter sqlToRelConverter ,
78+ final VolcanoPlanner volcanoPlanner ) {
7479 this .config = config ;
7580 this .sqlValidator = sqlValidator ;
7681 this .sqlToRelConverter = sqlToRelConverter ;
7782 this .volcanoPlanner = volcanoPlanner ;
7883 }
7984
8085 public static Optimizer create (
81- CalciteSchema calciteSchema ,
82- Properties configProperties ,
83- RelDataTypeFactory typeFactory ) {
86+ final CalciteSchema calciteSchema ,
87+ final Properties configProperties ,
88+ final RelDataTypeFactory typeFactory ) {
8489
85- CalciteConnectionConfig config = new CalciteConnectionConfigImpl (configProperties );
90+ final CalciteConnectionConfig config = new CalciteConnectionConfigImpl (configProperties );
8691
87- CalciteCatalogReader catalogReader = new CalciteCatalogReader (
92+ final CalciteCatalogReader catalogReader = new CalciteCatalogReader (
8893 calciteSchema .root (),
8994 ImmutableList .of (calciteSchema .name ),
9095 typeFactory ,
91- config
92- );
96+ config );
9397
94- SqlOperatorTable operatorTable = new ChainedSqlOperatorTable (ImmutableList .of (SqlStdOperatorTable .instance ()));
98+ final SqlOperatorTable operatorTable = SqlOperatorTables .chain (
99+ ImmutableList .of (SqlStdOperatorTable .instance ()));
95100
96- SqlValidator .Config validatorConfig = SqlValidator .Config .DEFAULT
101+ final SqlValidator .Config validatorConfig = SqlValidator .Config .DEFAULT
97102 .withLenientOperatorLookup (config .lenientOperatorLookup ())
98- .withSqlConformance (config .conformance ())
103+ .withConformance (config .conformance ())
99104 .withDefaultNullCollation (config .defaultNullCollation ())
100105 .withIdentifierExpansion (true );
101106
102- SqlValidator validator = SqlValidatorUtil .newValidator (operatorTable , catalogReader , typeFactory , validatorConfig );
107+ final SqlValidator validator = SqlValidatorUtil .newValidator (operatorTable , catalogReader , typeFactory ,
108+ validatorConfig );
103109
104- VolcanoPlanner planner = new VolcanoPlanner (RelOptCostImpl .FACTORY , Contexts .of (config ));
110+ final VolcanoPlanner planner = new VolcanoPlanner (RelOptCostImpl .FACTORY , Contexts .of (config ));
105111 planner .addRelTraitDef (ConventionTraitDef .INSTANCE );
106112
107- RelOptCluster cluster = RelOptCluster .create (planner , new RexBuilder (typeFactory ));
113+ final RelOptCluster cluster = RelOptCluster .create (planner , new RexBuilder (typeFactory ));
108114
109- SqlToRelConverter .Config converterConfig = SqlToRelConverter .config ()
115+ final SqlToRelConverter .Config converterConfig = SqlToRelConverter .config ()
110116 .withTrimUnusedFields (true )
111117 .withExpand (false );
112118
113- SqlToRelConverter converter = new SqlToRelConverter (
119+ final SqlToRelConverter converter = new SqlToRelConverter (
114120 null ,
115121 validator ,
116122 catalogReader ,
117123 cluster ,
118124 StandardConvertletTable .INSTANCE ,
119- converterConfig
120- );
125+ converterConfig );
121126
122127 return new Optimizer (config , validator , converter , planner );
123128 }
124129
125-
126-
127- //To remove
128- public static Optimizer create (WayangSchema wayangSchema ) {
129- RelDataTypeFactory typeFactory = new JavaTypeFactoryImpl ();
130+ // To remove
131+ public static Optimizer create (final WayangSchema wayangSchema ) {
132+ final RelDataTypeFactory typeFactory = new JavaTypeFactoryImpl ();
130133
131134 // Configuration
132- Properties configProperties = new Properties ();
135+ final Properties configProperties = new Properties ();
133136 configProperties .put (CalciteConnectionProperty .CASE_SENSITIVE .camelName (), Boolean .TRUE .toString ());
134137 configProperties .put (CalciteConnectionProperty .UNQUOTED_CASING .camelName (), Casing .UNCHANGED .toString ());
135138 configProperties .put (CalciteConnectionProperty .QUOTED_CASING .camelName (), Casing .UNCHANGED .toString ());
136139
137- CalciteConnectionConfig config = new CalciteConnectionConfigImpl (configProperties );
140+ final CalciteConnectionConfig config = new CalciteConnectionConfigImpl (configProperties );
138141
139- CalciteSchema rootSchema = CalciteSchema .createRootSchema (false , false );
142+ final CalciteSchema rootSchema = CalciteSchema .createRootSchema (false , false );
140143 rootSchema .add (wayangSchema .getSchemaName (), wayangSchema );
141- Prepare .CatalogReader catalogReader = new CalciteCatalogReader (
144+ final Prepare .CatalogReader catalogReader = new CalciteCatalogReader (
142145 rootSchema ,
143146 Collections .singletonList (wayangSchema .getSchemaName ()),
144147 typeFactory ,
145- config
146- );
148+ config );
147149
148- SqlOperatorTable operatorTable = new ChainedSqlOperatorTable (ImmutableList .of (SqlStdOperatorTable .instance ()));
150+ final SqlOperatorTable operatorTable = SqlOperatorTables .chain (
151+ ImmutableList .of (SqlStdOperatorTable .instance ()));
149152
150- SqlValidator .Config validatorConfig = SqlValidator .Config .DEFAULT
153+ final SqlValidator .Config validatorConfig = SqlValidator .Config .DEFAULT
151154 .withLenientOperatorLookup (config .lenientOperatorLookup ())
152- .withSqlConformance (config .conformance ())
155+ .withConformance (config .conformance ())
153156 .withDefaultNullCollation (config .defaultNullCollation ())
154157 .withIdentifierExpansion (true );
155158
156- SqlValidator validator = SqlValidatorUtil .newValidator (operatorTable , catalogReader , typeFactory , validatorConfig );
159+ final SqlValidator validator = SqlValidatorUtil .newValidator (operatorTable , catalogReader , typeFactory ,
160+ validatorConfig );
157161
158- VolcanoPlanner planner = new VolcanoPlanner (RelOptCostImpl .FACTORY , Contexts .of (config ));
162+ final VolcanoPlanner planner = new VolcanoPlanner (RelOptCostImpl .FACTORY , Contexts .of (config ));
159163 planner .addRelTraitDef (ConventionTraitDef .INSTANCE );
160164
161- RelOptCluster cluster = RelOptCluster .create (planner , new RexBuilder (typeFactory ));
165+ final RelOptCluster cluster = RelOptCluster .create (planner , new RexBuilder (typeFactory ));
162166
163- SqlToRelConverter .Config converterConfig = SqlToRelConverter .config ()
167+ final SqlToRelConverter .Config converterConfig = SqlToRelConverter .config ()
164168 .withTrimUnusedFields (true )
165169 .withExpand (false );
166170
167- SqlToRelConverter converter = new SqlToRelConverter (
171+ final SqlToRelConverter converter = new SqlToRelConverter (
168172 null ,
169173 validator ,
170174 catalogReader ,
171175 cluster ,
172176 StandardConvertletTable .INSTANCE ,
173- converterConfig
174- );
177+ converterConfig );
175178
176179 return new Optimizer (config , validator , converter , planner );
177180 }
178181
179-
180- public SqlNode parseSql (String sql ) throws SqlParseException {
181- SqlParser .Config parserConfig = SqlParser .config ()
182+ public SqlNode parseSql (final String sql ) throws SqlParseException {
183+ final SqlParser .Config parserConfig = SqlParser .config ()
182184 .withCaseSensitive (config .caseSensitive ())
183185 .withQuotedCasing (config .quotedCasing ())
184186 .withUnquotedCasing (config .unquotedCasing ())
185187 .withConformance (config .conformance ());
186188
187- SqlParser parser = SqlParser .create (sql , parserConfig );
189+ final SqlParser parser = SqlParser .create (sql , parserConfig );
188190
189191 return parser .parseStmt ();
190192 }
191193
192- public SqlNode validate (SqlNode sqlNode ) {
194+ public SqlNode validate (final SqlNode sqlNode ) {
193195 return sqlValidator .validate (sqlNode );
194196 }
195197
196- public RelNode convert (SqlNode sqlNode ) {
197- RelRoot root = sqlToRelConverter .convertQuery (sqlNode , false , true );
198+ public RelNode convert (final SqlNode sqlNode ) {
199+ final RelRoot root = sqlToRelConverter .convertQuery (sqlNode , false , true );
198200 return root .rel ;
199201 }
200202
201- //TODO: create a basic ruleset
202- public RelNode optimize (RelNode node , RelTraitSet requiredTraitSet , RuleSet rules ) {
203- Program program = Programs .of (RuleSets .ofList (rules ));
203+ public RelNode optimize (final RelNode node , final RelTraitSet requiredTraitSet , final RuleSet rules ) {
204+ final Program program = Programs .of (RuleSets .ofList (rules ));
204205
205206 return program .run (
206207 volcanoPlanner ,
207208 node ,
208209 requiredTraitSet ,
209210 Collections .emptyList (),
210- Collections .emptyList ()
211- );
211+ Collections .emptyList ());
212212 }
213213
214- public static WayangPlan convert (RelNode relNode ) {
214+ public static WayangPlan convert (final RelNode relNode ) {
215215 return convert (relNode , new ArrayList <>());
216216 }
217217
218- public static WayangPlan convert (RelNode relNode , Collection <Record > collector ) {
218+ public static WayangPlan convert (final RelNode relNode , final Collection <Record > collector ) {
219219
220- LocalCallbackSink <Record > sink = LocalCallbackSink .createCollectingSink (collector , Record .class );
220+ final LocalCallbackSink <Record > sink = LocalCallbackSink .createCollectingSink (collector , Record .class );
221221
222- Operator op = new WayangRelConverter ().convert (relNode );
222+ final Operator op = new WayangRelConverter ().convert (relNode );
223223
224224 op .connectTo (0 , sink , 0 );
225225 return new WayangPlan (sink );
226226 }
227227
228- public static WayangPlan convertWithConfig (RelNode relNode , Configuration configuration , Collection <Record > collector ) {
229- LocalCallbackSink <Record > sink = LocalCallbackSink .createCollectingSink (collector , Record .class );
228+ public static WayangPlan convertWithConfig (final RelNode relNode , final Configuration configuration ,
229+ final Collection <Record > collector ) {
230+ final LocalCallbackSink <Record > sink = LocalCallbackSink .createCollectingSink (collector , Record .class );
230231
231- Operator op = new WayangRelConverter (configuration ).convert (relNode );
232+ final Operator op = new WayangRelConverter (configuration ).convert (relNode );
232233
233234 op .connectTo (0 , sink , 0 );
234235 return new WayangPlan (sink );
235236 }
236237
237-
238238 public static class ConfigProperties {
239239
240240 public static Properties getDefaults () {
241- Properties configProperties = new Properties ();
241+ final Properties configProperties = new Properties ();
242242 configProperties .put (CalciteConnectionProperty .CASE_SENSITIVE .camelName (), Boolean .TRUE .toString ());
243243 configProperties .put (CalciteConnectionProperty .UNQUOTED_CASING .camelName (), Casing .UNCHANGED .toString ());
244244 configProperties .put (CalciteConnectionProperty .QUOTED_CASING .camelName (), Casing .UNCHANGED .toString ());
@@ -247,7 +247,4 @@ public static Properties getDefaults() {
247247
248248 }
249249
250-
251250}
252-
253-
0 commit comments