diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2020-10-28 22:38:28 +0100 |
---|---|---|
committer | Julien Nabet <serval2412@yahoo.fr> | 2020-10-29 22:50:02 +0100 |
commit | 5b33b1a6b0f251202e89cef436efd4719c3fc0c4 (patch) | |
tree | f1db027a61d86e721415b0becc88c635d97539d5 /connectivity | |
parent | 6b367107d7c51fc868ab0a116019ee26408a0395 (diff) |
tdf#137801: Firebird fix warn when changing a table having a field type BLOB
OTableController::alterColumns() from dbaccess/source/ui/tabledesign/TableController.cxx
checks if a column changes with:
if((nType != pField->GetType() ||
sTypeName != pField->GetTypeName() ||
etc
See https://opengrok.libreoffice.org/xref/core/dbaccess/source/ui/tabledesign/TableController.cxx?r=585cefd1#1002
So for example for "BLOB" field, LO was comparing "SQL_BLOB" from "sTypeName" with "BLOB" from "pField->GetTypeName()"
In the same way, LO was comparing "SQL_LONG" from "sTypeName" with "INTEGER" from "pField->GetTypeName()"
or "SQL_VARYING" from "sTypeName" with "VARCHAR" from "pField->GetTypeName()"
Change-Id: I3632f3ee5845b4f07d606fddd586951a3deea67f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104979
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/firebird/Util.cxx | 92 |
1 files changed, 52 insertions, 40 deletions
diff --git a/connectivity/source/drivers/firebird/Util.cxx b/connectivity/source/drivers/firebird/Util.cxx index 7befd4b99014..7bdb12b8eb29 100644 --- a/connectivity/source/drivers/firebird/Util.cxx +++ b/connectivity/source/drivers/firebird/Util.cxx @@ -181,47 +181,59 @@ sal_Int32 firebird::ColumnTypeInfo::getSdbcType() const OUString firebird::ColumnTypeInfo::getColumnTypeName() const { - short aType = m_aType & ~1; // Remove last bit -- it is used to denote whether column - // can store Null, not needed for type determination - - switch (aType) + sal_Int32 nDataType = this->getSdbcType(); + switch (nDataType) { - case SQL_TEXT: - return "SQL_TEXT"; - case SQL_VARYING: - return "SQL_VARYING"; - case SQL_SHORT: - return "SQL_SHORT"; - case SQL_LONG: - return "SQL_LONG"; - case SQL_FLOAT: - return "SQL_FLOAT"; - case SQL_DOUBLE: - return "SQL_DOUBLE"; - case SQL_D_FLOAT: - return "SQL_D_FLOAT"; - case SQL_TIMESTAMP: - return "SQL_TIMESTAMP"; - case SQL_BLOB: - return "SQL_BLOB"; - case SQL_ARRAY: - return "SQL_ARRAY"; - case SQL_TYPE_TIME: - return "SQL_TYPE_TIME"; - case SQL_TYPE_DATE: - return "SQL_TYPE_DATE"; - case SQL_INT64: - return "SQL_INT64"; - case SQL_NULL: - return "SQL_NULL"; - case SQL_QUAD: - return "SQL_QUAD"; - case SQL_BOOLEAN: - return "SQL_BOOLEAN"; - default: - assert(false); // Should never happen - return OUString(); - } + case DataType::BIT: + return "BIT"; + case DataType::TINYINT: + return "TINYINT"; + case DataType::SMALLINT: + return "SMALLINT"; + case DataType::INTEGER: + return "INTEGER"; + case DataType::BIGINT: + return "BIGINT"; + case DataType::FLOAT: + return "FLOAT"; + case DataType::REAL: + return "REAL"; + case DataType::DOUBLE: + return "DOUBLE"; + case DataType::NUMERIC: + return "NUMERIC"; + case DataType::DECIMAL: + return "DECIMAL"; + case DataType::CHAR: + return "CHAR"; + case DataType::VARCHAR: + return "VARCHAR"; + case DataType::LONGVARCHAR: + return "LONGVARCHAR"; + case DataType::DATE: + return "DATE"; + case DataType::TIME: + return "TIME"; + case DataType::TIMESTAMP: + return "TIMESTAMP"; + case DataType::BINARY: + return "BINARY"; + case DataType::LONGVARBINARY: + return "LONGVARBINARY"; + case DataType::ARRAY: + return "ARRAY"; + case DataType::BLOB: + return "BLOB"; + case DataType::CLOB: + return "CLOB"; + case DataType::BOOLEAN: + return "BOOLEAN"; + case DataType::SQLNULL: + return "NULL"; + default: + assert(false); // Should never happen + return OUString(); + } } short firebird::getFBTypeFromBlrType(short blrType) |