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) {
