summaryrefslogtreecommitdiff
path: root/dbaccess
diff options
context:
space:
mode:
authorTamas Bunth <tamas.bunth@collabora.co.uk>2018-03-06 21:39:37 +0100
committerTamás Bunth <btomi96@gmail.com>2018-03-07 11:31:41 +0100
commited031c6ceab99bf3e6b0ea320423d9fa9a734ad5 (patch)
tree41a549211c87d52b780a4056d9baa5710eab0971 /dbaccess
parentc25b884d5493422e126a7f4e52008cebb073ec7a (diff)
dbahsql: add BINARY and VARBINARY import
Change-Id: Ibb4d5f8dda16dc7779b7a7b818a8bd2c49cbf283 Reviewed-on: https://gerrit.libreoffice.org/50844 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tamás Bunth <btomi96@gmail.com>
Diffstat (limited to 'dbaccess')
-rw-r--r--dbaccess/source/filter/hsqldb/createparser.cxx12
-rw-r--r--dbaccess/source/filter/hsqldb/hsqlimport.cxx29
-rw-r--r--dbaccess/source/filter/hsqldb/rowinputbinary.cxx2
3 files changed, 41 insertions, 2 deletions
diff --git a/dbaccess/source/filter/hsqldb/createparser.cxx b/dbaccess/source/filter/hsqldb/createparser.cxx
index 4df5a097bc64..8e7f12391e0f 100644
--- a/dbaccess/source/filter/hsqldb/createparser.cxx
+++ b/dbaccess/source/filter/hsqldb/createparser.cxx
@@ -157,8 +157,16 @@ sal_Int32 lcl_getDataTypeFromHsql(const OUString& sTypeName)
assert(false);
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
{
CreateStmtParser::CreateStmtParser() {}
@@ -195,6 +203,10 @@ void CreateStmtParser::parseColumnPart(const OUString& sColumnPart)
aParams.push_back(sParam.toInt32());
}
}
+ else
+ {
+ lcl_addDefaultParameters(aParams, lcl_getDataTypeFromHsql(sTypeName));
+ }
ColumnDefinition aColDef(words[0], lcl_getDataTypeFromHsql(sTypeName), aParams,
lcl_isPrimaryKey(sColumn), lcl_getAutoIncrementDefault(sColumn),
diff --git a/dbaccess/source/filter/hsqldb/hsqlimport.cxx b/dbaccess/source/filter/hsqldb/hsqlimport.cxx
index c1f4cddd113c..03d25f79ed03 100644
--- a/dbaccess/source/filter/hsqldb/hsqlimport.cxx
+++ b/dbaccess/source/filter/hsqldb/hsqlimport.cxx
@@ -122,28 +122,55 @@ void lcl_setParams(const RowVector& row, Reference<XParameters>& xParam,
}
break;
case DataType::BIGINT:
- break;
+ {
+ sal_Int64 nVal;
+ if (row.at(i) >>= nVal)
+ {
+ xParam->setLong(i + 1, nVal);
+ }
+ }
+ break;
case DataType::REAL:
case DataType::FLOAT:
case DataType::DOUBLE:
+ {
+ double nVal;
+ if (row.at(i) >>= nVal)
+ {
+ xParam->setDouble(i + 1, nVal);
+ }
break;
+ }
case DataType::NUMERIC:
case DataType::DECIMAL:
+ // TODO
break;
case DataType::DATE:
+ // TODO
break;
case DataType::TIME:
+ // TODO
break;
case DataType::TIMESTAMP:
+ // TODO
break;
case DataType::BOOLEAN:
+ // TODO
break;
case DataType::OTHER:
+ // TODO
break;
case DataType::BINARY:
case DataType::VARBINARY:
case DataType::LONGVARBINARY:
+ {
+ Sequence<sal_Int8> nVal;
+ if (row.at(i) >>= nVal)
+ {
+ xParam->setBytes(i + 1, nVal);
+ }
break;
+ }
default:
throw WrongFormatException();
}
diff --git a/dbaccess/source/filter/hsqldb/rowinputbinary.cxx b/dbaccess/source/filter/hsqldb/rowinputbinary.cxx
index 37cfa918fef5..a0f52b0601a1 100644
--- a/dbaccess/source/filter/hsqldb/rowinputbinary.cxx
+++ b/dbaccess/source/filter/hsqldb/rowinputbinary.cxx
@@ -227,7 +227,7 @@ std::vector<Any> HsqlRowInputStream::readOneRow(const ColumnTypeVector& nColType
sal_Int32 nSize = 0;
m_pStream->ReadInt32(nSize);
- Sequence<sal_uInt8> aBytes(nSize);
+ Sequence<sal_Int8> aBytes(nSize);
m_pStream->ReadBytes(aBytes.getArray(), nSize);
aData.push_back(makeAny(aBytes));
}