From 76279399f747548494a259173ef5669553c3f06f Mon Sep 17 00:00:00 2001 From: Tamas Bunth Date: Fri, 26 Oct 2018 21:04:09 +0200 Subject: tdf#120691 Migrate tables which contain spaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I115d765bc781a926189605990e91c8e47f24d474 Reviewed-on: https://gerrit.libreoffice.org/62403 Tested-by: Jenkins Reviewed-by: Tamás Bunth --- dbaccess/source/filter/hsqldb/utils.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/dbaccess/source/filter/hsqldb/utils.cxx b/dbaccess/source/filter/hsqldb/utils.cxx index dfdbee40c37b..8d6c49e348dc 100644 --- a/dbaccess/source/filter/hsqldb/utils.cxx +++ b/dbaccess/source/filter/hsqldb/utils.cxx @@ -22,6 +22,8 @@ #include #include +#include + #include "utils.hxx" using namespace dbahsql; @@ -39,6 +41,22 @@ OUString utils::getTableNameFromStmt(const OUString& sSql) if (*wordIter == "TABLE") ++wordIter; + // it may contain spaces if it's put into apostrophes. + if (wordIter->indexOf("\"") >= 0) + { + sal_Int32 nAposBegin = sSql.indexOf("\""); + sal_Int32 nAposEnd = nAposBegin; + bool bProperEndAposFound = false; + while (!bProperEndAposFound) + { + nAposEnd = sSql.indexOf("\"", nAposEnd + 1); + if (sSql[nAposEnd - 1] != u'\\') + bProperEndAposFound = true; + } + OUString result = sSql.copy(nAposBegin, nAposEnd - nAposBegin + 1); + return result; + } + // next word is the table's name // it might stuck together with the column definitions. sal_Int32 nParenPos = wordIter->indexOf("("); -- cgit v1.2.3