diff options
-rw-r--r-- | connectivity/source/drivers/firebird/DatabaseMetaData.cxx | 9 | ||||
-rw-r--r-- | connectivity/source/drivers/firebird/Tables.cxx | 29 | ||||
-rw-r--r-- | connectivity/source/drivers/firebird/Util.cxx | 10 |
3 files changed, 11 insertions, 37 deletions
diff --git a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx index 16ecb9e1a520..487e201004e1 100644 --- a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx +++ b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx @@ -863,7 +863,7 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo() // Binary (CHAR) // It is distinguished from Text type by its character set - aRow[1] = new ORowSetValueDecorator(OUString("CHAR")); + aRow[1] = new ORowSetValueDecorator(OUString("CHAR CHARACTER SET OCTETS")); aRow[2] = new ORowSetValueDecorator(DataType::BINARY); aRow[3] = new ORowSetValueDecorator(sal_Int16(32765)); // Prevision = max length aRow[6] = new ORowSetValueDecorator(OUString("length")); // Create Params @@ -874,7 +874,7 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo() tmp.push_back(aRow); // Varbinary (VARCHAR) - aRow[1] = new ORowSetValueDecorator(OUString("VARCHAR")); + aRow[1] = new ORowSetValueDecorator(OUString("VARCHAR CHARACTER SET OCTETS")); aRow[2] = new ORowSetValueDecorator(DataType::VARBINARY); aRow[3] = new ORowSetValueDecorator(sal_Int16(32765)); // Prevision = max length aRow[6] = new ORowSetValueDecorator(OUString("length")); // Create Params @@ -882,7 +882,7 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo() sal_Int16(ColumnSearch::NONE)); // Searchable // Clob (SQL_BLOB) - aRow[1] = new ORowSetValueDecorator(OUString("BLOB")); // BLOB, with subtype 1 + aRow[1] = new ORowSetValueDecorator(OUString("BLOB SUB_TYPE TEXT")); // BLOB, with subtype 1 aRow[2] = new ORowSetValueDecorator(DataType::CLOB); aRow[3] = new ORowSetValueDecorator(sal_Int32(2147483647)); // Precision = max length aRow[6] = new ORowSetValueDecorator(); // Create Params @@ -895,6 +895,7 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo() // Longvarbinary (SQL_BLOB) // Distinguished from simple blob with a user-defined subtype. + aRow[1] = new ORowSetValueDecorator(OUString("BLOB SUB_TYPE " + OUString::number(static_cast<short>(BlobSubtype::Image))) ); // BLOB, with subtype 0 aRow[2] = new ORowSetValueDecorator(DataType::LONGVARBINARY); tmp.push_back(aRow); @@ -1001,7 +1002,7 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo() tmp.push_back(aRow); // SQL_BLOB - aRow[1] = new ORowSetValueDecorator(OUString("BLOB")); + aRow[1] = new ORowSetValueDecorator(OUString("BLOB SUB_TYPE BINARY")); aRow[2] = new ORowSetValueDecorator(DataType::BLOB); aRow[3] = new ORowSetValueDecorator(sal_Int32(0)); // Prevision = max length aRow[6] = new ORowSetValueDecorator(); // Create Params diff --git a/connectivity/source/drivers/firebird/Tables.cxx b/connectivity/source/drivers/firebird/Tables.cxx index 34907418abf8..235baec83b3d 100644 --- a/connectivity/source/drivers/firebird/Tables.cxx +++ b/connectivity/source/drivers/firebird/Tables.cxx @@ -94,35 +94,6 @@ OUString Tables::createStandardColumnPart(const Reference< XPropertySet >& xColP aSql.append(dbtools::createStandardTypePart(xColProp, _xConnection)); - // Add character set for BINARY (fix) type: - // BINARY is distinguished from other CHAR types by its character set. - // Octets is a special character set for binary data. - if ( xPropInfo.is() && xPropInfo->hasPropertyByName(rPropMap.getNameByIndex( - PROPERTY_ID_TYPE)) ) - { - sal_Int32 aType = 0; - xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE)) - >>= aType; - if(aType == DataType::BINARY || aType == DataType::VARBINARY) - { - aSql.append(" "); - aSql.append("CHARACTER SET OCTETS"); - } - else if(aType == DataType::CLOB) - { - // CLOB is a special type of blob in Firebird context. - // Subtype number 1 always refers to CLOB - aSql.append(" "); - aSql.append("SUB_TYPE 1"); - } - else if(aType == DataType::LONGVARBINARY) - { - aSql.append(" "); - aSql.append("SUB_TYPE "); - aSql.append(OUString::number(static_cast<short>(BlobSubtype::Image))); - } - } - if ( bIsAutoIncrement && !sAutoIncrementValue.isEmpty()) { aSql.append(" "); diff --git a/connectivity/source/drivers/firebird/Util.cxx b/connectivity/source/drivers/firebird/Util.cxx index 7bdb12b8eb29..b46c746e1b5a 100644 --- a/connectivity/source/drivers/firebird/Util.cxx +++ b/connectivity/source/drivers/firebird/Util.cxx @@ -217,15 +217,17 @@ OUString firebird::ColumnTypeInfo::getColumnTypeName() const case DataType::TIMESTAMP: return "TIMESTAMP"; case DataType::BINARY: - return "BINARY"; + return "CHAR CHARACTER SET OCTETS"; + case DataType::VARBINARY: + return "VARCHAR CHARACTER SET OCTETS"; case DataType::LONGVARBINARY: - return "LONGVARBINARY"; + return "BLOB SUB_TYPE " + OUString::number(static_cast<short>(BlobSubtype::Image)); case DataType::ARRAY: return "ARRAY"; case DataType::BLOB: - return "BLOB"; + return "BLOB SUB_TYPE BINARY"; case DataType::CLOB: - return "CLOB"; + return "BLOB SUB_TYPE TEXT"; case DataType::BOOLEAN: return "BOOLEAN"; case DataType::SQLNULL: |