dbaccess/source/filter/hsqldb/parseschema.cxx |   20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

New commits:
commit 47d6c43c19aa6ea05f0f65db58e5cdcf1c603660
Author:     Tamas Bunth <tamas.bu...@collabora.co.uk>
AuthorDate: Tue Jul 16 21:44:38 2019 +0200
Commit:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
CommitDate: Thu Jul 18 12:05:03 2019 +0200

    tdf#123020 dbahsql: Support string delimiter
    
    Support multi-word table names while migrating HSQLDB data.
    
    Change-Id: I5129f995ea90a3fdbcbcb844774cf074f3ffddb2
    Reviewed-on: https://gerrit.libreoffice.org/75734
    Tested-by: Jenkins
    Reviewed-by: Xisco FaulĂ­ <xiscofa...@libreoffice.org>
    (cherry picked from commit b5890bf269214a47833bc9514b80650455e77ef6)
    Reviewed-on: https://gerrit.libreoffice.org/75820
    Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>

diff --git a/dbaccess/source/filter/hsqldb/parseschema.cxx 
b/dbaccess/source/filter/hsqldb/parseschema.cxx
index be08037b7be5..60e7103cdfa2 100644
--- a/dbaccess/source/filter/hsqldb/parseschema.cxx
+++ b/dbaccess/source/filter/hsqldb/parseschema.cxx
@@ -28,6 +28,7 @@
 #include <comphelper/processfactory.hxx>
 #include <comphelper/string.hxx>
 #include <sal/log.hxx>
+#include <connectivity/dbexception.hxx>
 
 namespace
 {
@@ -74,8 +75,17 @@ public:
 
     OUString getTableName() const
     {
-        // SET TABLE <tableName>
-        return string::split(m_sql, u' ')[2];
+        // SET TABLE <tableName> or SET TABLE "<multi word table name>"
+        OUString sName = string::split(m_sql, u' ')[2];
+        if (sName.indexOf('"') >= 0)
+        {
+            // Table name with string delimiter
+            OUStringBuffer sMultiName("\"");
+            sMultiName.append(string::split(m_sql, u'"')[1]);
+            sMultiName.append("\"");
+            sName = sMultiName.makeStringAndClear();
+        }
+        return sName;
     }
 };
 
@@ -169,6 +179,12 @@ void SchemaParser::parseSchema()
 
 std::vector<ColumnDefinition> SchemaParser::getTableColumnTypes(const 
OUString& sTableName) const
 {
+    if (m_ColumnTypes.count(sTableName) < 1)
+    {
+        constexpr char NOT_EXIST[] = "Internal error while getting column 
information of table";
+        SAL_WARN("dbaccess", NOT_EXIST << ". Table name is: " << sTableName);
+        dbtools::throwGenericSQLException(NOT_EXIST, 
::comphelper::getProcessComponentContext());
+    }
     return m_ColumnTypes.at(sTableName);
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to