Skip to content

Commit 6f82cde

Browse files
authored
Merge pull request #660 from mspruc/change-optimizer-deprecated
change deprecated code in Optimizer
2 parents f7dff1e + b14eb86 commit 6f82cde

File tree

1 file changed

+70
-73
lines changed
  • wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/calcite/optimizer

1 file changed

+70
-73
lines changed

wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/calcite/optimizer/Optimizer.java

Lines changed: 70 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,22 @@
1717

1818
package 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+
2125
import org.apache.calcite.avatica.util.Casing;
2226
import org.apache.calcite.config.CalciteConnectionConfig;
2327
import org.apache.calcite.config.CalciteConnectionConfigImpl;
2428
import org.apache.calcite.config.CalciteConnectionProperty;
2529
import org.apache.calcite.jdbc.CalciteSchema;
2630
import 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;
2836
import org.apache.calcite.plan.volcano.VolcanoPlanner;
2937
import org.apache.calcite.prepare.CalciteCatalogReader;
3038
import org.apache.calcite.prepare.Prepare;
@@ -37,7 +45,7 @@
3745
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
3846
import org.apache.calcite.sql.parser.SqlParseException;
3947
import org.apache.calcite.sql.parser.SqlParser;
40-
import org.apache.calcite.sql.util.ChainedSqlOperatorTable;
48+
import org.apache.calcite.sql.util.SqlOperatorTables;
4149
import org.apache.calcite.sql.validate.SqlValidator;
4250
import org.apache.calcite.sql.validate.SqlValidatorUtil;
4351
import org.apache.calcite.sql2rel.SqlToRelConverter;
@@ -54,10 +62,7 @@
5462
import org.apache.wayang.core.plan.wayangplan.Operator;
5563
import 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

6267
public 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

Comments
 (0)