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

dbahsql: add BINARY and VARBINARY import

Change-Id: Ibb4d5f8dda16dc7779b7a7b818a8bd2c49cbf283
Reviewed-on: https://gerrit.libreoffice.org/50844Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarTamás Bunth <btomi96@gmail.com>
üst c25b884d
...@@ -157,8 +157,16 @@ sal_Int32 lcl_getDataTypeFromHsql(const OUString& sTypeName) ...@@ -157,8 +157,16 @@ sal_Int32 lcl_getDataTypeFromHsql(const OUString& sTypeName)
assert(false); assert(false);
return -1; return -1;
} }
void lcl_addDefaultParameters(std::vector<sal_Int32>& aParams, sal_Int32 eType)
{
if (eType == DataType::CHAR || eType == DataType::BINARY || eType == DataType::VARBINARY
|| eType == DataType::VARCHAR)
aParams.push_back(8000); // from SQL standard
} }
} // unnamed namespace
namespace dbahsql namespace dbahsql
{ {
CreateStmtParser::CreateStmtParser() {} CreateStmtParser::CreateStmtParser() {}
...@@ -195,6 +203,10 @@ void CreateStmtParser::parseColumnPart(const OUString& sColumnPart) ...@@ -195,6 +203,10 @@ void CreateStmtParser::parseColumnPart(const OUString& sColumnPart)
aParams.push_back(sParam.toInt32()); aParams.push_back(sParam.toInt32());
} }
} }
else
{
lcl_addDefaultParameters(aParams, lcl_getDataTypeFromHsql(sTypeName));
}
ColumnDefinition aColDef(words[0], lcl_getDataTypeFromHsql(sTypeName), aParams, ColumnDefinition aColDef(words[0], lcl_getDataTypeFromHsql(sTypeName), aParams,
lcl_isPrimaryKey(sColumn), lcl_getAutoIncrementDefault(sColumn), lcl_isPrimaryKey(sColumn), lcl_getAutoIncrementDefault(sColumn),
......
...@@ -122,28 +122,55 @@ void lcl_setParams(const RowVector& row, Reference<XParameters>& xParam, ...@@ -122,28 +122,55 @@ void lcl_setParams(const RowVector& row, Reference<XParameters>& xParam,
} }
break; break;
case DataType::BIGINT: case DataType::BIGINT:
break; {
sal_Int64 nVal;
if (row.at(i) >>= nVal)
{
xParam->setLong(i + 1, nVal);
}
}
break;
case DataType::REAL: case DataType::REAL:
case DataType::FLOAT: case DataType::FLOAT:
case DataType::DOUBLE: case DataType::DOUBLE:
{
double nVal;
if (row.at(i) >>= nVal)
{
xParam->setDouble(i + 1, nVal);
}
break; break;
}
case DataType::NUMERIC: case DataType::NUMERIC:
case DataType::DECIMAL: case DataType::DECIMAL:
// TODO
break; break;
case DataType::DATE: case DataType::DATE:
// TODO
break; break;
case DataType::TIME: case DataType::TIME:
// TODO
break; break;
case DataType::TIMESTAMP: case DataType::TIMESTAMP:
// TODO
break; break;
case DataType::BOOLEAN: case DataType::BOOLEAN:
// TODO
break; break;
case DataType::OTHER: case DataType::OTHER:
// TODO
break; break;
case DataType::BINARY: case DataType::BINARY:
case DataType::VARBINARY: case DataType::VARBINARY:
case DataType::LONGVARBINARY: case DataType::LONGVARBINARY:
{
Sequence<sal_Int8> nVal;
if (row.at(i) >>= nVal)
{
xParam->setBytes(i + 1, nVal);
}
break; break;
}
default: default:
throw WrongFormatException(); throw WrongFormatException();
} }
......
...@@ -227,7 +227,7 @@ std::vector<Any> HsqlRowInputStream::readOneRow(const ColumnTypeVector& nColType ...@@ -227,7 +227,7 @@ std::vector<Any> HsqlRowInputStream::readOneRow(const ColumnTypeVector& nColType
sal_Int32 nSize = 0; sal_Int32 nSize = 0;
m_pStream->ReadInt32(nSize); m_pStream->ReadInt32(nSize);
Sequence<sal_uInt8> aBytes(nSize); Sequence<sal_Int8> aBytes(nSize);
m_pStream->ReadBytes(aBytes.getArray(), nSize); m_pStream->ReadBytes(aBytes.getArray(), nSize);
aData.push_back(makeAny(aBytes)); aData.push_back(makeAny(aBytes));
} }
......
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