summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--connectivity/source/drivers/firebird/DatabaseMetaData.cxx9
-rw-r--r--connectivity/source/drivers/firebird/Tables.cxx29
-rw-r--r--connectivity/source/drivers/firebird/Util.cxx10
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: