http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java ---------------------------------------------------------------------- diff --git a/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java b/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java index ddc1c12..ec33c4c 100644 --- a/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java +++ b/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java @@ -84,285 +84,355 @@ import com.google.common.collect.Lists; */ public class Programs { - private static final Function<RuleSet, Program> RULE_SET_TO_PROGRAM = new Function<RuleSet, Program>() { + private static final Function<RuleSet, Program> RULE_SET_TO_PROGRAM = + new Function<RuleSet, Program>() { public Program apply(RuleSet ruleSet) { - return of(ruleSet); + return of(ruleSet); } - }; - - public static final ImmutableList<RelOptRule> CALC_RULES = ImmutableList.of(NoneToBindableConverterRule.INSTANCE, - EnumerableRules.ENUMERABLE_CALC_RULE, EnumerableRules.ENUMERABLE_FILTER_TO_CALC_RULE, - EnumerableRules.ENUMERABLE_PROJECT_TO_CALC_RULE, CalcMergeRule.INSTANCE, FilterCalcMergeRule.INSTANCE, - ProjectCalcMergeRule.INSTANCE, FilterToCalcRule.INSTANCE, ProjectToCalcRule.INSTANCE, - CalcMergeRule.INSTANCE, - - // REVIEW jvs 9-Apr-2006: Do we still need these two? Doesn't the - // combination of CalcMergeRule, FilterToCalcRule, and - // ProjectToCalcRule have the same effect? - FilterCalcMergeRule.INSTANCE, ProjectCalcMergeRule.INSTANCE); - - /** Program that converts filters and projects to {@link Calc}s. */ - public static final Program CALC_PROGRAM = calc(DefaultRelMetadataProvider.INSTANCE); - - /** Program that expands sub-queries. */ - public static final Program SUB_QUERY_PROGRAM = subQuery(DefaultRelMetadataProvider.INSTANCE); - - public static final ImmutableSet<RelOptRule> RULE_SET = ImmutableSet.of(EnumerableRules.ENUMERABLE_JOIN_RULE, - EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE, EnumerableRules.ENUMERABLE_SEMI_JOIN_RULE, - EnumerableRules.ENUMERABLE_CORRELATE_RULE, EnumerableRules.ENUMERABLE_PROJECT_RULE, - EnumerableRules.ENUMERABLE_FILTER_RULE, EnumerableRules.ENUMERABLE_AGGREGATE_RULE, - EnumerableRules.ENUMERABLE_SORT_RULE, EnumerableRules.ENUMERABLE_LIMIT_RULE, - EnumerableRules.ENUMERABLE_UNION_RULE, EnumerableRules.ENUMERABLE_INTERSECT_RULE, - EnumerableRules.ENUMERABLE_MINUS_RULE, EnumerableRules.ENUMERABLE_TABLE_MODIFICATION_RULE, - EnumerableRules.ENUMERABLE_VALUES_RULE, EnumerableRules.ENUMERABLE_WINDOW_RULE, SemiJoinRule.PROJECT, - SemiJoinRule.JOIN, TableScanRule.INSTANCE, - CalcitePrepareImpl.COMMUTE ? JoinAssociateRule.INSTANCE : ProjectMergeRule.INSTANCE, - AggregateStarTableRule.INSTANCE, AggregateStarTableRule.INSTANCE2, FilterTableScanRule.INSTANCE, - FilterProjectTransposeRule.INSTANCE, FilterJoinRule.FILTER_ON_JOIN, - AggregateExpandDistinctAggregatesRule.INSTANCE, AggregateReduceFunctionsRule.INSTANCE, - FilterAggregateTransposeRule.INSTANCE, JoinCommuteRule.INSTANCE, JoinPushThroughJoinRule.RIGHT, - JoinPushThroughJoinRule.LEFT, SortProjectTransposeRule.INSTANCE); - - // private constructor for utility class - private Programs() { - } - - /** Creates a program that executes a rule set. */ - public static Program of(RuleSet ruleSet) { - return new RuleSetProgram(ruleSet); - } - - /** Creates a list of programs based on an array of rule sets. */ - public static List<Program> listOf(RuleSet... ruleSets) { - return Lists.transform(Arrays.asList(ruleSets), RULE_SET_TO_PROGRAM); - } - - /** Creates a list of programs based on a list of rule sets. */ - public static List<Program> listOf(List<RuleSet> ruleSets) { - return Lists.transform(ruleSets, RULE_SET_TO_PROGRAM); + }; + + public static final ImmutableList<RelOptRule> CALC_RULES = + ImmutableList.of( + NoneToBindableConverterRule.INSTANCE, + EnumerableRules.ENUMERABLE_CALC_RULE, + EnumerableRules.ENUMERABLE_FILTER_TO_CALC_RULE, + EnumerableRules.ENUMERABLE_PROJECT_TO_CALC_RULE, + CalcMergeRule.INSTANCE, + FilterCalcMergeRule.INSTANCE, + ProjectCalcMergeRule.INSTANCE, + FilterToCalcRule.INSTANCE, + ProjectToCalcRule.INSTANCE, + CalcMergeRule.INSTANCE, + + // REVIEW jvs 9-Apr-2006: Do we still need these two? Doesn't the + // combination of CalcMergeRule, FilterToCalcRule, and + // ProjectToCalcRule have the same effect? + FilterCalcMergeRule.INSTANCE, + ProjectCalcMergeRule.INSTANCE); + + /** Program that converts filters and projects to {@link Calc}s. */ + public static final Program CALC_PROGRAM = + calc(DefaultRelMetadataProvider.INSTANCE); + + /** Program that expands sub-queries. */ + public static final Program SUB_QUERY_PROGRAM = + subQuery(DefaultRelMetadataProvider.INSTANCE); + + public static final ImmutableSet<RelOptRule> RULE_SET = + ImmutableSet.of( + EnumerableRules.ENUMERABLE_JOIN_RULE, + EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE, + EnumerableRules.ENUMERABLE_SEMI_JOIN_RULE, + EnumerableRules.ENUMERABLE_CORRELATE_RULE, + EnumerableRules.ENUMERABLE_PROJECT_RULE, + EnumerableRules.ENUMERABLE_FILTER_RULE, + EnumerableRules.ENUMERABLE_AGGREGATE_RULE, + EnumerableRules.ENUMERABLE_SORT_RULE, + EnumerableRules.ENUMERABLE_LIMIT_RULE, + EnumerableRules.ENUMERABLE_UNION_RULE, + EnumerableRules.ENUMERABLE_INTERSECT_RULE, + EnumerableRules.ENUMERABLE_MINUS_RULE, + EnumerableRules.ENUMERABLE_TABLE_MODIFICATION_RULE, + EnumerableRules.ENUMERABLE_VALUES_RULE, + EnumerableRules.ENUMERABLE_WINDOW_RULE, + SemiJoinRule.PROJECT, + SemiJoinRule.JOIN, + TableScanRule.INSTANCE, + CalcitePrepareImpl.COMMUTE + ? JoinAssociateRule.INSTANCE + : ProjectMergeRule.INSTANCE, + AggregateStarTableRule.INSTANCE, + AggregateStarTableRule.INSTANCE2, + FilterTableScanRule.INSTANCE, + FilterProjectTransposeRule.INSTANCE, + FilterJoinRule.FILTER_ON_JOIN, + AggregateExpandDistinctAggregatesRule.INSTANCE, + AggregateReduceFunctionsRule.INSTANCE, + FilterAggregateTransposeRule.INSTANCE, + JoinCommuteRule.INSTANCE, + JoinPushThroughJoinRule.RIGHT, + JoinPushThroughJoinRule.LEFT, + SortProjectTransposeRule.INSTANCE); + + // private constructor for utility class + private Programs() {} + + /** Creates a program that executes a rule set. */ + public static Program of(RuleSet ruleSet) { + return new RuleSetProgram(ruleSet); + } + + /** Creates a list of programs based on an array of rule sets. */ + public static List<Program> listOf(RuleSet... ruleSets) { + return Lists.transform(Arrays.asList(ruleSets), RULE_SET_TO_PROGRAM); + } + + /** Creates a list of programs based on a list of rule sets. */ + public static List<Program> listOf(List<RuleSet> ruleSets) { + return Lists.transform(ruleSets, RULE_SET_TO_PROGRAM); + } + + /** Creates a program from a list of rules. */ + public static Program ofRules(RelOptRule... rules) { + return of(RuleSets.ofList(rules)); + } + + /** Creates a program from a list of rules. */ + public static Program ofRules(Iterable<? extends RelOptRule> rules) { + return of(RuleSets.ofList(rules)); + } + + /** Creates a program that executes a sequence of programs. */ + public static Program sequence(Program... programs) { + return new SequenceProgram(ImmutableList.copyOf(programs)); + } + + /** Creates a program that executes a list of rules in a HEP planner. */ + public static Program hep(Iterable<? extends RelOptRule> rules, + boolean noDag, RelMetadataProvider metadataProvider) { + final HepProgramBuilder builder = HepProgram.builder(); + for (RelOptRule rule : rules) { + builder.addRuleInstance(rule); } - - /** Creates a program from a list of rules. */ - public static Program ofRules(RelOptRule... rules) { - return of(RuleSets.ofList(rules)); - } - - /** Creates a program from a list of rules. */ - public static Program ofRules(Iterable<? extends RelOptRule> rules) { - return of(RuleSets.ofList(rules)); - } - - /** Creates a program that executes a sequence of programs. */ - public static Program sequence(Program... programs) { - return new SequenceProgram(ImmutableList.copyOf(programs)); - } - - /** Creates a program that executes a list of rules in a HEP planner. */ - public static Program hep(Iterable<? extends RelOptRule> rules, boolean noDag, - RelMetadataProvider metadataProvider) { - final HepProgramBuilder builder = HepProgram.builder(); - for (RelOptRule rule : rules) { - builder.addRuleInstance(rule); + return of(builder.build(), noDag, metadataProvider); + } + + /** Creates a program that executes a {@link HepProgram}. */ + public static Program of(final HepProgram hepProgram, final boolean noDag, + final RelMetadataProvider metadataProvider) { + return new Program() { + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + final HepPlanner hepPlanner = new HepPlanner(hepProgram, + null, noDag, null, RelOptCostImpl.FACTORY); + + List<RelMetadataProvider> list = Lists.newArrayList(); + if (metadataProvider != null) { + list.add(metadataProvider); } - return of(builder.build(), noDag, metadataProvider); - } + hepPlanner.registerMetadataProviders(list); + RelMetadataProvider plannerChain = + ChainedRelMetadataProvider.of(list); + rel.getCluster().setMetadataProvider(plannerChain); + + hepPlanner.setRoot(rel); + return hepPlanner.findBestExp(); + } + }; + } + + /** Creates a program that invokes heuristic join-order optimization + * (via {@link org.apache.calcite.rel.rules.JoinToMultiJoinRule}, + * {@link org.apache.calcite.rel.rules.MultiJoin} and + * {@link org.apache.calcite.rel.rules.LoptOptimizeJoinRule}) + * if there are 6 or more joins (7 or more relations). */ + public static Program heuristicJoinOrder( + final Iterable<? extends RelOptRule> rules, + final boolean bushy, final int minJoinCount) { + return new Program() { + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + final int joinCount = RelOptUtil.countJoins(rel); + final Program program; + if (joinCount < minJoinCount) { + program = ofRules(rules); + } else { + // Create a program that gathers together joins as a MultiJoin. + final HepProgram hep = new HepProgramBuilder() + .addRuleInstance(FilterJoinRule.FILTER_ON_JOIN) + .addMatchOrder(HepMatchOrder.BOTTOM_UP) + .addRuleInstance(JoinToMultiJoinRule.INSTANCE) + .build(); + final Program program1 = + of(hep, false, DefaultRelMetadataProvider.INSTANCE); + + // Create a program that contains a rule to expand a MultiJoin + // into heuristically ordered joins. + // We use the rule set passed in, but remove JoinCommuteRule and + // JoinPushThroughJoinRule, because they cause exhaustive search. + final List<RelOptRule> list = Lists.newArrayList(rules); + list.removeAll( + ImmutableList.of(JoinCommuteRule.INSTANCE, + JoinAssociateRule.INSTANCE, + JoinPushThroughJoinRule.LEFT, + JoinPushThroughJoinRule.RIGHT)); + list.add(bushy + ? MultiJoinOptimizeBushyRule.INSTANCE + : LoptOptimizeJoinRule.INSTANCE); + final Program program2 = ofRules(list); + + program = sequence(program1, program2); + } + return program.run( + planner, rel, requiredOutputTraits, materializations, lattices); + } + }; + } + + public static Program calc(RelMetadataProvider metadataProvider) { + return hep(CALC_RULES, true, metadataProvider); + } + + @Deprecated // to be removed before 2.0 + public static Program subquery(RelMetadataProvider metadataProvider) { + return subQuery(metadataProvider); + } + + public static Program subQuery(RelMetadataProvider metadataProvider) { + return hep( + ImmutableList.of((RelOptRule) SubQueryRemoveRule.FILTER, + SubQueryRemoveRule.PROJECT, + SubQueryRemoveRule.JOIN, OLAPJoinPushThroughJoinRule.INSTANCE, + OLAPJoinPushThroughJoinRule2.INSTANCE + ), true, metadataProvider); + } + + public static Program getProgram() { + return new Program() { + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + return null; + } + }; + } + + /** Returns the standard program used by Prepare. */ + public static Program standard() { + return standard(DefaultRelMetadataProvider.INSTANCE); + } + + /** Returns the standard program with user metadata provider. */ + public static Program standard(RelMetadataProvider metadataProvider) { + + final Program program1 = + new Program() { + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + planner.setRoot(rel); - /** Creates a program that executes a {@link HepProgram}. */ - public static Program of(final HepProgram hepProgram, final boolean noDag, - final RelMetadataProvider metadataProvider) { - return new Program() { - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - final HepPlanner hepPlanner = new HepPlanner(hepProgram, null, noDag, null, RelOptCostImpl.FACTORY); - - List<RelMetadataProvider> list = Lists.newArrayList(); - if (metadataProvider != null) { - list.add(metadataProvider); - } - hepPlanner.registerMetadataProviders(list); - RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); - rel.getCluster().setMetadataProvider(plannerChain); - - hepPlanner.setRoot(rel); - return hepPlanner.findBestExp(); + for (RelOptMaterialization materialization : materializations) { + planner.addMaterialization(materialization); } - }; - } - - /** Creates a program that invokes heuristic join-order optimization - * (via {@link org.apache.calcite.rel.rules.JoinToMultiJoinRule}, - * {@link org.apache.calcite.rel.rules.MultiJoin} and - * {@link org.apache.calcite.rel.rules.LoptOptimizeJoinRule}) - * if there are 6 or more joins (7 or more relations). */ - public static Program heuristicJoinOrder(final Iterable<? extends RelOptRule> rules, final boolean bushy, - final int minJoinCount) { - return new Program() { - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - final int joinCount = RelOptUtil.countJoins(rel); - final Program program; - if (joinCount < minJoinCount) { - program = ofRules(rules); - } else { - // Create a program that gathers together joins as a MultiJoin. - final HepProgram hep = new HepProgramBuilder().addRuleInstance(FilterJoinRule.FILTER_ON_JOIN) - .addMatchOrder(HepMatchOrder.BOTTOM_UP).addRuleInstance(JoinToMultiJoinRule.INSTANCE) - .build(); - final Program program1 = of(hep, false, DefaultRelMetadataProvider.INSTANCE); - - // Create a program that contains a rule to expand a MultiJoin - // into heuristically ordered joins. - // We use the rule set passed in, but remove JoinCommuteRule and - // JoinPushThroughJoinRule, because they cause exhaustive search. - final List<RelOptRule> list = Lists.newArrayList(rules); - list.removeAll(ImmutableList.of(JoinCommuteRule.INSTANCE, JoinAssociateRule.INSTANCE, - JoinPushThroughJoinRule.LEFT, JoinPushThroughJoinRule.RIGHT)); - list.add(bushy ? MultiJoinOptimizeBushyRule.INSTANCE : LoptOptimizeJoinRule.INSTANCE); - final Program program2 = ofRules(list); - - program = sequence(program1, program2); - } - return program.run(planner, rel, requiredOutputTraits, materializations, lattices); + for (RelOptLattice lattice : lattices) { + planner.addLattice(lattice); } - }; - } - - public static Program calc(RelMetadataProvider metadataProvider) { - return hep(CALC_RULES, true, metadataProvider); - } - @Deprecated // to be removed before 2.0 - public static Program subquery(RelMetadataProvider metadataProvider) { - return subQuery(metadataProvider); - } - - public static Program subQuery(RelMetadataProvider metadataProvider) { - return hep(ImmutableList.of((RelOptRule) SubQueryRemoveRule.FILTER, SubQueryRemoveRule.PROJECT, - SubQueryRemoveRule.JOIN, OLAPJoinPushThroughJoinRule.INSTANCE, OLAPJoinPushThroughJoinRule2.INSTANCE), - true, metadataProvider); - } - - public static Program getProgram() { - return new Program() { - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - return null; - } + final RelNode rootRel2 = + rel.getTraitSet().equals(requiredOutputTraits) + ? rel + : planner.changeTraits(rel, requiredOutputTraits); + assert rootRel2 != null; + + planner.setRoot(rootRel2); + final RelOptPlanner planner2 = planner.chooseDelegate(); + final RelNode rootRel3 = planner2.findBestExp(); + assert rootRel3 != null : "could not implement exp"; + return rootRel3; + } }; - } - /** Returns the standard program used by Prepare. */ - public static Program standard() { - return standard(DefaultRelMetadataProvider.INSTANCE); - } + return sequence(subQuery(metadataProvider), + new DecorrelateProgram(), + new TrimFieldsProgram(), + program1, - /** Returns the standard program with user metadata provider. */ - public static Program standard(RelMetadataProvider metadataProvider) { - - final Program program1 = new Program() { - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - planner.setRoot(rel); - - for (RelOptMaterialization materialization : materializations) { - planner.addMaterialization(materialization); - } - for (RelOptLattice lattice : lattices) { - planner.addLattice(lattice); - } - - final RelNode rootRel2 = rel.getTraitSet().equals(requiredOutputTraits) ? rel - : planner.changeTraits(rel, requiredOutputTraits); - assert rootRel2 != null; - - planner.setRoot(rootRel2); - final RelOptPlanner planner2 = planner.chooseDelegate(); - final RelNode rootRel3 = planner2.findBestExp(); - assert rootRel3 != null : "could not implement exp"; - return rootRel3; - } - }; + // Second planner pass to do physical "tweaks". This the first time that + // EnumerableCalcRel is introduced. + calc(metadataProvider)); + } - return sequence(subQuery(metadataProvider), new DecorrelateProgram(), new TrimFieldsProgram(), program1, + /** Program backed by a {@link RuleSet}. */ + static class RuleSetProgram implements Program { + final RuleSet ruleSet; - // Second planner pass to do physical "tweaks". This the first time that - // EnumerableCalcRel is introduced. - calc(metadataProvider)); + private RuleSetProgram(RuleSet ruleSet) { + this.ruleSet = ruleSet; } - /** Program backed by a {@link RuleSet}. */ - static class RuleSetProgram implements Program { - final RuleSet ruleSet; - - private RuleSetProgram(RuleSet ruleSet) { - this.ruleSet = ruleSet; - } + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + planner.clear(); + for (RelOptRule rule : ruleSet) { + planner.addRule(rule); + } + for (RelOptMaterialization materialization : materializations) { + planner.addMaterialization(materialization); + } + for (RelOptLattice lattice : lattices) { + planner.addLattice(lattice); + } + if (!rel.getTraitSet().equals(requiredOutputTraits)) { + rel = planner.changeTraits(rel, requiredOutputTraits); + } + planner.setRoot(rel); + return planner.findBestExp(); - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - planner.clear(); - for (RelOptRule rule : ruleSet) { - planner.addRule(rule); - } - for (RelOptMaterialization materialization : materializations) { - planner.addMaterialization(materialization); - } - for (RelOptLattice lattice : lattices) { - planner.addLattice(lattice); - } - if (!rel.getTraitSet().equals(requiredOutputTraits)) { - rel = planner.changeTraits(rel, requiredOutputTraits); - } - planner.setRoot(rel); - return planner.findBestExp(); - - } } + } - /** Program that runs sub-programs, sending the output of the previous as - * input to the next. */ - private static class SequenceProgram implements Program { - private final ImmutableList<Program> programs; - - SequenceProgram(ImmutableList<Program> programs) { - this.programs = programs; - } + /** Program that runs sub-programs, sending the output of the previous as + * input to the next. */ + private static class SequenceProgram implements Program { + private final ImmutableList<Program> programs; - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - for (Program program : programs) { - rel = program.run(planner, rel, requiredOutputTraits, materializations, lattices); - } - return rel; - } + SequenceProgram(ImmutableList<Program> programs) { + this.programs = programs; } - /** Program that de-correlates a query. - * - * <p>To work around - * <a href="https://issues.apache.org/jira/browse/CALCITE-842">[CALCITE-842] - * Decorrelator gets field offsets confused if fields have been trimmed</a>, - * disable field-trimming in {@link SqlToRelConverter}, and run - * {@link TrimFieldsProgram} after this program. */ - private static class DecorrelateProgram implements Program { - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - final CalciteConnectionConfig config = planner.getContext().unwrap(CalciteConnectionConfig.class); - if (config != null && config.forceDecorrelate()) { - return RelDecorrelator.decorrelateQuery(rel); - } - return rel; - } + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + for (Program program : programs) { + rel = program.run( + planner, rel, requiredOutputTraits, materializations, lattices); + } + return rel; } - - /** Program that trims fields. */ - private static class TrimFieldsProgram implements Program { - public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, - List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { - final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null); - return new RelFieldTrimmer(null, relBuilder).trim(rel); - } + } + + /** Program that de-correlates a query. + * + * <p>To work around + * <a href="https://issues.apache.org/jira/browse/CALCITE-842">[CALCITE-842] + * Decorrelator gets field offsets confused if fields have been trimmed</a>, + * disable field-trimming in {@link SqlToRelConverter}, and run + * {@link TrimFieldsProgram} after this program. */ + private static class DecorrelateProgram implements Program { + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + final CalciteConnectionConfig config = + planner.getContext().unwrap(CalciteConnectionConfig.class); + if (config != null && config.forceDecorrelate()) { + return RelDecorrelator.decorrelateQuery(rel); + } + return rel; + } + } + + /** Program that trims fields. */ + private static class TrimFieldsProgram implements Program { + public RelNode run(RelOptPlanner planner, RelNode rel, + RelTraitSet requiredOutputTraits, + List<RelOptMaterialization> materializations, + List<RelOptLattice> lattices) { + final RelBuilder relBuilder = + RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null); + return new RelFieldTrimmer(null, relBuilder).trim(rel); } + } } // End Programs.java
http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java b/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java index f7fceec..426ebb9 100644 --- a/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java +++ b/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java @@ -73,14 +73,13 @@ public class BackwardCompatibilityConfig { for (Entry<Object, Object> kv : props.entrySet()) { String key = (String) kv.getKey(); String value = (String) kv.getValue(); - + if (key.equals(value)) continue; // no change - + if (value.contains(key)) - throw new IllegalStateException("New key '" + value + "' contains old key '" + key - + "' causes trouble to repeated find & replace"); - + throw new IllegalStateException("New key '" + value + "' contains old key '" + key + "' causes trouble to repeated find & replace"); + if (value.endsWith(".")) old2newPrefix.put(key, value); else @@ -123,7 +122,7 @@ public class BackwardCompatibilityConfig { return result; } - public OrderedProperties check(OrderedProperties props) { + public OrderedProperties check(OrderedProperties props){ OrderedProperties result = new OrderedProperties(); for (Entry<String, String> kv : props.entrySet()) { result.setProperty(check(kv.getKey()), kv.getValue()); @@ -181,7 +180,7 @@ public class BackwardCompatibilityConfig { } finally { IOUtils.closeQuietly(out); } - + System.out.println("Files generated:"); System.out.println(shFile); System.out.println(sedFile); @@ -212,7 +211,6 @@ public class BackwardCompatibilityConfig { else if (name.endsWith("-site.xml")) return false; else - return name.endsWith(".java") || name.endsWith(".js") || name.endsWith(".sh") - || name.endsWith(".properties") || name.endsWith(".xml"); + return name.endsWith(".java") || name.endsWith(".js") || name.endsWith(".sh") || name.endsWith(".properties") || name.endsWith(".xml"); } } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java index 5d08338..04af9f5 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java @@ -70,8 +70,7 @@ public class KylinConfig extends KylinConfigBase { config = new KylinConfig(); config.reloadKylinConfig(getKylinProperties()); - logger.info("Initialized a new KylinConfig from getInstanceFromEnv : " - + System.identityHashCode(config)); + logger.info("Initialized a new KylinConfig from getInstanceFromEnv : " + System.identityHashCode(config)); SYS_ENV_INSTANCE = config; } catch (IllegalArgumentException e) { throw new IllegalStateException("Failed to find KylinConfig ", e); @@ -109,12 +108,10 @@ public class KylinConfig extends KylinConfigBase { if (file.getName().equalsIgnoreCase(KYLIN_CONF_PROPERTIES_FILE)) { return UriType.PROPERTIES_FILE; } else { - throw new IllegalStateException( - "Metadata uri : " + metaUri + " is a local file but not kylin.properties"); + throw new IllegalStateException("Metadata uri : " + metaUri + " is a local file but not kylin.properties"); } } else { - throw new IllegalStateException( - "Metadata uri : " + metaUri + " looks like a file but it's neither a file nor a directory"); + throw new IllegalStateException("Metadata uri : " + metaUri + " looks like a file but it's neither a file nor a directory"); } } else { if (RestClient.matchFullRestPattern(metaUri)) @@ -261,8 +258,7 @@ public class KylinConfig extends KylinConfigBase { return conf; } - private static OrderedProperties getKylinOrderedProperties() - throws FileNotFoundException, UnsupportedEncodingException { + private static OrderedProperties getKylinOrderedProperties() throws FileNotFoundException, UnsupportedEncodingException { File propFile = getKylinPropertiesFile(); if (propFile == null || !propFile.exists()) { logger.error("fail to locate " + KYLIN_CONF_PROPERTIES_FILE); http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index e495aaa..ad08108 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -198,8 +198,7 @@ abstract public class KylinConfigBase implements Serializable { root = "hdfs://" + root; } - return new StringBuffer(root).append(StringUtils.replaceChars(getMetadataUrlPrefix(), ':', '-')).append("/") - .toString(); + return new StringBuffer(root).append(StringUtils.replaceChars(getMetadataUrlPrefix(), ':', '-')).append("/").toString(); } // ============================================================================ @@ -243,8 +242,7 @@ abstract public class KylinConfigBase implements Serializable { } public DistributedLockFactory getDistributedLockFactory() { - String clsName = getOptional("kylin.metadata.distributed-lock-impl", - "org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory"); + String clsName = getOptional("kylin.metadata.distributed-lock-impl", "org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory"); return (DistributedLockFactory) ClassUtil.newInstance(clsName); } @@ -348,8 +346,7 @@ abstract public class KylinConfigBase implements Serializable { public CliCommandExecutor getCliCommandExecutor() throws IOException { CliCommandExecutor exec = new CliCommandExecutor(); if (getRunAsRemoteCommand()) { - exec.setRunAtRemote(getRemoteHadoopCliHostname(), getRemoteHadoopCliPort(), getRemoteHadoopCliUsername(), - getRemoteHadoopCliPassword()); + exec.setRunAtRemote(getRemoteHadoopCliHostname(), getRemoteHadoopCliPort(), getRemoteHadoopCliUsername(), getRemoteHadoopCliPassword()); } return exec; } @@ -398,8 +395,7 @@ abstract public class KylinConfigBase implements Serializable { } public String getHiveDependencyFilterList() { - return this.getOptional("kylin.job.dependency-filter-list", "[^,]*hive-exec[^,]*?\\.jar" + "|" - + "[^,]*hive-metastore[^,]*?\\.jar" + "|" + "[^,]*hive-hcatalog-core[^,]*?\\.jar"); + return this.getOptional("kylin.job.dependency-filter-list", "[^,]*hive-exec[^,]*?\\.jar" + "|" + "[^,]*hive-metastore[^,]*?\\.jar" + "|" + "[^,]*hive-hcatalog-core[^,]*?\\.jar"); } public boolean isMailEnabled() { @@ -657,8 +653,7 @@ abstract public class KylinConfigBase implements Serializable { } public long getPartitionMaxScanBytes() { - long value = Long.parseLong( - this.getOptional("kylin.storage.partition.max-scan-bytes", String.valueOf(3L * 1024 * 1024 * 1024))); + long value = Long.parseLong(this.getOptional("kylin.storage.partition.max-scan-bytes", String.valueOf(3L * 1024 * 1024 * 1024))); return value > 0 ? value : Long.MAX_VALUE; } @@ -675,8 +670,7 @@ abstract public class KylinConfigBase implements Serializable { } public String getDefaultIGTStorage() { - return getOptional("kylin.storage.hbase.gtstorage", - "org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC"); + return getOptional("kylin.storage.hbase.gtstorage", "org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC"); } public int getHBaseScanCacheRows() { @@ -950,7 +944,7 @@ abstract public class KylinConfigBase implements Serializable { } public boolean isAdhocEnabled() { - return StringUtils.isNotEmpty(getAdHocRunnerClassName()); + return StringUtils.isNotEmpty(getAdHocRunnerClassName()); } public String getAdHocRunnerClassName() { http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java index cd7b64e..6eba7c5 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java @@ -168,9 +168,7 @@ public class KylinVersion implements Comparable { public static String getKylinClientInformation() { StringBuilder buf = new StringBuilder(); - buf.append("kylin.home: ").append( - KylinConfig.getKylinHome() == null ? "UNKNOWN" : new File(KylinConfig.getKylinHome()).getAbsolutePath()) - .append("\n"); + buf.append("kylin.home: ").append(KylinConfig.getKylinHome() == null ? "UNKNOWN" : new File(KylinConfig.getKylinHome()).getAbsolutePath()).append("\n"); buf.append("kylin.version:").append(KylinVersion.getCurrentVersion()).append("\n"); buf.append("commit:").append(getGitCommitInfo()).append("\n"); buf.append("os.name:").append(System.getProperty("os.name")).append("\n"); @@ -201,4 +199,4 @@ public class KylinVersion implements Comparable { } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/QueryContext.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/QueryContext.java b/core-common/src/main/java/org/apache/kylin/common/QueryContext.java index a2342f0..0b8d519 100644 --- a/core-common/src/main/java/org/apache/kylin/common/QueryContext.java +++ b/core-common/src/main/java/org/apache/kylin/common/QueryContext.java @@ -39,7 +39,7 @@ public class QueryContext { private QueryContext() { // use QueryContext.current() instead - + queryId = UUID.randomUUID().toString(); } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java index 91df47e..8f1fae0 100644 --- a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java +++ b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java @@ -32,14 +32,14 @@ public interface DistributedLock { * Returns the client that owns this instance. */ String getClient(); - + /** * Acquire the lock at given path, non-blocking. * * @return If the lock is acquired or not. */ boolean lock(String lockPath); - + /** * Acquire the lock at given path, block until given timeout. * @@ -51,12 +51,12 @@ public interface DistributedLock { * Returns if lock is available at given path. */ boolean isLocked(String lockPath); - + /** * Returns if lock is available at given path. */ boolean isLockedByMe(String lockPath); - + /** * Returns the owner of a lock path; returns null if the path is not locked by any one. */ @@ -73,7 +73,7 @@ public interface DistributedLock { * Purge all locks under given path. For clean up. */ void purgeLocks(String lockPathRoot); - + /** * Watch lock events under given path, notifies the watcher on all lock/unlock events under the given path root. * @@ -83,7 +83,6 @@ public interface DistributedLock { public interface Watcher { void onLock(String lockPath, String client); - void onUnlock(String lockPath, String client); } } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java index c96c1be..cd1c2b1 100644 --- a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java +++ b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java @@ -35,7 +35,7 @@ public abstract class DistributedLockFactory { private static String threadProcessAndHost() { return Thread.currentThread().getId() + "-" + processAndHost(); } - + private static String processAndHost() { byte[] bytes = ManagementFactory.getRuntimeMXBean().getName().getBytes(); return new String(bytes); http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java b/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java index a935702..82cf451 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java @@ -46,8 +46,7 @@ public class FileResourceStore extends ResourceStore { super(kylinConfig); root = new File(kylinConfig.getMetadataUrl().getIdentifier()).getAbsoluteFile(); if (root.exists() == false) - throw new IllegalArgumentException( - "File not exist by '" + kylinConfig.getMetadataUrl() + "': " + root.getAbsolutePath()); + throw new IllegalArgumentException("File not exist by '" + kylinConfig.getMetadataUrl() + "': " + root.getAbsolutePath()); } @Override @@ -71,8 +70,7 @@ public class FileResourceStore extends ResourceStore { } @Override - synchronized protected List<RawResource> getAllResourcesImpl(String folderPath, long timeStart, - long timeEndExclusive) throws IOException { + synchronized protected List<RawResource> getAllResourcesImpl(String folderPath, long timeStart, long timeEndExclusive) throws IOException { NavigableSet<String> resources = listResources(folderPath); if (resources == null) return Collections.emptyList(); @@ -133,12 +131,10 @@ public class FileResourceStore extends ResourceStore { } @Override - synchronized protected long checkAndPutResourceImpl(String resPath, byte[] content, long oldTS, long newTS) - throws IOException, IllegalStateException { + synchronized protected long checkAndPutResourceImpl(String resPath, byte[] content, long oldTS, long newTS) throws IOException, IllegalStateException { File f = file(resPath); if ((f.exists() && f.lastModified() != oldTS) || (f.exists() == false && oldTS != 0)) - throw new IllegalStateException( - "Overwriting conflict " + resPath + ", expect old TS " + oldTS + ", but found " + f.lastModified()); + throw new IllegalStateException("Overwriting conflict " + resPath + ", expect old TS " + oldTS + ", but found " + f.lastModified()); putResourceImpl(resPath, new ByteArrayInputStream(content), newTS); http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java index 651a6d1..7fb93e7 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java @@ -81,8 +81,7 @@ abstract public class ResourceStore { Class<? extends ResourceStore> cls = ClassUtil.forName(clsName, ResourceStore.class); ResourceStore store = cls.getConstructor(KylinConfig.class).newInstance(kylinConfig); if (!store.exists(METASTORE_UUID_TAG)) { - store.putResource(METASTORE_UUID_TAG, new StringEntity(store.createMetaStoreUUID()), 0, - StringEntity.serializer); + store.putResource(METASTORE_UUID_TAG, new StringEntity(store.createMetaStoreUUID()), 0, StringEntity.serializer); } return store; } catch (Throwable e) { @@ -128,11 +127,9 @@ abstract public class ResourceStore { public String getMetaStoreUUID() throws IOException { if (!exists(ResourceStore.METASTORE_UUID_TAG)) { - putResource(ResourceStore.METASTORE_UUID_TAG, new StringEntity(createMetaStoreUUID()), 0, - StringEntity.serializer); + putResource(ResourceStore.METASTORE_UUID_TAG, new StringEntity(createMetaStoreUUID()), 0, StringEntity.serializer); } - StringEntity entity = getResource(ResourceStore.METASTORE_UUID_TAG, StringEntity.class, - StringEntity.serializer); + StringEntity entity = getResource(ResourceStore.METASTORE_UUID_TAG, StringEntity.class, StringEntity.serializer); return entity.toString(); } @@ -148,8 +145,7 @@ abstract public class ResourceStore { /** * Read a resource, return null in case of not found or is a folder */ - final public <T extends RootPersistentEntity> T getResource(String resPath, Class<T> clz, Serializer<T> serializer) - throws IOException { + final public <T extends RootPersistentEntity> T getResource(String resPath, Class<T> clz, Serializer<T> serializer) throws IOException { resPath = norm(resPath); RawResource res = getResourceImpl(resPath); if (res == null) @@ -177,16 +173,14 @@ abstract public class ResourceStore { /** * Read all resources under a folder. Return empty list if folder not exist. */ - final public <T extends RootPersistentEntity> List<T> getAllResources(String folderPath, Class<T> clazz, - Serializer<T> serializer) throws IOException { + final public <T extends RootPersistentEntity> List<T> getAllResources(String folderPath, Class<T> clazz, Serializer<T> serializer) throws IOException { return getAllResources(folderPath, Long.MIN_VALUE, Long.MAX_VALUE, clazz, serializer); } /** * Read all resources under a folder having last modified time between given range. Return empty list if folder not exist. */ - final public <T extends RootPersistentEntity> List<T> getAllResources(String folderPath, long timeStart, - long timeEndExclusive, Class<T> clazz, Serializer<T> serializer) throws IOException { + final public <T extends RootPersistentEntity> List<T> getAllResources(String folderPath, long timeStart, long timeEndExclusive, Class<T> clazz, Serializer<T> serializer) throws IOException { final List<RawResource> allResources = getAllResourcesImpl(folderPath, timeStart, timeEndExclusive); if (allResources == null || allResources.isEmpty()) { return Collections.emptyList(); @@ -207,8 +201,7 @@ abstract public class ResourceStore { } } - abstract protected List<RawResource> getAllResourcesImpl(String folderPath, long timeStart, long timeEndExclusive) - throws IOException; + abstract protected List<RawResource> getAllResourcesImpl(String folderPath, long timeStart, long timeEndExclusive) throws IOException; /** * returns null if not exists @@ -239,16 +232,14 @@ abstract public class ResourceStore { /** * check & set, overwrite a resource */ - final public <T extends RootPersistentEntity> long putResource(String resPath, T obj, Serializer<T> serializer) - throws IOException { + final public <T extends RootPersistentEntity> long putResource(String resPath, T obj, Serializer<T> serializer) throws IOException { return putResource(resPath, obj, System.currentTimeMillis(), serializer); } /** * check & set, overwrite a resource */ - final public <T extends RootPersistentEntity> long putResource(String resPath, T obj, long newTS, - Serializer<T> serializer) throws IOException { + final public <T extends RootPersistentEntity> long putResource(String resPath, T obj, long newTS, Serializer<T> serializer) throws IOException { resPath = norm(resPath); //logger.debug("Saving resource " + resPath + " (Store " + kylinConfig.getMetadataUrl() + ")"); @@ -274,8 +265,7 @@ abstract public class ResourceStore { } } - private long checkAndPutResourceCheckpoint(String resPath, byte[] content, long oldTS, long newTS) - throws IOException { + private long checkAndPutResourceCheckpoint(String resPath, byte[] content, long oldTS, long newTS) throws IOException { beforeChange(resPath); return checkAndPutResourceImpl(resPath, content, oldTS, newTS); } @@ -283,8 +273,7 @@ abstract public class ResourceStore { /** * checks old timestamp when overwriting existing */ - abstract protected long checkAndPutResourceImpl(String resPath, byte[] content, long oldTS, long newTS) - throws IOException, IllegalStateException; + abstract protected long checkAndPutResourceImpl(String resPath, byte[] content, long oldTS, long newTS) throws IOException, IllegalStateException; /** * delete a resource, does nothing on a folder http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java index 4702f70..6ba68ae 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java @@ -134,16 +134,16 @@ public class ResourceTool { ResourceStore dst = ResourceStore.getStore(dstConfig); logger.info("Copy from {} to {}", src, dst); - + copyR(src, dst, path); } public static void copy(KylinConfig srcConfig, KylinConfig dstConfig, List<String> paths) throws IOException { ResourceStore src = ResourceStore.getStore(srcConfig); ResourceStore dst = ResourceStore.getStore(dstConfig); - + logger.info("Copy from {} to {}", src, dst); - + for (String path : paths) { copyR(src, dst, path); } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java b/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java index f25976f..84d7303 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java @@ -18,12 +18,12 @@ package org.apache.kylin.common.persistence; +import org.apache.commons.lang.StringUtils; + import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -import org.apache.commons.lang.StringUtils; - public class StringEntity extends RootPersistentEntity { public static final Serializer<StringEntity> serializer = new Serializer<StringEntity>() { @@ -66,4 +66,4 @@ public class StringEntity extends RootPersistentEntity { public String toString() { return str; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java index b0721d0..33a4e7a 100644 --- a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java +++ b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java @@ -27,8 +27,7 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.xml.bind.DatatypeConverter; - +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.io.IOUtils; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; @@ -47,7 +46,7 @@ import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import org.apache.kylin.common.util.JsonUtil; -import com.fasterxml.jackson.databind.ObjectMapper; +import javax.xml.bind.DatatypeConverter; /** * @author yangli9 @@ -123,8 +122,7 @@ public class RestClient { String msg = EntityUtils.toString(response.getEntity()); if (response.getStatusLine().getStatusCode() != 200) - throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() - + " with cache wipe url " + url + "\n" + msg); + throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() + " with cache wipe url " + url + "\n" + msg); } catch (Exception ex) { throw new IOException(ex); } finally { @@ -142,8 +140,7 @@ public class RestClient { msg = map.get("config"); if (response.getStatusLine().getStatusCode() != 200) - throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() - + " with cache wipe url " + url + "\n" + msg); + throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() + " with cache wipe url " + url + "\n" + msg); return msg; } finally { request.releaseConnection(); @@ -170,8 +167,7 @@ public class RestClient { HttpResponse response = client.execute(put); String result = getContent(response); if (response.getStatusLine().getStatusCode() != 200) { - throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() - + " with build cube url " + url + "\n" + jsonMsg); + throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() + " with build cube url " + url + "\n" + jsonMsg); } else { return true; } @@ -205,8 +201,7 @@ public class RestClient { HttpResponse response = client.execute(put); String result = getContent(response); if (response.getStatusLine().getStatusCode() != 200) { - throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() + " with url " + url - + "\n" + jsonMsg); + throw new IOException("Invalid response " + response.getStatusLine().getStatusCode() + " with url " + url + "\n" + jsonMsg); } else { return true; } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java b/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java index 50b8e62..fc501ea 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java @@ -284,8 +284,7 @@ public class Bytes { len = b.length - off; for (int i = off; i < off + len; ++i) { int ch = b[i] & 0xFF; - if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') - || " `~!@#$%^&*()-_=+[]{}|;:'\",.<>/?".indexOf(ch) >= 0) { + if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || " `~!@#$%^&*()-_=+[]{}|;:'\",.<>/?".indexOf(ch) >= 0) { result.append((char) ch); } else { result.append(String.format("\\x%02X", ch)); @@ -442,14 +441,12 @@ public class Bytes { } } - private static IllegalArgumentException explainWrongLengthOrOffset(final byte[] bytes, final int offset, - final int length, final int expectedLength) { + private static IllegalArgumentException explainWrongLengthOrOffset(final byte[] bytes, final int offset, final int length, final int expectedLength) { String reason; if (length != expectedLength) { reason = "Wrong length: " + length + ", expected " + expectedLength; } else { - reason = "offset (" + offset + ") + length (" + length + ") exceed the" + " capacity of the array: " - + bytes.length; + reason = "offset (" + offset + ") + length (" + length + ") exceed the" + " capacity of the array: " + bytes.length; } return new IllegalArgumentException(reason); } @@ -466,8 +463,7 @@ public class Bytes { */ public static int putLong(byte[] bytes, int offset, long val) { if (bytes.length - offset < SIZEOF_LONG) { - throw new IllegalArgumentException( - "Not enough room to put a long at" + " offset " + offset + " in a " + bytes.length + " byte array"); + throw new IllegalArgumentException("Not enough room to put a long at" + " offset " + offset + " in a " + bytes.length + " byte array"); } if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.isAvailable()) { return putLongUnsafe(bytes, offset, val); @@ -493,10 +489,7 @@ public class Bytes { if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian) { val = Long.reverseBytes(val); } - org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putLong(bytes, - (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, - val); + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putLong(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, val); return offset + SIZEOF_LONG; } @@ -652,14 +645,9 @@ public class Bytes { */ public static int toIntUnsafe(byte[] bytes, int offset) { if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian) { - return Integer.reverseBytes( - org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe - .getInt(bytes, (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET)); + return Integer.reverseBytes(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getInt(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET)); } else { - return org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe - .getInt(bytes, (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET); + return org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getInt(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET); } } @@ -672,14 +660,9 @@ public class Bytes { */ public static short toShortUnsafe(byte[] bytes, int offset) { if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian) { - return Short.reverseBytes( - org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe - .getShort(bytes, (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET)); + return Short.reverseBytes(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getShort(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET)); } else { - return org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe - .getShort(bytes, (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET); + return org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getShort(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET); } } @@ -692,14 +675,9 @@ public class Bytes { */ public static long toLongUnsafe(byte[] bytes, int offset) { if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian) { - return Long.reverseBytes( - org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe - .getLong(bytes, (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET)); + return Long.reverseBytes(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getLong(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET)); } else { - return org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe - .getLong(bytes, (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET); + return org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getLong(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET); } } @@ -715,8 +693,7 @@ public class Bytes { */ public static int readAsInt(byte[] bytes, int offset, final int length) { if (offset + length > bytes.length) { - throw new IllegalArgumentException("offset (" + offset + ") + length (" + length + ") exceed the" - + " capacity of the array: " + bytes.length); + throw new IllegalArgumentException("offset (" + offset + ") + length (" + length + ") exceed the" + " capacity of the array: " + bytes.length); } int n = 0; for (int i = offset; i < (offset + length); i++) { @@ -738,8 +715,7 @@ public class Bytes { */ public static int putInt(byte[] bytes, int offset, int val) { if (bytes.length - offset < SIZEOF_INT) { - throw new IllegalArgumentException( - "Not enough room to put an int at" + " offset " + offset + " in a " + bytes.length + " byte array"); + throw new IllegalArgumentException("Not enough room to put an int at" + " offset " + offset + " in a " + bytes.length + " byte array"); } if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.isAvailable()) { return putIntUnsafe(bytes, offset, val); @@ -765,10 +741,7 @@ public class Bytes { if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian) { val = Integer.reverseBytes(val); } - org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putInt(bytes, - (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, - val); + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putInt(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, val); return offset + SIZEOF_INT; } @@ -857,8 +830,7 @@ public class Bytes { */ public static int putShort(byte[] bytes, int offset, short val) { if (bytes.length - offset < SIZEOF_SHORT) { - throw new IllegalArgumentException("Not enough room to put a short at" + " offset " + offset + " in a " - + bytes.length + " byte array"); + throw new IllegalArgumentException("Not enough room to put a short at" + " offset " + offset + " in a " + bytes.length + " byte array"); } if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.isAvailable()) { return putShortUnsafe(bytes, offset, val); @@ -882,10 +854,7 @@ public class Bytes { if (org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian) { val = Short.reverseBytes(val); } - org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putShort(bytes, - (long) offset - + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, - val); + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putShort(bytes, (long) offset + org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET, val); return offset + SIZEOF_SHORT; } @@ -904,8 +873,7 @@ public class Bytes { */ public static int putAsShort(byte[] bytes, int offset, int val) { if (bytes.length - offset < SIZEOF_SHORT) { - throw new IllegalArgumentException("Not enough room to put a short at" + " offset " + offset + " in a " - + bytes.length + " byte array"); + throw new IllegalArgumentException("Not enough room to put a short at" + " offset " + offset + " in a " + bytes.length + " byte array"); } bytes[offset + 1] = (byte) val; val >>= 8; @@ -996,8 +964,7 @@ public class Bytes { * @return 0 if equal, < 0 if left is less than right, etc. */ public static int compareTo(byte[] buffer1, int offset1, int length1, byte[] buffer2, int offset2, int length2) { - return LexicographicalComparerHolder.BEST_COMPARER.compareTo(buffer1, offset1, length1, buffer2, offset2, - length2); + return LexicographicalComparerHolder.BEST_COMPARER.compareTo(buffer1, offset1, length1, buffer2, offset2, length2); } interface Comparer<T> { @@ -1151,8 +1118,8 @@ public class Bytes { } final int minLength = Math.min(length1, length2); final int minWords = minLength / SIZEOF_LONG; - final long offset1Adj = offset1 + (long) BYTE_ARRAY_BASE_OFFSET; - final long offset2Adj = offset2 + (long) BYTE_ARRAY_BASE_OFFSET; + final long offset1Adj = offset1 + (long)BYTE_ARRAY_BASE_OFFSET; + final long offset2Adj = offset2 + (long)BYTE_ARRAY_BASE_OFFSET; /* * Compare 8 bytes at a time. Benchmarking shows comparing 8 bytes at a @@ -1235,8 +1202,7 @@ public class Bytes { return compareTo(left, right) == 0; } - public static boolean equals(final byte[] left, int leftOffset, int leftLen, final byte[] right, int rightOffset, - int rightLen) { + public static boolean equals(final byte[] left, int leftOffset, int leftLen, final byte[] right, int rightOffset, int rightLen) { // short circuit case if (left == right && leftOffset == rightOffset && leftLen == rightLen) { return true; @@ -1255,8 +1221,7 @@ public class Bytes { if (left[leftOffset + leftLen - 1] != right[rightOffset + rightLen - 1]) return false; - return LexicographicalComparerHolder.BEST_COMPARER.compareTo(left, leftOffset, leftLen, right, rightOffset, - rightLen) == 0; + return LexicographicalComparerHolder.BEST_COMPARER.compareTo(left, leftOffset, leftLen, right, rightOffset, rightLen) == 0; } /** @@ -1287,9 +1252,7 @@ public class Bytes { * array on the left. */ public static boolean startsWith(byte[] bytes, byte[] prefix) { - return bytes != null && prefix != null && bytes.length >= prefix.length - && LexicographicalComparerHolder.BEST_COMPARER.compareTo(bytes, 0, prefix.length, prefix, 0, - prefix.length) == 0; + return bytes != null && prefix != null && bytes.length >= prefix.length && LexicographicalComparerHolder.BEST_COMPARER.compareTo(bytes, 0, prefix.length, prefix, 0, prefix.length) == 0; } /** @@ -1677,8 +1640,7 @@ public class Bytes { public static void writeStringFixedSize(final DataOutput out, String s, int size) throws IOException { byte[] b = toBytes(s); if (b.length > size) { - throw new IOException("Trying to write " + b.length + " bytes (" + toStringBinary(b) - + ") into a field of length " + size); + throw new IOException("Trying to write " + b.length + " bytes (" + toStringBinary(b) + ") into a field of length " + size); } out.writeBytes(s); @@ -1980,8 +1942,7 @@ public class Bytes { hex = hex.toUpperCase(); byte[] b = new byte[hex.length() / 2]; for (int i = 0; i < b.length; i++) { - b[i] = (byte) ((toBinaryFromHex((byte) hex.charAt(2 * i)) << 4) - + (toBinaryFromHex((byte) hex.charAt((2 * i + 1))) & 0xff)); + b[i] = (byte) ((toBinaryFromHex((byte) hex.charAt(2 * i)) << 4) + (toBinaryFromHex((byte) hex.charAt((2 * i + 1))) & 0xff)); } return b; } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java b/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java index 8502b9c..c644890 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java @@ -29,8 +29,7 @@ import org.slf4j.LoggerFactory; public class BytesSplitter { private static final Logger logger = LoggerFactory.getLogger(BytesSplitter.class); - private static final int[] COMMON_DELIMS = new int[] { "\177".codePointAt(0), "|".codePointAt(0), - "\t".codePointAt(0), ",".codePointAt(0) }; + private static final int[] COMMON_DELIMS = new int[] { "\177".codePointAt(0), "|".codePointAt(0), "\t".codePointAt(0), ",".codePointAt(0) }; private SplittedBytes[] splitBuffers; private int bufferSize; http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java b/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java index dfca33c..0eb1af5 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java @@ -58,23 +58,15 @@ public class ClassUtil { private static final Map<String, String> classRenameMap; static { classRenameMap = new HashMap<>(); - classRenameMap.put("org.apache.kylin.job.common.HadoopShellExecutable", - "org.apache.kylin.engine.mr.common.HadoopShellExecutable"); - classRenameMap.put("org.apache.kylin.job.common.MapReduceExecutable", - "org.apache.kylin.engine.mr.common.MapReduceExecutable"); + classRenameMap.put("org.apache.kylin.job.common.HadoopShellExecutable", "org.apache.kylin.engine.mr.common.HadoopShellExecutable"); + classRenameMap.put("org.apache.kylin.job.common.MapReduceExecutable", "org.apache.kylin.engine.mr.common.MapReduceExecutable"); classRenameMap.put("org.apache.kylin.job.cube.CubingJob", "org.apache.kylin.engine.mr.CubingJob"); - classRenameMap.put("org.apache.kylin.job.cube.GarbageCollectionStep", - "org.apache.kylin.storage.hbase.steps.DeprecatedGCStep"); - classRenameMap.put("org.apache.kylin.job.cube.MergeDictionaryStep", - "org.apache.kylin.engine.mr.steps.MergeDictionaryStep"); - classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterBuildStep", - "org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterBuildStep"); - classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterMergeStep", - "org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterMergeStep"); - classRenameMap.put("org.apache.kylin.rest.util.KeywordDefaultDirtyHack", - "org.apache.kylin.query.util.KeywordDefaultDirtyHack"); - classRenameMap.put("org.apache.kylin.rest.util.CognosParenthesesEscape", - "org.apache.kylin.query.util.CognosParenthesesEscape"); + classRenameMap.put("org.apache.kylin.job.cube.GarbageCollectionStep", "org.apache.kylin.storage.hbase.steps.DeprecatedGCStep"); + classRenameMap.put("org.apache.kylin.job.cube.MergeDictionaryStep", "org.apache.kylin.engine.mr.steps.MergeDictionaryStep"); + classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterBuildStep", "org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterBuildStep"); + classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterMergeStep", "org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterMergeStep"); + classRenameMap.put("org.apache.kylin.rest.util.KeywordDefaultDirtyHack", "org.apache.kylin.query.util.KeywordDefaultDirtyHack"); + classRenameMap.put("org.apache.kylin.rest.util.CognosParenthesesEscape", "org.apache.kylin.query.util.CognosParenthesesEscape"); } @SuppressWarnings("unchecked") http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java b/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java index 2f7b9c5..365caa8 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java @@ -40,9 +40,9 @@ public class ClasspathScanner { } System.exit(0); } - + final int[] hitCount = new int[1]; - + scanner.scan("", new ResourceVisitor() { public void accept(File dir, String relativeFileName) { check(dir.getAbsolutePath(), relativeFileName.replace('\\', '/')); @@ -64,7 +64,7 @@ public class ClasspathScanner { } } }); - + int exitCode = hitCount[0] > 0 ? 0 : 1; System.exit(exitCode); } @@ -118,9 +118,9 @@ public class ClasspathScanner { break; loader = loader.getParent(); } - + List<File> roots = new ArrayList(); - + // parent first for (int i = loaders.size() - 1; i >= 0; i--) { ClassLoader l = loaders.get(i); @@ -336,4 +336,4 @@ public class ClasspathScanner { return j == slen; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java b/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java index 32c7104..7bd520c 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java @@ -46,8 +46,7 @@ public class CompressionUtils { outputStream.close(); byte[] output = outputStream.toByteArray(); - logger.debug("Original: " + data.length + " bytes. " + "Compressed: " + output.length + " byte. Time: " - + (System.currentTimeMillis() - startTime)); + logger.debug("Original: " + data.length + " bytes. " + "Compressed: " + output.length + " byte. Time: " + (System.currentTimeMillis() - startTime)); return output; } @@ -65,8 +64,7 @@ public class CompressionUtils { outputStream.close(); byte[] output = outputStream.toByteArray(); - logger.debug("Original: " + data.length + " bytes. " + "Decompressed: " + output.length + " bytes. Time: " - + (System.currentTimeMillis() - startTime)); + logger.debug("Original: " + data.length + " bytes. " + "Decompressed: " + output.length + " bytes. Time: " + (System.currentTimeMillis() - startTime)); return output; } } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java b/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java index 0265da4..9ecd3c3 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java @@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory; public class DBUtils { private static final Logger logger = LoggerFactory.getLogger(DBUtils.class); - + /** * Closes an <code>ResultSet</code> unconditionally. * <p> http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java index eb4d570..29858f1 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java @@ -48,7 +48,7 @@ public class DateFormat { } return r; } - + public static String formatToCompactDateStr(long millis) { return formatToDateStr(millis, COMPACT_DATE_PATTERN); } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java b/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java index 70dfa30..f242515 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java @@ -68,21 +68,21 @@ public class HadoopUtil { public static FileSystem getWorkingFileSystem() throws IOException { return getFileSystem(KylinConfig.getInstanceFromEnv().getHdfsWorkingDirectory()); } - + public static FileSystem getWorkingFileSystem(Configuration conf) throws IOException { Path workingPath = new Path(KylinConfig.getInstanceFromEnv().getHdfsWorkingDirectory()); return getFileSystem(workingPath, conf); } - + public static FileSystem getFileSystem(String path) throws IOException { return getFileSystem(new Path(makeURI(path))); } - + public static FileSystem getFileSystem(Path path) throws IOException { Configuration conf = getCurrentConfiguration(); return getFileSystem(path, conf); } - + public static FileSystem getFileSystem(Path path, Configuration conf) { try { return path.getFileSystem(conf); http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java b/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java index b349443..f14ac98 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java @@ -58,8 +58,7 @@ public class ImplementationSwitch<I> { public synchronized I get(int id) { String clzName = impls.get(id); if (clzName == null) { - throw new IllegalArgumentException( - "Implementation class missing, ID " + id + ", interface " + interfaceClz.getName()); + throw new IllegalArgumentException("Implementation class missing, ID " + id + ", interface " + interfaceClz.getName()); } @SuppressWarnings("unchecked") @@ -75,8 +74,7 @@ public class ImplementationSwitch<I> { } if (result == null) - throw new IllegalArgumentException( - "Implementations missing, ID " + id + ", interface " + interfaceClz.getName()); + throw new IllegalArgumentException("Implementations missing, ID " + id + ", interface " + interfaceClz.getName()); return result; } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java b/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java index 23f0fbc..216abae 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java @@ -46,28 +46,23 @@ public class JsonUtil { indentMapper.configure(SerializationFeature.INDENT_OUTPUT, true); } - public static <T> T readValue(File src, Class<T> valueType) - throws IOException, JsonParseException, JsonMappingException { + public static <T> T readValue(File src, Class<T> valueType) throws IOException, JsonParseException, JsonMappingException { return mapper.readValue(src, valueType); } - public static <T> T readValue(String content, Class<T> valueType) - throws IOException, JsonParseException, JsonMappingException { + public static <T> T readValue(String content, Class<T> valueType) throws IOException, JsonParseException, JsonMappingException { return mapper.readValue(content, valueType); } - public static <T> T readValue(Reader src, Class<T> valueType) - throws IOException, JsonParseException, JsonMappingException { + public static <T> T readValue(Reader src, Class<T> valueType) throws IOException, JsonParseException, JsonMappingException { return mapper.readValue(src, valueType); } - public static <T> T readValue(InputStream src, Class<T> valueType) - throws IOException, JsonParseException, JsonMappingException { + public static <T> T readValue(InputStream src, Class<T> valueType) throws IOException, JsonParseException, JsonMappingException { return mapper.readValue(src, valueType); } - public static <T> T readValue(byte[] src, Class<T> valueType) - throws IOException, JsonParseException, JsonMappingException { + public static <T> T readValue(byte[] src, Class<T> valueType) throws IOException, JsonParseException, JsonMappingException { return mapper.readValue(src, valueType); } @@ -77,13 +72,11 @@ public class JsonUtil { return mapper.readValue(content, typeRef); } - public static void writeValueIndent(OutputStream out, Object value) - throws IOException, JsonGenerationException, JsonMappingException { + public static void writeValueIndent(OutputStream out, Object value) throws IOException, JsonGenerationException, JsonMappingException { indentMapper.writeValue(out, value); } - public static void writeValue(OutputStream out, Object value) - throws IOException, JsonGenerationException, JsonMappingException { + public static void writeValue(OutputStream out, Object value) throws IOException, JsonGenerationException, JsonMappingException { mapper.writeValue(out, value); } http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/MailService.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/MailService.java b/core-common/src/main/java/org/apache/kylin/common/util/MailService.java index cee33aa..25bc03c 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/MailService.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/MailService.java @@ -42,12 +42,10 @@ public class MailService { private String sender; public MailService(KylinConfig config) { - this(config.isMailEnabled(), config.isStarttlsEnabled(), config.getMailHost(), config.getSmtpPort(), - config.getMailUsername(), config.getMailPassword(), config.getMailSender()); + this(config.isMailEnabled(), config.isStarttlsEnabled(), config.getMailHost(), config.getSmtpPort(), config.getMailUsername(), config.getMailPassword(), config.getMailSender()); } - private MailService(boolean enabled, boolean starttlsEnabled, String host, String port, String username, - String password, String sender) { + private MailService(boolean enabled, boolean starttlsEnabled, String host, String port, String username, String password, String sender) { this.enabled = enabled; this.starttlsEnabled = starttlsEnabled; this.host = host; @@ -97,7 +95,7 @@ public class MailService { } else { email.setSmtpPort(Integer.valueOf(port)); } - + if (username != null && username.trim().length() > 0) { email.setAuthentication(username, password); }