diff --git a/asterix-app/data/csv/sample_01.csv b/asterix-app/data/csv/sample_01.csv
index 5a2a4f5..285a30d 100644
--- a/asterix-app/data/csv/sample_01.csv
+++ b/asterix-app/data/csv/sample_01.csv
@@ -1,4 +1,4 @@
-1,0.899682764,5.6256,2013-08-07,7:22:35,1979-02-25T23:48:27.000,"3.485, 94.493","-4.0,2.0 2.0,2.0","1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0","0.0,0.0 4.0,4.0","11.0,14.0 15.0"
-2,0.669052398,0.446192,-1923-3-29,19:33:34,-1979-02-25T23:48:27.000,"-3.485, 94.493","-4.0,2.0 2.0,2.0","1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0","0.0,0.0 4.0,4.0","11.0,14.0 15.0"
+1,0.899682764,5.6256,2013-08-07,07:22:35,1979-02-25T23:48:27.034
+2,0.669052398,0.446192,-1923-03-29,19:33:34,-1979-02-25T23:48:27.002
 ,,,,,,,,,,
-3,0.572733058,192674,-1923-3-29,19:33:34,-1979-02-25T23:48:27.000,"-3.485, 94.493","-4.0,2.0 2.0,2.0","1.0,1.0 1.0,4.0 3.0,4.0 3.0,1.0","0.0,0.0 4.0,4.0","11.0,14.0 15.0"
\ No newline at end of file
+3,0.572733058,192674,-1923-03-29,19:33:34,-1979-02-25T23:48:27.001
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.1.ddl.aql b/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.1.ddl.aql
index aabc9d8..4a9b7af 100644
--- a/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.1.ddl.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.1.ddl.aql
@@ -15,12 +15,7 @@
     double: double,
     date: string,
     time: string,
-    datetime: string,
-    point: string,
-    line: string,
-    polygon: string,
-    rectangle: string,
-    circle: string
+    datetime: string
 };
 
 create dataset testds (test)
diff --git a/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.3.query.aql
index 3f03ab9..f798b20 100644
--- a/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.3.query.aql
+++ b/asterix-app/src/test/resources/runtimets/queries/load/csv_01/csv_01.3.query.aql
@@ -13,9 +13,5 @@
          "double": $i.double, 
          "date": date($i.date), 
          "time": time($i.time),
-         "datetime": datetime($i.datetime),
-         "point": point($i.point),
-         "line": line($i.line),
-         "polygon": polygon($i.polygon),
-         "rectangle": rectangle($i.rectangle),
-         "circle": circle($i.circle)}
\ No newline at end of file
+         "datetime": datetime($i.datetime)
+         }
\ No newline at end of file
diff --git a/asterix-app/src/test/resources/runtimets/results/load/csv_01/csv_01.1.adm b/asterix-app/src/test/resources/runtimets/results/load/csv_01/csv_01.1.adm
index aabc9d8..8287a4a 100644
--- a/asterix-app/src/test/resources/runtimets/results/load/csv_01/csv_01.1.adm
+++ b/asterix-app/src/test/resources/runtimets/results/load/csv_01/csv_01.1.adm
@@ -1,27 +1,3 @@
-/**
- *
- * CSV file loading test
- * Expected result: success
- *
- */
- 
-drop dataverse temp if exists;
-create dataverse temp
-use dataverse temp;
-
-create type test as closed {
-    id: int32,
-    float: float,
-    double: double,
-    date: string,
-    time: string,
-    datetime: string,
-    point: string,
-    line: string,
-    polygon: string,
-    rectangle: string,
-    circle: string
-};
-
-create dataset testds (test)
-primary key id;
+{ "id": 1, "float": 0.89968276f, "double": 5.6256d, "date": date("2013-08-07"), "time": time("07:22:35.000Z"), "datetime": datetime("1979-02-25T23:48:27.034Z") }
+{ "id": 2, "float": 0.6690524f, "double": 0.446192d, "date": date("-1923-03-29"), "time": time("19:33:34.000Z"), "datetime": datetime("-1979-02-25T23:48:27.002Z") }
+{ "id": 3, "float": 0.57273304f, "double": 192674.0d, "date": date("-1923-03-29"), "time": time("19:33:34.000Z"), "datetime": datetime("-1979-02-25T23:48:27.001Z") }
\ No newline at end of file
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java
index 921dbf3..0e8724e 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/operators/file/DelimitedDataParser.java
@@ -47,6 +47,8 @@
     private int[] fldIds;
     private ArrayBackedValueStorage[] nameBuffers;
 
+    private boolean areAllNullFields;
+
     public DelimitedDataParser(ARecordType recordType, IValueParserFactory[] valueParserFactories, char fieldDelimter) {
         this.recordType = recordType;
         this.valueParserFactories = valueParserFactories;
@@ -97,29 +99,36 @@
 
     @Override
     public boolean parse(DataOutput out) throws AsterixException, IOException {
-
-        if (cursor.nextRecord()) {
+        while (cursor.nextRecord()) {
             recBuilder.reset(recordType);
             recBuilder.init();
+            areAllNullFields = true;
             for (int i = 0; i < valueParsers.length; ++i) {
                 if (!cursor.nextField()) {
                     break;
                 }
                 fieldValueBuffer.reset();
-                fieldValueBufferOutput.writeByte(fieldTypeTags[i]);
-                valueParsers[i]
-                        .parse(cursor.buffer, cursor.fStart, cursor.fEnd - cursor.fStart, fieldValueBufferOutput);
+
+                if (cursor.fStart == cursor.fEnd) {
+                    fieldValueBufferOutput.writeByte(ATypeTag.NULL.serialize());
+                } else {
+                    fieldValueBufferOutput.writeByte(fieldTypeTags[i]);
+                    valueParsers[i].parse(cursor.buffer, cursor.fStart, cursor.fEnd - cursor.fStart,
+                            fieldValueBufferOutput);
+                    areAllNullFields = false;
+                }
                 if (fldIds[i] < 0) {
                     recBuilder.addField(nameBuffers[i], fieldValueBuffer);
                 } else {
                     recBuilder.addField(fldIds[i], fieldValueBuffer);
                 }
             }
-            recBuilder.write(out, true);
-            return true;
-        } else {
-            return false;
+            if (!areAllNullFields) {
+                recBuilder.write(out, true);
+                return true;
+            }
         }
+        return false;
     }
 
     protected void fieldNameToBytes(String fieldName, AMutableString str, ArrayBackedValueStorage buffer)
@@ -254,6 +263,8 @@
                             eof = !readMore();
                             if (eof) {
                                 state = State.EOF;
+                                fStart = start;
+                                fEnd = p - (s - start);
                                 return true;
                             }
                             p -= (s - start);
