TAJO-2019: Replace manual array copy with System.arraycopy().

Signed-off-by: Jihoon Son <jihoonson@apache.org>
diff --git a/CHANGES b/CHANGES
index feb723e..8756d5e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -71,6 +71,9 @@
 
   TASKS
 
+    TAJO-2019: Replace manual array copy with System.arraycopy().
+    (Contributed by Dongkyu Hwangbo, committed by jaehwa)
+
     TAJO-1994: Some trivial modification is needed in compression document.
     (Contributed by Jongyoung Park. Committed by jihoon)
 
diff --git a/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java b/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java
index 2d57c0a..587849f 100644
--- a/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java
+++ b/tajo-common/src/main/java/org/apache/tajo/util/StringUtils.java
@@ -308,15 +308,11 @@
     padded[0] = new char[max];
     padded[1] = new char[max];
 
-    for (int i = 0; i < startChars.length; i++) {
-      padded[0][i] = startChars[i];
-    }
+    System.arraycopy(startChars, 0, padded[0], 0, startChars.length);
     for (int i = startChars.length; i < max; i++) {
       padded[0][i] = 0;
     }
-    for (int i = 0; i < endChars.length; i++) {
-      padded[1][i] = endChars[i];
-    }
+    System.arraycopy(endChars, 0, padded[1], 0, endChars.length);
     for (int i = endChars.length; i < max; i++) {
       padded[1][i] = 0;
     }
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 fb19f10..6c5a24c 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
@@ -116,9 +116,7 @@
 
     if (groupingColumns != null) {
       cloneNode.groupingColumns = new Column[groupingColumns.length];
-      for (int i = 0; i < groupingColumns.length; i++) {
-        cloneNode.groupingColumns[i] = groupingColumns[i];
-      }
+      System.arraycopy(groupingColumns, 0, cloneNode.groupingColumns, 0, groupingColumns.length);
     }
 
     if (subGroupbyPlan != null) {
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/GroupbyNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/GroupbyNode.java
index 3966606..3019437 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/GroupbyNode.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/GroupbyNode.java
@@ -163,9 +163,7 @@
     GroupbyNode grp = (GroupbyNode) super.clone();
     if (groupingKeys != null) {
       grp.groupingKeys = new Column[groupingKeys.length];
-      for (int i = 0; i < groupingKeys.length; i++) {
-        grp.groupingKeys[i] = groupingKeys[i];
-      }
+      System.arraycopy(groupingKeys, 0, grp.groupingKeys, 0, groupingKeys.length);
     }
 
     if (aggrFunctions != null) {
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/WindowAggNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/WindowAggNode.java
index 1bee34c..1e179fb 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/WindowAggNode.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/WindowAggNode.java
@@ -154,9 +154,7 @@
     WindowAggNode grp = (WindowAggNode) super.clone();
     if (partitionKeys != null) {
       grp.partitionKeys = new Column[partitionKeys.length];
-      for (int i = 0; i < partitionKeys.length; i++) {
-        grp.partitionKeys[i] = partitionKeys[i];
-      }
+      System.arraycopy(partitionKeys, 0, grp.partitionKeys, 0, partitionKeys.length);
     }
 
     if (windowFuncs != null) {