pItem->type = pOthersItem->type;
pItem->size = pOthersItem->size;
- pItem->pObj = pOthersItem->pObj;
pItem->intValue = pOthersItem->intValue;
pItem->int64Value = pOthersItem->int64Value;
pItem->doubleValue = pOthersItem->doubleValue;
+ if ( pItem->type == DB_COLUMNTYPE_TEXT)
+ {
+ pItem->pObj = new (std::nothrow) String(*static_cast<String*>(pOthersItem->pObj));
+ SysTryReturnResult(NID_IO, pItem->pObj != null, E_OUT_OF_MEMORY,
+ "The memory is insufficient.");
+ }
+ else if (pItem->type == DB_COLUMNTYPE_BLOB)
+ {
+ ByteBuffer* pBuffer;
+ pBuffer = new (std::nothrow) ByteBuffer();
+ SysTryReturnResult(NID_IO, pBuffer != null, E_OUT_OF_MEMORY,
+ "The memory is insufficient.");
+
+ r = pBuffer->Construct(static_cast<ByteBuffer*>(pOthersItem->pObj)->GetCapacity());
+ SysTryLog(NID_IO, r == E_SUCCESS, "ByteBuffer construct failed");
+ r = static_cast<ByteBuffer*>(pOthersItem->pObj)->SetPosition(0);
+ SysTryLog(NID_IO, r == E_SUCCESS, "ByteBuffer SetPosition failed");
+ r = pBuffer->CopyFrom(*static_cast<ByteBuffer*>(pOthersItem->pObj));
+ SysTryReturnResult(NID_IO, r == E_SUCCESS, E_OUT_OF_MEMORY,
+ "ByteBuffer copy failed.");
+
+ pItem->pObj = pBuffer;
+ }
+
_DataItem* pOldItem = static_cast<_DataItem*>(__pDataRow->GetAt(i));
r = __pDataRow->SetAt(pItem.release(), i);
delete pOldItem;
{
result r = E_SUCCESS;
- r = __columnList.Construct(columnNames);
- SysTryReturn(NID_IO, r == E_SUCCESS, E_INVALID_ARG, r, "[E_INVALID_ARG] columnNames is invalid.");
-
- __columnCount = __columnList.GetCount();
+ __columnCount = columnNames.GetCount();
SysTryReturn(NID_IO, __columnCount > 0, E_INVALID_ARG, r, "[E_INVALID_ARG] column count is 0.");
- __columnTypeList.Construct(__columnCount);
+ r = __columnList.Construct(__columnCount);
+ SysTryReturn(NID_IO, r == E_SUCCESS, E_OUT_OF_MEMORY, r, "[E_OUT_OF_MEMORY] column list construct failed");
+ r = __columnTypeList.Construct(__columnCount);
+ SysTryReturn(NID_IO, r == E_SUCCESS, E_OUT_OF_MEMORY, r, "[E_OUT_OF_MEMORY] column type list construct failed");
for (int i = 0 ; i < __columnCount ; i++)
{
- result r = __columnTypeList.Add(new (std::nothrow) Integer(DB_COLUMNTYPE_NULL));
+ r = __columnList.Add(new (std::nothrow) String(*(String*)(columnNames.GetAt(i))));
+ SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
+
+ r = __columnTypeList.Add(new (std::nothrow) Integer(DB_COLUMNTYPE_NULL));
SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
}
//SysLog(NID_IO, "column count is %d", __columnCount);
_DataSetImpl::CloneN(void) const
{
result r;
+ Integer* pColumnType = null;
+
unique_ptr< DataSet > pDataSet(new (std::nothrow) DataSet());
SysTryReturn(NID_IO, pDataSet != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
pDataSet->Construct(__columnList);
+ for (int i = 0; i < __columnCount; i++)
+ {
+ pColumnType = static_cast<Integer*>(_DataSetImpl::GetInstance(*pDataSet)->__columnTypeList.GetAt(i));
+ r = _DataSetImpl::GetInstance(*pDataSet)->__columnTypeList.SetAt(new Integer(*(Integer*)__columnTypeList.GetAt(i)), i);
+ delete pColumnType;
+
+ SysTryReturn(NID_IO, r == E_SUCCESS, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] ColumnTypeList Copy Falied");
+ }
+
for (int i = 0; i < __rowCount; i++)
{
DataRow* pNewRow = pDataSet->CreateDataRowN();
return hash;
}
+_DataSetImpl*
+_DataSetImpl::GetInstance(DataSet& dataSet)
+{
+ return dataSet.__pDataSetImpl;
+}
+
+const _DataSetImpl*
+_DataSetImpl::GetInstance(const DataSet& dataSet)
+{
+ return dataSet.__pDataSetImpl;
+}
+
}} // Tizen::Io