From 210638cc162ce36c8afab3aa64a65afbb5955939 Mon Sep 17 00:00:00 2001 From: Tamas Bunth Date: Sat, 5 May 2018 23:38:19 +0200 Subject: tdf#117299 dbahsql: add varchar_ignorecase type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1dc904fe1b9146c978086861ef96f5141794bf09 Reviewed-on: https://gerrit.libreoffice.org/53901 Tested-by: Jenkins Reviewed-by: Tamás Bunth --- dbaccess/source/filter/hsqldb/columndef.cxx | 3 ++- dbaccess/source/filter/hsqldb/columndef.hxx | 5 ++++- dbaccess/source/filter/hsqldb/createparser.cxx | 5 +++-- dbaccess/source/filter/hsqldb/fbcreateparser.cxx | 3 +++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dbaccess/source/filter/hsqldb/columndef.cxx b/dbaccess/source/filter/hsqldb/columndef.cxx index 8cdd53f1ba49..6e36ee1b8718 100644 --- a/dbaccess/source/filter/hsqldb/columndef.cxx +++ b/dbaccess/source/filter/hsqldb/columndef.cxx @@ -27,13 +27,14 @@ using namespace css::sdbc; ColumnDefinition::ColumnDefinition(const OUString& sName, sal_Int32 eType, const std::vector aParams, bool bPrimary, - sal_Int32 nAutoIncr, bool bNullable) + sal_Int32 nAutoIncr, bool bNullable, bool bCaseInsensitive) : m_sName(sName) , m_eType(eType) , m_aParams(aParams) , m_bPrimaryKey(bPrimary) , m_nAutoIncrement(nAutoIncr) , m_bNullable(bNullable) + , m_bCaseInsensitive(bCaseInsensitive) { } } diff --git a/dbaccess/source/filter/hsqldb/columndef.hxx b/dbaccess/source/filter/hsqldb/columndef.hxx index 2bdbef83cd11..1700f7b29554 100644 --- a/dbaccess/source/filter/hsqldb/columndef.hxx +++ b/dbaccess/source/filter/hsqldb/columndef.hxx @@ -25,16 +25,19 @@ private: bool m_bPrimaryKey; sal_Int32 m_nAutoIncrement; bool m_bNullable; + bool m_bCaseInsensitive; public: ColumnDefinition(const OUString& sName, sal_Int32 eType, const std::vector aParams, - bool bPrimary = false, sal_Int32 nAutoIncr = -1, bool bNullable = true); + bool bPrimary = false, sal_Int32 nAutoIncr = -1, bool bNullable = true, + bool bCaseInsensitive = false); OUString getName() const { return m_sName; } sal_Int32 getDataType() const { return m_eType; } bool isPrimaryKey() const { return m_bPrimaryKey; } bool isNullable() const { return m_bNullable; } bool isAutoIncremental() const { return m_nAutoIncrement >= 0; } + bool isCaseInsensitive() const { return m_bCaseInsensitive; } sal_Int32 getStartValue() const { return m_nAutoIncrement; } const std::vector getParams() const { return m_aParams; } }; diff --git a/dbaccess/source/filter/hsqldb/createparser.cxx b/dbaccess/source/filter/hsqldb/createparser.cxx index 6d5ffef37740..645c33557689 100644 --- a/dbaccess/source/filter/hsqldb/createparser.cxx +++ b/dbaccess/source/filter/hsqldb/createparser.cxx @@ -96,7 +96,7 @@ sal_Int32 lcl_getDataTypeFromHsql(const OUString& sTypeName) { if (sTypeName == "CHAR") return DataType::CHAR; - else if (sTypeName == "VARCHAR") + else if (sTypeName == "VARCHAR" || sTypeName == "VARCHAR_IGNORECASE") return DataType::VARCHAR; else if (sTypeName == "TINYINT") return DataType::TINYINT; @@ -189,9 +189,10 @@ void CreateStmtParser::parseColumnPart(const OUString& sColumnPart) lcl_addDefaultParameters(aParams, lcl_getDataTypeFromHsql(sTypeName)); } + bool bCaseInsensitive = sTypeName.indexOf("IGNORECASE") >= 0; ColumnDefinition aColDef(words[0], lcl_getDataTypeFromHsql(sTypeName), aParams, lcl_isPrimaryKey(sColumn), lcl_getAutoIncrementDefault(sColumn), - lcl_isNullable(sColumn)); + lcl_isNullable(sColumn), bCaseInsensitive); m_aColumns.push_back(aColDef); } diff --git a/dbaccess/source/filter/hsqldb/fbcreateparser.cxx b/dbaccess/source/filter/hsqldb/fbcreateparser.cxx index 2208ce12d272..89ffe5e69833 100644 --- a/dbaccess/source/filter/hsqldb/fbcreateparser.cxx +++ b/dbaccess/source/filter/hsqldb/fbcreateparser.cxx @@ -159,6 +159,9 @@ OUString FbCreateStmtParser::compose() const if (columnIter->isPrimaryKey()) lcl_appendWithSpace(sSql, "PRIMARY KEY"); + if (columnIter->isCaseInsensitive()) + lcl_appendWithSpace(sSql, "COLLATE UNICODE_CI"); + ++columnIter; if (columnIter != rColumns.end()) sSql.append(","); -- cgit v1.2.3