in src/Apache.IoTDB/DataStructure/SessionDataSet.cs [190:266]
private void ConstructOneRow()
{
List<object> fieldList = new List<Object>();
for (int i = 0; i < _columnSize; i++)
{
if (_duplicateLocation.ContainsKey(i))
{
var field = fieldList[_duplicateLocation[i]];
fieldList.Add(field);
}
else
{
var columnValueBuffer = _valueBufferLst[i];
var columnBitmapBuffer = _bitmapBufferLst[i];
if (_rowIndex % 8 == 0)
{
_currentBitmap[i] = columnBitmapBuffer.GetByte();
}
object localField;
if (!IsNull(i, _rowIndex))
{
var columnDataType = GetDataTypeFromStr(_columnTypeLst[i]);
switch (columnDataType)
{
case TSDataType.BOOLEAN:
localField = columnValueBuffer.GetBool();
break;
case TSDataType.INT32:
// case TSDataType.DATE:
localField = columnValueBuffer.GetInt();
break;
case TSDataType.DATE:
localField = Utils.ParseIntToDate(columnValueBuffer.GetInt());
break;
case TSDataType.INT64:
case TSDataType.TIMESTAMP:
localField = columnValueBuffer.GetLong();
break;
case TSDataType.FLOAT:
localField = columnValueBuffer.GetFloat();
break;
case TSDataType.DOUBLE:
localField = columnValueBuffer.GetDouble();
break;
case TSDataType.TEXT:
case TSDataType.STRING:
// case TSDataType.BLOB:
localField = columnValueBuffer.GetStr();
break;
case TSDataType.BLOB:
localField = columnValueBuffer.GetBinary();
break;
// TODO
default:
string err_msg = "value format not supported";
throw new TException(err_msg, null);
}
fieldList.Add(localField);
}
else
{
localField = null;
fieldList.Add(DBNull.Value);
}
}
}
long timestamp = _timeBuffer.GetLong();
_rowIndex += 1;
_cachedRowRecord = new RowRecord(timestamp, fieldList, _columnNames);
}