in src/Apache.IoTDB/DataStructure/SessionDataSet.cs [36:93]
public SessionDataSet(string sql, TSExecuteStatementResp resp, ConcurrentClientQueue clientQueue, long statementId)
{
_clientQueue = clientQueue;
_sql = sql;
_queryDataset = resp.QueryDataSet;
_queryId = resp.QueryId;
_statementId = statementId;
_columnSize = resp.Columns.Count;
_currentBitmap = new byte[_columnSize];
_columnNames = new List<string>();
_timeBuffer = new ByteBuffer(_queryDataset.Time);
_columnNameIndexMap = new Dictionary<string, int>();
_columnTypeLst = new List<string>();
_duplicateLocation = new Dictionary<int, int>();
_valueBufferLst = new List<ByteBuffer>();
_bitmapBufferLst = new List<ByteBuffer>();
// some internal variable
_hasCatchedResult = false;
_rowIndex = 0;
RowCount = _queryDataset.Time.Length / sizeof(long);
if (resp.ColumnNameIndexMap != null)
{
for (var index = 0; index < resp.Columns.Count; index++)
{
_columnNames.Add("");
_columnTypeLst.Add("");
}
for (var index = 0; index < resp.Columns.Count; index++)
{
var name = resp.Columns[index];
_columnNames[resp.ColumnNameIndexMap[name]] = name;
_columnTypeLst[resp.ColumnNameIndexMap[name]] = resp.DataTypeList[index];
}
}
else
{
_columnNames = resp.Columns;
_columnTypeLst = resp.DataTypeList;
}
for (int index = 0; index < _columnNames.Count; index++)
{
var columnName = _columnNames[index];
if (_columnNameIndexMap.ContainsKey(columnName))
{
_duplicateLocation[index] = _columnNameIndexMap[columnName];
}
else
{
_columnNameIndexMap[columnName] = index;
}
_valueBufferLst.Add(new ByteBuffer(_queryDataset.ValueList[index]));
_bitmapBufferLst.Add(new ByteBuffer(_queryDataset.BitmapList[index]));
}
}