changeset 173:e5c67a23d7d6

Fix for bug 6350
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 28 Sep 2017 15:05:21 +0200 (2017-09-28)
parents 296c4a16ef9f
children bac9345e7d99
files src/main/java/nl/cwi/monetdb/mcl/parser/TupleLineParser.java
diffstat 1 files changed, 12 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/nl/cwi/monetdb/mcl/parser/TupleLineParser.java
+++ b/src/main/java/nl/cwi/monetdb/mcl/parser/TupleLineParser.java
@@ -49,7 +49,7 @@ public class TupleLineParser extends MCL
 				throw new MCLParseException(values.length +
 						" columns expected, but only single value found");
 
-			// return the whole string but the leading =
+			// return the whole string but without the leading =
 			values[0] = source.substring(1);
 
 			// reset colnr
@@ -60,9 +60,9 @@ public class TupleLineParser extends MCL
 
 		// extract separate fields by examining string, char for char
 		boolean inString = false, escaped = false;
-		int cursor = 2, column = 0, i = 2;
+		int cursor = 2, column = 0;
 		StringBuilder uesc = new StringBuilder();
-		for (; i < len; i++) {
+		for (int i = 2; i < len; i++) {
 			switch(chrLine[i]) {
 				default:
 					escaped = false;
@@ -109,15 +109,21 @@ public class TupleLineParser extends MCL
 							for (int pos = cursor + 1; pos < i - 2; pos++) {
 								if (chrLine[pos] == '\\' && pos + 1 < i - 2) {
 									pos++;
-									// strToStr and strFromStr in gdk_atoms.mx only
-									// support \t \n \\ \" and \377
+									// escapedStr and GDKstrFromStr in gdk_atoms.c only
+									// support \\ \f \n \r \t \" and \377
 									switch (chrLine[pos]) {
 										case '\\':
 											uesc.append('\\');
 										break;
+										case 'f':
+											uesc.append('\f');
+										break;
 										case 'n':
 											uesc.append('\n');
 										break;
+										case 'r':
+											uesc.append('\r');
+										break;
 										case 't':
 											uesc.append('\t');
 										break;
@@ -177,7 +183,7 @@ public class TupleLineParser extends MCL
 
 		// reset colnr
 		reset();
-		
+
 		return 0;
 	}
 }