summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Bunth <tamas.bunth@collabora.co.uk>2019-07-16 21:44:38 +0200
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2019-07-18 12:05:03 +0200
commit47d6c43c19aa6ea05f0f65db58e5cdcf1c603660 (patch)
tree727b30e501a1917fd9e48296f0d016297cb3dd0d
parent448a9e0d967290443dac439579f98311e3296218 (diff)
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Ă­ <xiscofauli@libreoffice.org> (cherry picked from commit b5890bf269214a47833bc9514b80650455e77ef6) Reviewed-on: https://gerrit.libreoffice.org/75820 Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
-rw-r--r--dbaccess/source/filter/hsqldb/parseschema.cxx20
1 files changed, 18 insertions, 2 deletions
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);
}