Changeset: 8df3a20c7058 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8df3a20c7058
Modified Files:
        clients/nodejs/Tests/nodetest.js
        clients/nodejs/monetdb/mapiclient.js
        clients/nodejs/monetdb/package.json
Branch: default
Log Message:

Properly reconstruct escaped characters \t, \n, and \r, when retrieved from the 
database


diffs (52 lines):

diff --git a/clients/nodejs/Tests/nodetest.js b/clients/nodejs/Tests/nodetest.js
--- a/clients/nodejs/Tests/nodetest.js
+++ b/clients/nodejs/Tests/nodetest.js
@@ -112,6 +112,20 @@ conn.query("SELECT '\\\\asdf','\"', '\\\
        assert.equal("'", res.data[0][4]);
 });
 
+/* Retrieving escaped characters from the database */
+conn.query('start transaction').
+       query('create table foo(a string)').
+       query("insert into foo values ('\t\n\r\n\tlalala\t\n\r')");
+
+conn.query("select * from foo", function(err, res) {
+       assert.equal(null, err);
+       assert.equal(1, res.rows);
+       assert.equal('\t\n\r\n\tlalala\t\n\r', res.data[0][0]);
+});    
+
+conn.query('delete from foo; drop table foo; rollback');
+
+
 /* prepared statements can also be re-used  */
 conn.prepare('SELECT id from tables where name=? and type=? and temporary=?', 
function(err, res){
        assert.equal(null, err);
diff --git a/clients/nodejs/monetdb/mapiclient.js 
b/clients/nodejs/monetdb/mapiclient.js
--- a/clients/nodejs/monetdb/mapiclient.js
+++ b/clients/nodejs/monetdb/mapiclient.js
@@ -386,7 +386,12 @@ exports.parsetuples =  _parsetuples = fu
                                break;
                        case 'ESCAPED':
                                state = 'INQUOTES';
-                               curtok += chr;
+                switch(chr) {
+                    case 't': curtok += '\t'; break;
+                    case 'n': curtok += '\n'; break;
+                    case 'r': curtok += '\r'; break;
+                    default: curtok += chr;
+                }
                                break;
                        case 'INQUOTES':
                                if (chr == '"') {
diff --git a/clients/nodejs/monetdb/package.json 
b/clients/nodejs/monetdb/package.json
--- a/clients/nodejs/monetdb/package.json
+++ b/clients/nodejs/monetdb/package.json
@@ -1,6 +1,6 @@
 {
   "name": "monetdb",
-  "version": "0.2.5",
+  "version": "0.2.6",
   "description": "Connect MonetDB and node.js",
   "main": "mapiclient.js",
   "author": "Hannes Mühleisen <han...@cwi.nl>",
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to