diff options
author | Tamas Bunth <tamas.bunth@collabora.co.uk> | 2019-07-16 21:44:38 +0200 |
---|---|---|
committer | Xisco Faulí <xiscofauli@libreoffice.org> | 2019-07-17 22:49:54 +0200 |
commit | b5890bf269214a47833bc9514b80650455e77ef6 (patch) | |
tree | 6914cdc544bcbee1e0204383c5b6040eeabcfdbe /dbaccess | |
parent | c1231117cad966f9484ffa05d449d75efd729b91 (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>
Diffstat (limited to 'dbaccess')
-rw-r--r-- | dbaccess/source/filter/hsqldb/parseschema.cxx | 20 |
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); } |