summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Bunth <tamas.bunth@collabora.co.uk>2018-05-05 23:38:19 +0200
committerTamás Bunth <btomi96@gmail.com>2018-05-07 11:03:47 +0200
commit210638cc162ce36c8afab3aa64a65afbb5955939 (patch)
treeb7bd6bace4eb2ca9635cc91987576a0e011ad49a
parent1e2afc9bd3062cfba6b65b45c17a08f298014239 (diff)
tdf#117299 dbahsql: add varchar_ignorecase type
Change-Id: I1dc904fe1b9146c978086861ef96f5141794bf09 Reviewed-on: https://gerrit.libreoffice.org/53901 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tamás Bunth <btomi96@gmail.com>
-rw-r--r--dbaccess/source/filter/hsqldb/columndef.cxx3
-rw-r--r--dbaccess/source/filter/hsqldb/columndef.hxx5
-rw-r--r--dbaccess/source/filter/hsqldb/createparser.cxx5
-rw-r--r--dbaccess/source/filter/hsqldb/fbcreateparser.cxx3
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<sal_Int32> 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<sal_Int32> 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<sal_Int32> 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(",");