Implemented IndirectColumnVector's append method.
diff --git a/types/containers/ColumnVector.hpp b/types/containers/ColumnVector.hpp
index def1bcf..9d30995 100644
--- a/types/containers/ColumnVector.hpp
+++ b/types/containers/ColumnVector.hpp
@@ -601,12 +601,34 @@
   }
 
   bool append(ColumnVector *column_vector) override {
+    if (column_vector->isNative()) {
+      return false;
+    }
+    IndirectColumnVector *casted_column_vector = static_cast<IndirectColumnVector*>(column_vector);
+    // Both ColumnVectors has to have same type to be appended.
+    if (!type_.equals(casted_column_vector->type_)
+        || type_is_nullable_ != casted_column_vector->type_is_nullable_) {
+      return false;
+    }
+
+    std::size_t new_actual_length = values_.size() + casted_column_vector->values_.size();
+    std::size_t new_reserved_length
+        = (new_actual_length > reserved_length_)
+          ? (new_actual_length * 2)
+          : (reserved_length_);
+
+    values_.reserve(new_reserved_length);
+    values_.insert(values_.end(),
+                   casted_column_vector->values_.begin(),
+                   casted_column_vector->values_.end());
+    reserved_length_ = new_reserved_length;
+
     return true;
   }
 
  private:
   const bool type_is_nullable_;
-  const std::size_t reserved_length_;
+  std::size_t reserved_length_;
   std::vector<TypedValue> values_;
 
   DISALLOW_COPY_AND_ASSIGN(IndirectColumnVector);