Repository: tajo Updated Branches: refs/heads/master 4189f91d7 -> 0f1e1df48
TAJO-1920: Calling 'Collection.toArray()' with zero-length array argument makes performance worse. (Dongkyu Hwangbo via hyunsik) Closes #816 Project: http://git-wip-us.apache.org/repos/asf/tajo/repo Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/0f1e1df4 Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/0f1e1df4 Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/0f1e1df4 Branch: refs/heads/master Commit: 0f1e1df48aa3d393764b172b42a1458f3ab8a2ae Parents: 4189f91 Author: Dongkyu Hwangbo <[email protected]> Authored: Mon Nov 2 09:40:06 2015 -0800 Committer: Hyunsik Choi <[email protected]> Committed: Mon Nov 2 09:40:41 2015 -0800 ---------------------------------------------------------------------- CHANGES | 3 +++ .../org/apache/tajo/algebra/TruncateTable.java | 2 +- .../tajo/engine/query/TestGroupByQuery.java | 2 +- .../tajo/engine/query/TestHBaseTable.java | 18 +++++++------- .../tajo/engine/query/TestTablePartitions.java | 2 +- .../java/org/apache/tajo/util/TestJSPUtil.java | 8 +++--- .../engine/planner/PhysicalPlannerImpl.java | 2 +- .../global/builder/DistinctGroupbyBuilder.java | 26 ++++++++++---------- .../DistinctGroupbyThirdAggregationExec.java | 2 +- .../planner/physical/PhysicalPlanUtil.java | 2 +- .../exec/NonForwardQueryResultFileScanner.java | 2 +- .../tajo/querymaster/DefaultTaskScheduler.java | 3 ++- .../java/org/apache/tajo/querymaster/Task.java | 4 +-- .../tajo/plan/logical/DistinctGroupbyNode.java | 2 +- .../tajo/storage/hbase/HBaseTablespace.java | 2 +- .../storage/hbase/SortedInsertRewriter.java | 2 +- .../tajo/storage/fragment/FileFragment.java | 3 ++- 17 files changed, 45 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 4f5c63b..ebcc3c8 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,9 @@ Release 0.12.0 - unreleased IMPROVEMENT + TAJO-1920: Calling 'Collection.toArray()' with zero-length array argument + makes performance worse. (Dongkyu Hwangbo via hyunsik) + TAJO-1911: Change guava's Optional to Java's Optional. (hyunsik) TAJO-1850: Using TUtil.newHash(Set/Map) should be replaced by Java's http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-algebra/src/main/java/org/apache/tajo/algebra/TruncateTable.java ---------------------------------------------------------------------- diff --git a/tajo-algebra/src/main/java/org/apache/tajo/algebra/TruncateTable.java b/tajo-algebra/src/main/java/org/apache/tajo/algebra/TruncateTable.java index ae6efa7..174bbad 100644 --- a/tajo-algebra/src/main/java/org/apache/tajo/algebra/TruncateTable.java +++ b/tajo-algebra/src/main/java/org/apache/tajo/algebra/TruncateTable.java @@ -46,6 +46,6 @@ public class TruncateTable extends Expr { @Override boolean equalsTo(Expr expr) { TruncateTable another = (TruncateTable) expr; - return Arrays.equals(tableNames.toArray(new String[]{}), another.tableNames.toArray(new String[]{})); + return Arrays.equals(tableNames.toArray(new String[tableNames.size()]), another.tableNames.toArray(new String[another.tableNames.size()])); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java index e523a19..cc9028b 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java @@ -716,7 +716,7 @@ public class TestGroupByQuery extends QueryTestCaseBase { break; } } - TajoTestingCluster.createTable("testnumshufflepartition", schema, tableOptions, data.toArray(new String[]{}), 3); + TajoTestingCluster.createTable("testnumshufflepartition", schema, tableOptions, data.toArray(new String[data.size()]), 3); try { testingCluster.setAllTajoDaemonConfValue(ConfVars.$DIST_QUERY_GROUPBY_PARTITION_VOLUME.varname, "2"); http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java index 3583f6d..395b981 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java @@ -792,7 +792,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(df.format(i) + "|value" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString("insert into hbase_mapped_table " + "select id, name from base_table ").close(); @@ -847,7 +847,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(i + "|value" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString("insert into hbase_mapped_table " + "select id, name from base_table ").close(); @@ -906,7 +906,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(df.format(i) + "|value" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString("insert into hbase_mapped_table " + "select id, name from base_table ").close(); @@ -965,7 +965,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(df.format(i) + "|" + (i + 100) + "|value" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString("insert into hbase_mapped_table " + "select id1, id2, name from base_table ").close(); @@ -1020,7 +1020,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(i + "|value" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString("insert into hbase_mapped_table " + "select id, name from base_table ").close(); @@ -1080,7 +1080,7 @@ public class TestHBaseTable extends QueryTestCaseBase { } } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString("insert into hbase_mapped_table " + "select rk, col2_key, col2_value, col3 from base_table ").close(); @@ -1165,7 +1165,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(i + "|value" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); try { executeString("insert into hbase_mapped_table " + @@ -1238,7 +1238,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(df.format(i) + "|value" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString( "CREATE TABLE hbase_mapped_table (rk text, col1 text) TABLESPACE cluster1 " + @@ -1360,7 +1360,7 @@ public class TestHBaseTable extends QueryTestCaseBase { datas.add(df.format(i) + "|value" + i + "|comment-" + i); } TajoTestingCluster.createTable(getCurrentDatabase() + ".base_table", - schema, tableOptions, datas.toArray(new String[]{}), 2); + schema, tableOptions, datas.toArray(new String[datas.size()]), 2); executeString("insert into location '/tmp/hfile_test' " + "select id, name, comment from base_table ").close(); http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java index e8ca0da..b4bc8ee 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java @@ -1119,7 +1119,7 @@ public class TestTablePartitions extends QueryTestCaseBase { index++; } - TajoTestingCluster.createTable("testscatteredhashshuffle", schema, tableOptions, data.toArray(new String[]{}), 3); + TajoTestingCluster.createTable("testscatteredhashshuffle", schema, tableOptions, data.toArray(new String[data.size()]), 3); CatalogService catalog = testingCluster.getMaster().getCatalog(); assertTrue(catalog.existsTable("default", "testscatteredhashshuffle")); http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core-tests/src/test/java/org/apache/tajo/util/TestJSPUtil.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/util/TestJSPUtil.java b/tajo-core-tests/src/test/java/org/apache/tajo/util/TestJSPUtil.java index 3711f4f..282b160 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/util/TestJSPUtil.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/util/TestJSPUtil.java @@ -59,24 +59,24 @@ public class TestJSPUtil { Collections.shuffle(tasks); - Task[] taskArray = tasks.toArray(new Task[]{}); + Task[] taskArray = tasks.toArray(new Task[tasks.size()]); JSPUtil.sortTaskArray(taskArray, "id", "asc"); for (int i = 0; i < 10; i++) { assertEquals(i, taskArray[i].getId().getId()); } - taskArray = tasks.toArray(new Task[]{}); + taskArray = tasks.toArray(new Task[tasks.size()]); JSPUtil.sortTaskArray(taskArray, "id", "desc"); for (int i = 0; i < 10; i++) { assertEquals(9 - i, taskArray[i].getId().getId()); } - taskArray = tasks.toArray(new Task[]{}); + taskArray = tasks.toArray(new Task[tasks.size()]); JSPUtil.sortTaskArray(taskArray, "runTime", "asc"); assertEquals(0, taskArray[0].getId().getId()); assertEquals(9, taskArray[9].getId().getId()); - taskArray = tasks.toArray(new Task[]{}); + taskArray = tasks.toArray(new Task[tasks.size()]); JSPUtil.sortTaskArray(taskArray, "runTime", "desc"); assertEquals(8, taskArray[0].getId().getId()); assertEquals(9, taskArray[9].getId().getId()); http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java index 0cfcee5..c6db96d 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/PhysicalPlannerImpl.java @@ -1110,7 +1110,7 @@ public class PhysicalPlannerImpl implements PhysicalPlanner { sortSpecs.add(new SortSpec(eachColumn)); } } - sortNode.setSortSpecs(sortSpecs.toArray(new SortSpec[]{})); + sortNode.setSortSpecs(sortSpecs.toArray(new SortSpec[sortSpecs.size()])); sortNode.setInSchema(distinctNode.getInSchema()); sortNode.setOutSchema(distinctNode.getInSchema()); ExternalSortExec sortExec = new ExternalSortExec(context, sortNode, subOp); http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java index 075ec15..058a11b 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java @@ -229,7 +229,7 @@ public class DistinctGroupbyBuilder { groupingColumns.add(eachGroupingColumn); } } - distinctGroupbyNode.setGroupingColumns(groupingColumns.toArray(new Column[]{})); + distinctGroupbyNode.setGroupingColumns(groupingColumns.toArray(new Column[groupingColumns.size()])); } buildInfo.addAggFunction(aggFunction); buildInfo.addAggFunctionTarget(aggFunctionTarget); @@ -262,7 +262,7 @@ public class DistinctGroupbyBuilder { targets[targetIdx++] = eachAggFunctionTarget; } eachGroupbyNode.setTargets(targets); - eachGroupbyNode.setAggFunctions(groupbyAggFunctions.toArray(new AggregationFunctionCallEval[]{})); + eachGroupbyNode.setAggFunctions(groupbyAggFunctions.toArray(new AggregationFunctionCallEval[groupbyAggFunctions.size()])); eachGroupbyNode.setDistinct(true); eachGroupbyNode.setInSchema(groupbyNode.getInSchema()); @@ -283,14 +283,14 @@ public class DistinctGroupbyBuilder { otherGroupbyNode.setTargets(targets); otherGroupbyNode.setGroupingColumns(new Column[]{}); - otherGroupbyNode.setAggFunctions(otherAggregationFunctionCallEvals.toArray(new AggregationFunctionCallEval[]{})); + otherGroupbyNode.setAggFunctions(otherAggregationFunctionCallEvals.toArray(new AggregationFunctionCallEval[otherAggregationFunctionCallEvals.size()])); otherGroupbyNode.setInSchema(groupbyNode.getInSchema()); childGroupbyNodes.add(otherGroupbyNode); } DistinctGroupbyNode baseDistinctNode = new DistinctGroupbyNode(context.getPlan().getLogicalPlan().newPID()); - baseDistinctNode.setTargets(baseGroupByTargets.toArray(new Target[]{})); + baseDistinctNode.setTargets(baseGroupByTargets.toArray(new Target[baseGroupByTargets.size()])); baseDistinctNode.setGroupingColumns(groupbyNode.getGroupingColumns()); baseDistinctNode.setInSchema(groupbyNode.getInSchema()); baseDistinctNode.setChild(groupbyNode.getChild()); @@ -399,7 +399,7 @@ public class DistinctGroupbyBuilder { groupingColumns.add(eachGroupingColumn); } } - distinctGroupbyNode.setGroupingColumns(groupingColumns.toArray(new Column[]{})); + distinctGroupbyNode.setGroupingColumns(groupingColumns.toArray(new Column[groupingColumns.size()])); } buildInfo.addAggFunction(aggFunction); buildInfo.addAggFunctionTarget(aggFunctionTarget); @@ -425,7 +425,7 @@ public class DistinctGroupbyBuilder { targets[targetIdx++] = eachAggFunctionTarget; } eachGroupbyNode.setTargets(targets); - eachGroupbyNode.setAggFunctions(groupbyAggFunctions.toArray(new AggregationFunctionCallEval[]{})); + eachGroupbyNode.setAggFunctions(groupbyAggFunctions.toArray(new AggregationFunctionCallEval[groupbyAggFunctions.size()])); eachGroupbyNode.setDistinct(true); eachGroupbyNode.setInSchema(groupbyNode.getInSchema()); @@ -448,8 +448,8 @@ public class DistinctGroupbyBuilder { } otherGroupbyNode.setTargets(targets); - otherGroupbyNode.setGroupingColumns(originalGroupingColumns.toArray(new Column[]{})); - otherGroupbyNode.setAggFunctions(otherAggregationFunctionCallEvals.toArray(new AggregationFunctionCallEval[]{})); + otherGroupbyNode.setGroupingColumns(originalGroupingColumns.toArray(new Column[originalGroupingColumns.size()])); + otherGroupbyNode.setAggFunctions(otherAggregationFunctionCallEvals.toArray(new AggregationFunctionCallEval[otherAggregationFunctionCallEvals.size()])); otherGroupbyNode.setInSchema(groupbyNode.getInSchema()); childGroupbyNodes.add(otherGroupbyNode); @@ -530,12 +530,12 @@ public class DistinctGroupbyBuilder { Target target = new Target(new FieldEval(column)); firstGroupbyTargets.add(target); } - firstStageGroupbyNode.setTargets(firstGroupbyTargets.toArray(new Target[]{})); + firstStageGroupbyNode.setTargets(firstGroupbyTargets.toArray(new Target[firstGroupbyTargets.size()])); // SecondStage: // Set grouping column with origin groupby's columns // Remove distinct group column from targets - secondStageGroupbyNode.setGroupingColumns(originGroupColumns.toArray(new Column[]{})); + secondStageGroupbyNode.setGroupingColumns(originGroupColumns.toArray(new Column[originGroupColumns.size()])); Target[] oldTargets = secondStageGroupbyNode.getTargets(); List<Target> secondGroupbyTargets = new ArrayList<>(); @@ -567,7 +567,7 @@ public class DistinctGroupbyBuilder { } columnIdIndex++; } - secondStageGroupbyNode.setTargets(secondGroupbyTargets.toArray(new Target[]{})); + secondStageGroupbyNode.setTargets(secondGroupbyTargets.toArray(new Target[secondGroupbyTargets.size()])); } else { // FirstStage: Change target of aggFunction to function name expr List<Target> firstGroupbyTargets = new ArrayList<>(); @@ -597,7 +597,7 @@ public class DistinctGroupbyBuilder { columnIdIndex++; aggFuncIdx++; } - firstStageGroupbyNode.setTargets(firstGroupbyTargets.toArray(new Target[]{})); + firstStageGroupbyNode.setTargets(firstGroupbyTargets.toArray(new Target[firstGroupbyTargets.size()])); secondStageGroupbyNode.setInSchema(firstStageGroupbyNode.getOutSchema()); } grpIdx++; @@ -656,7 +656,7 @@ public class DistinctGroupbyBuilder { } } } - firstStageDistinctNode.setTargets(firstTargets.toArray(new Target[]{})); + firstStageDistinctNode.setTargets(firstTargets.toArray(new Target[firstTargets.size()])); firstStageDistinctNode.setResultColumnIds(TUtil.toArray(firstStageColumnIds)); //Set SecondStage ColumnId and Input schema http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java index 7b3ca7d..eb1921a 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/DistinctGroupbyThirdAggregationExec.java @@ -91,7 +91,7 @@ public class DistinctGroupbyThirdAggregationExec extends UnaryPhysicalExec { } resultTupleLength += eachGroupby.getAggFunctions().length; } - aggregators = aggregatorList.toArray(new DistinctFinalAggregator[]{}); + aggregators = aggregatorList.toArray(new DistinctFinalAggregator[aggregatorList.size()]); outTuple = new VTuple(resultTupleLength); // make output schema mapping index http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/PhysicalPlanUtil.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/PhysicalPlanUtil.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/PhysicalPlanUtil.java index 0d9db1d..8d63410 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/PhysicalPlanUtil.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/PhysicalPlanUtil.java @@ -120,7 +120,7 @@ public class PhysicalPlanUtil { fragments.add(fileFragment); } } - return FragmentConvertor.toFragmentProtoArray(fragments.toArray(new FileFragment[]{})); + return FragmentConvertor.toFragmentProtoArray(fragments.toArray(new FileFragment[fragments.size()])); } /** http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultFileScanner.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultFileScanner.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultFileScanner.java index 1706318..80275ce 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultFileScanner.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultFileScanner.java @@ -114,7 +114,7 @@ public class NonForwardQueryResultFileScanner implements NonForwardQueryResultSc } if (!fragments.isEmpty()) { - FragmentProto[] fragmentProtos = FragmentConvertor.toFragmentProtoArray(fragments.toArray(new Fragment[]{})); + FragmentProto[] fragmentProtos = FragmentConvertor.toFragmentProtoArray(fragments.toArray(new Fragment[fragments.size()])); this.taskContext = new TaskAttemptContext( new QueryContext(tajoConf), null, new TaskAttemptId(new TaskId(new ExecutionBlockId(queryId, 1), 0), 0), http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java index 0799fa3..574c41f 100644 --- a/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java +++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/DefaultTaskScheduler.java @@ -218,7 +218,8 @@ public class DefaultTaskScheduler extends AbstractTaskScheduler { fragmentsForNonLeafTask = new FileFragment[2]; fragmentsForNonLeafTask[0] = castEvent.getLeftFragment(); if (castEvent.hasRightFragments()) { - FileFragment[] rightFragments = castEvent.getRightFragments().toArray(new FileFragment[]{}); + Collection<Fragment> var = castEvent.getRightFragments(); + FileFragment[] rightFragments = var.toArray(new FileFragment[var.size()]); fragmentsForNonLeafTask[1] = rightFragments[0]; if (rightFragments.length > 1) { broadcastFragmentsForNonLeafTask = new FileFragment[rightFragments.length - 1]; http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java index 8e0675a..95a7170 100644 --- a/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java +++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/Task.java @@ -279,7 +279,7 @@ public class Task implements EventHandler<TaskEvent> { fragmentList.add("ERROR: " + eachFragment.getDataFormat() + "," + eachFragment.getId() + ": " + e.getMessage()); } } - taskHistory.setFragments(fragmentList.toArray(new String[]{})); + taskHistory.setFragments(fragmentList.toArray(new String[fragmentList.size()])); List<String[]> fetchList = new ArrayList<>(); for (Map.Entry<String, Set<FetchImpl>> e : getFetchMap().entrySet()) { @@ -297,7 +297,7 @@ public class Task implements EventHandler<TaskEvent> { dataLocationList.add(eachLocation.toString()); } - taskHistory.setDataLocations(dataLocationList.toArray(new String[]{})); + taskHistory.setDataLocations(dataLocationList.toArray(new String[dataLocationList.size()])); return taskHistory; } http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-plan/src/main/java/org/apache/tajo/plan/logical/DistinctGroupbyNode.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/DistinctGroupbyNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/DistinctGroupbyNode.java index 5ec0f02..1af05e7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/DistinctGroupbyNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/DistinctGroupbyNode.java @@ -262,6 +262,6 @@ public class DistinctGroupbyNode extends UnaryNode implements Projectable, Clone } } - return shuffleKeyColumns.toArray(new Column[]{}); + return shuffleKeyColumns.toArray(new Column[shuffleKeyColumns.size()]); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java ---------------------------------------------------------------------- diff --git a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java index 7c5ded9..0fb7b68 100644 --- a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java +++ b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java @@ -1002,7 +1002,7 @@ public class HBaseTablespace extends Tablespace { } else { tupleRanges.remove(tupleRanges.size() - 1); } - return tupleRanges.toArray(new TupleRange[]{}); + return tupleRanges.toArray(new TupleRange[tupleRanges.size()]); } finally { htable.close(); } http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java ---------------------------------------------------------------------- diff --git a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java index 7aca307..b2d4ac3 100644 --- a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java +++ b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java @@ -67,7 +67,7 @@ public class SortedInsertRewriter implements LogicalPlanRewriteRule { } } - return indexColumns.toArray(new Column[]{}); + return indexColumns.toArray(new Column[indexColumns.size()]); } @Override http://git-wip-us.apache.org/repos/asf/tajo/blob/0f1e1df4/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/fragment/FileFragment.java ---------------------------------------------------------------------- diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/fragment/FileFragment.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/fragment/FileFragment.java index 79b2080..4128998 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/fragment/FileFragment.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/fragment/FileFragment.java @@ -78,9 +78,10 @@ public class FileFragment implements Fragment, Comparable<FileFragment>, Cloneab for(Integer eachValue: proto.getDiskIdsList()) { diskIds[i++] = eachValue; } + List<String> var = proto.getHostsList(); this.set(proto.getId(), new Path(proto.getPath()), proto.getStartOffset(), proto.getLength(), - proto.getHostsList().toArray(new String[]{}), + var.toArray(new String[var.size()]), diskIds); }
