From a2a2c4a9ade9e50922e509e2e1353b3147fbfad8 Mon Sep 17 00:00:00 2001
From: Ivan Tashkinov <ivantashkinov@gmail.com>
Date: Mon, 5 Nov 2012 16:31:30 +0600
Subject: [PATCH] Critical fix: new lines treatment in fields' values.

---
 .../connection_adapters/monetdb_adapter_config.rb         | 8 +++++++-
 lib/MonetDBData.rb                                        | 3 ++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/adapter/lib/active_record/connection_adapters/monetdb_adapter_config.rb b/adapter/lib/active_record/connection_adapters/monetdb_adapter_config.rb
index e866ff9..822b738 100644
--- a/adapter/lib/active_record/connection_adapters/monetdb_adapter_config.rb
+++ b/adapter/lib/active_record/connection_adapters/monetdb_adapter_config.rb
@@ -4,4 +4,10 @@ MDB_SYS_SCHEMA = "sys."   # explicitly specifying system schema
 #MDB_NON_SYSTEM_TABLES_ONLY = ""   # initial value [before fix] - I.T.
 MDB_NON_SYSTEM_TABLES_ONLY = "and system = false"   # ignoring columns from system tables (in order not to mix in 'default_schema' and other fields from sys.users to OLDS users table)
 
-MDB_LOG_USER_QUERIES = false
\ No newline at end of file
+MDB_LOG_USER_QUERIES = false
+
+# NOTE: critical fix: lib/MonetDBData.rb, line 280:
+#     fields << f.gsub(/\\/, '').gsub(/^"/,'').gsub(/"$/,'').gsub(/\"/, '')
+# should be
+#     fields << f.gsub(/\\n/, "\n").gsub(/\\/, '').gsub(/^"/,'').gsub(/"$/,'').gsub(/\"/, '')
+# in order to treat line breaks correctly
\ No newline at end of file
diff --git a/lib/MonetDBData.rb b/lib/MonetDBData.rb
index 93c4917..2ad7b4e 100644
--- a/lib/MonetDBData.rb
+++ b/lib/MonetDBData.rb
@@ -277,7 +277,8 @@ class MonetDBData
     tuple = tuple.to_s.gsub(/^\[\s+/,'')
     
     tuple.split(/,\t/).each do |f|
-      fields << f.gsub(/\\/, '').gsub(/^"/,'').gsub(/"$/,'').gsub(/\"/, '')
+      #fields << f.gsub(/\\/, '').gsub(/^"/,'').gsub(/"$/,'').gsub(/\"/, '')
+      fields << f.gsub(/\\n/, "\n").gsub(/\\/, '').gsub(/^"/,'').gsub(/"$/,'').gsub(/\"/, '')
     end
     
     return fields.freeze
-- 
GitLab