summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2020-10-28 22:38:28 +0100
committerJulien Nabet <serval2412@yahoo.fr>2020-10-29 22:50:02 +0100
commit5b33b1a6b0f251202e89cef436efd4719c3fc0c4 (patch)
treef1db027a61d86e721415b0becc88c635d97539d5
parent6b367107d7c51fc868ab0a116019ee26408a0395 (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>
-rw-r--r--connectivity/source/drivers/firebird/Util.cxx92
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)