public SessionDataSet()

in src/Apache.IoTDB/DataStructure/SessionDataSet.cs [56:110]


        public SessionDataSet(string sql, TSExecuteStatementResp resp, Client client, ConcurrentClientQueue clientQueue, long statementId)
        {
            _clientQueue = clientQueue;
            _client = client;
            _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);
            // column name -> column location
            _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);

            _columnNames = resp.Columns;
            _columnTypeLst = resp.DataTypeList;

            int deduplicateIdx = 0;
            Dictionary<string, int> columnToFirstIndexMap = new Dictionary<string, int>();
            for (var i = 0; i < _columnSize; i++)
            {
                var columnName = _columnNames[i];
                if (_columnNameIndexMap.ContainsKey(columnName))
                {
                    _duplicateLocation[i] = columnToFirstIndexMap[columnName];
                }
                else
                {
                    columnToFirstIndexMap[columnName] = i;
                    if (resp.ColumnNameIndexMap != null)
                    {
                        int valueIndex = resp.ColumnNameIndexMap[columnName];
                        _columnNameIndexMap[columnName] = valueIndex;
                        _valueBufferLst.Add(new ByteBuffer(_queryDataset.ValueList[valueIndex]));
                        _bitmapBufferLst.Add(new ByteBuffer(_queryDataset.BitmapList[valueIndex]));
                    }
                    else
                    {
                        _columnNameIndexMap[columnName] = deduplicateIdx;
                        _valueBufferLst.Add(new ByteBuffer(_queryDataset.ValueList[deduplicateIdx]));
                        _bitmapBufferLst.Add(new ByteBuffer(_queryDataset.BitmapList[deduplicateIdx]));
                    }
                    deduplicateIdx++;
                }
            }
        }