Kaydet (Commit) e7a80ddb authored tarafından Tamas Bunth's avatar Tamas Bunth Kaydeden (comit) Tamás Bunth

tdf#104734 Firebird: Add VARBINARY type to driver

Change-Id: I9a1b3aa9bde855577078fe0db2e31a9c160031d7
Reviewed-on: https://gerrit.libreoffice.org/47092Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarTamás Bunth <btomi96@gmail.com>
üst bf662904
......@@ -863,6 +863,17 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo()
aRow[15] = ODatabaseMetaDataResultSet::get0Value(); // Max scale
aResults.push_back(aRow);
// Varbinary (VARCHAR)
aRow[1] = new ORowSetValueDecorator(OUString("VARCHAR"));
aRow[2] = new ORowSetValueDecorator(DataType::VARBINARY);
aRow[3] = new ORowSetValueDecorator(sal_Int16(32765)); // Prevision = max length
aRow[6] = new ORowSetValueDecorator(OUString("length")); // Create Params
aRow[9] = new ORowSetValueDecorator(
sal_Int16(ColumnSearch::NONE)); // Searchable
aRow[14] = ODatabaseMetaDataResultSet::get0Value(); // Minimum scale
aRow[15] = ODatabaseMetaDataResultSet::get0Value(); // Max scale
aResults.push_back(aRow);
// Integer Types common
{
aRow[6] = new ORowSetValueDecorator(); // Create Params
......
......@@ -96,7 +96,8 @@ sal_Int32 SAL_CALL OResultSetMetaData::getColumnType(sal_Int32 column)
short aType = m_pSqlda->sqlvar[column-1].sqltype & ~1;
OUString sCharset;
if(aType == SQL_TEXT)
// do not query the character set unnecessarily
if(aType == SQL_TEXT || aType == SQL_VARYING)
{
sCharset = getCharacterSet(column);
}
......
......@@ -101,7 +101,7 @@ OUString Tables::createStandardColumnPart(const Reference< XPropertySet >& xColP
sal_Int32 aType = 0;
xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE))
>>= aType;
if(aType == DataType::BINARY)
if(aType == DataType::BINARY || aType == DataType::VARBINARY)
{
aSql.append(" ");
aSql.append("CHARACTER SET OCTETS");
......
......@@ -100,8 +100,11 @@ sal_Int32 lcl_getCharColumnType( short aType, const OUString& sCharset )
return DataType::BINARY;
else
return DataType::CHAR;
case SQL_VARYING: // TODO VARBINARY
return DataType::VARCHAR;
case SQL_VARYING:
if( sCharset == "OCTETS")
return DataType::VARBINARY;
else
return DataType::VARCHAR;
default:
assert(false);
return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment