int type = -1;
int size = 0;
int i = 0;
- String retString;
result r = E_SUCCESS;
int ret = 0;
ret = pFile->Read(&size, sizeof(int));
SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
- unique_ptr<char[]> pReadBuffer(new (std::nothrow) char[size + 1]);
- SysTryReturnResult(NID_IO, pReadBuffer != null, E_OUT_OF_MEMORY, "Failed to allocate memory for the read buffer.");
+ if (size > 0)
+ {
+ unique_ptr<char[]> pReadBuffer(new (std::nothrow) char[size + 1]);
+ SysTryReturnResult(NID_IO, pReadBuffer != null, E_OUT_OF_MEMORY, "Failed to allocate memory for the read buffer.");
- memset(pReadBuffer.get(), 0, size + 1);
- ret = pFile->Read(pReadBuffer.get(), size);
- SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
+ memset(pReadBuffer.get(), 0, size + 1);
- value = String(pReadBuffer.get());
+ ret = pFile->Read(pReadBuffer.get(), size);
+ SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
+ value = String(pReadBuffer.get());
+ }
return E_SUCCESS;
}
int type = -1;
int size = 0;
int i = 0;
- String retString;
result r = E_SUCCESS;
int ret = 0;
ret = pFile->Read(&size, sizeof(int));
SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
- unique_ptr<byte[]> pReadBuffer(new (std::nothrow) byte[size + 1]);
- SysTryReturnResult(NID_IO, pReadBuffer != null, E_OUT_OF_MEMORY, "Failed to allocate memory for the read buffer.");
+ if (size > 0)
+ {
+ unique_ptr<byte[]> pReadBuffer(new (std::nothrow) byte[size + 1]);
+ SysTryReturnResult(NID_IO, pReadBuffer != null, E_OUT_OF_MEMORY, "Failed to allocate memory for the read buffer.");
- memset(pReadBuffer.get(), 0, size + 1);
- ret = pFile->Read(pReadBuffer.get(), size);
- SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
+ memset(pReadBuffer.get(), 0, size + 1);
+ ret = pFile->Read(pReadBuffer.get(), size);
+ SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
- r = value.SetArray(pReadBuffer.get(), 0, size);
- SysTryReturn(NID_IO, !IsFailed(r), r, r, "[%s] Propagated.", GetErrorMessage(r));
+ r = value.SetArray(pReadBuffer.get(), 0, size);
+ SysTryReturn(NID_IO, !IsFailed(r), r, r, "[%s] Propagated.", GetErrorMessage(r));
+ }
return E_SUCCESS;
}
int type = -1;
int size = 0;
int i = 0;
- String retString;
result r = E_SUCCESS;
int ret = 0;
SysTryReturnResult(NID_IO, size <= bufSize, E_OVERFLOW, "The output buffer is insufficient.");
- unique_ptr<byte[]> pReadBuffer(new (std::nothrow) byte[size + 1]);
- SysTryReturnResult(NID_IO, pReadBuffer != null, E_OUT_OF_MEMORY, "Failed to allocate memory for the read buffer.");
+ if (size > 0)
+ {
+ unique_ptr<byte[]> pReadBuffer(new (std::nothrow) byte[size + 1]);
+ SysTryReturnResult(NID_IO, pReadBuffer != null, E_OUT_OF_MEMORY, "Failed to allocate memory for the read buffer.");
- memset(pReadBuffer.get(), 0, size + 1);
- ret = pFile->Read(pReadBuffer.get(), size);
- SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
+ memset(pReadBuffer.get(), 0, size + 1);
+ ret = pFile->Read(pReadBuffer.get(), size);
+ SysTryReturnResult(NID_IO, ret, E_SYSTEM, "Failed to read data from the result set of the data control provider.");
- memcpy(buffer, pReadBuffer.get(), size);
+ memcpy(buffer, pReadBuffer.get(), size);
+ }
return E_SUCCESS;
}
int size = 0;
char* pReadBuffer = null;
int i = 0;
- String retString;
result r = E_SUCCESS;
int ret = 0;
SysTryReturn(NID_IO, false, E_SYSTEM, E_SYSTEM, "[%s] system error", GetErrorMessage(r));
}
- pReadBuffer = (char*) malloc(size + 1);
- SysTryReturn(NID_IO, pReadBuffer != NULL, E_SYSTEM, E_SYSTEM, "[E_OUT_OF_MEMORY] system error occurred.");
- memset(pReadBuffer, 0, size + 1);
-
- ret = pFile->Read(pReadBuffer, size);
- if (ret == 0)
+ if (size > 0)
{
- r = GetLastResult();
+ pReadBuffer = (char*) malloc(size + 1);
+ SysTryReturn(NID_IO, pReadBuffer != NULL, E_SYSTEM, E_SYSTEM, "[E_OUT_OF_MEMORY] system error occurred.");
+ memset(pReadBuffer, 0, size + 1);
+
+ ret = pFile->Read(pReadBuffer, size);
+ if (ret == 0)
+ {
+ r = GetLastResult();
+ free(pReadBuffer);
+ SysTryReturnResult(NID_IO, !(r == E_END_OF_FILE), E_INVALID_ARG, "columnIndex is out of range");
+ SysTryReturn(NID_IO, false, E_SYSTEM, E_SYSTEM, "[%s] system error", GetErrorMessage(r));
+ }
+
+ r = DateTime::Parse(pReadBuffer, value);
free(pReadBuffer);
- SysTryReturnResult(NID_IO, !(r == E_END_OF_FILE), E_INVALID_ARG, "columnIndex is out of range");
- SysTryReturn(NID_IO, false, E_SYSTEM, E_SYSTEM, "[%s] system error", GetErrorMessage(r));
}
- r = DateTime::Parse(pReadBuffer, value);
- free(pReadBuffer);
-
return r;
}
{
DbColumnType columnType = DB_COLUMNTYPE_UNDEFINED;
int type = -1;
+ int i = 0;
+ int size = 0;
result r = E_SUCCESS;
int ret = 0;
SysTryReturn(NID_IO, pFile != null, columnType, E_INVALID_STATE,
"[E_INVALID_STATE] This instance has not been properly constructed yet or has already been finalized.");
- r = pFile->Seek(FILESEEKPOSITION_BEGIN, __columnTypeOffset + columnIndex * sizeof(int));
- SysTryReturn(NID_IO, !IsFailed(r), columnType, E_SYSTEM, "Failed to seek.");
+ r = pFile->Seek(FILESEEKPOSITION_BEGIN, __currentOffset);
+ SysTryReturn(NID_IO, !IsFailed(r), columnType, E_SYSTEM, "[E_SYSTEM] Failed to seek.");
+
+ for (i = 0; i < columnIndex; i++) // move to column index
+ {
+ ret = pFile->Read(&type, sizeof(int));
+ if (ret == 0)
+ {
+ r = GetLastResult();
+ SysTryReturn(NID_IO, !(r == E_END_OF_FILE), columnType, E_INVALID_ARG, "[E_INVALID_ARG] The columnIndex is out of range.");
+ SysTryReturn(NID_IO, false, columnType, E_SYSTEM, "[%s] system error", GetErrorMessage(r));
+ }
+ ret = pFile->Read(&size, sizeof(int));
+ SysTryReturn(NID_IO, ret, columnType, E_SYSTEM, "[E_SYSTEM] Failed to read data from the result set of the data control provider.");
+
+ r = pFile->Seek(FILESEEKPOSITION_CURRENT, size);
+ SysTryReturn(NID_IO, !IsFailed(r), columnType, E_SYSTEM, "[E_SYSTEM] Failed to seek.");
+ }
+
ret = pFile->Read(&type, sizeof(int));
if (ret == 0)
{
r = GetLastResult();
SysTryReturn(NID_IO, !(r == E_END_OF_FILE), DB_COLUMNTYPE_UNDEFINED, E_INVALID_ARG,
"[E_INVALID_ARG] columnIndex is out of range");
- SysTryReturn(NID_IO, false, DB_COLUMNTYPE_UNDEFINED, E_SYSTEM, "[%s] system error, errno: %d", GetErrorMessage(r), errno);
+ SysTryReturn(NID_IO, false, DB_COLUMNTYPE_UNDEFINED, E_SYSTEM,
+ "[%s] system error, errno: %d", GetErrorMessage(r), errno);
}
+ SetLastResult(E_SUCCESS);
+
switch (type)
{
case 1: // int64
columnType = DB_COLUMNTYPE_BLOB;
break;
+ case 5: // null
+ columnType = DB_COLUMNTYPE_NULL;
+ break;
+
default:
- SetLastResult(E_INVALID_STATE);
+ SysLogException(NID_IO, E_SYSTEM, "Found undefined column type (%d).", type);
break;
}
- SetLastResult(E_SUCCESS);
return columnType;
}