public DocumentDataContainerEnumerator_IndexScan( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, IReadOnlyList <FieldMetadata> fields, int countOfMainFields, SortIndex sortIndex, bool descending) : base(untrimmedCount, rowData, dataContainer, fields, countOfMainFields) { if (sortIndex == null) { throw new ArgumentNullException("sortIndex"); } // note that we ignore value of sortIndex.IsValid here // that's because invalidation of index only happens when the data is stale // we only check state of an index and optionally update it in the beginning of processing pipeline if (sortIndex.OrderData == null || sortIndex.OrderData.Length > untrimmedCount) { throw new ArgumentException("Index on column is in invalid state", "sortIndex"); } m_sortIndex = sortIndex; m_descending = descending; PositionInIndex = descending ? m_sortIndex.ValidDocCount : -1; ReadStructureAndTakeLocks(); }
public DocumentDataContainer RequireDocumentContainer(int docType) { DocumentDataContainer docStore; if (m_documentDataContainers.TryGetValue(docType, out docStore)) { return(docStore); } var doclock = m_documentDataContainerLocks[docType]; lock (doclock) { if (!m_documentDataContainers.TryGetValue(docType, out docStore)) { docStore = new DocumentDataContainer( m_dataContainerDescriptor, m_dataContainerDescriptor.RequireDocumentType(docType), m_memoryPool, m_tracer); if (!string.IsNullOrEmpty(m_storageRoot)) { var stats = ReadStatsFromStore(m_storageRoot); docStore.ReadDataFromStore(GetDocRootPath(m_storageRoot, m_dataContainerDescriptor.RequireDocumentType(docType)), stats.TryGetDocumentCount(docType)); } m_documentDataContainers.Add(docType, docStore); } return(docStore); } }
public DocumentDataContainerEnumerator_IndexScan( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, IReadOnlyList<FieldMetadata> fields, int countOfMainFields, SortIndex sortIndex, bool descending) : base(untrimmedCount, rowData, dataContainer, fields, countOfMainFields) { if (sortIndex == null) { throw new ArgumentNullException("sortIndex"); } // note that we ignore value of sortIndex.IsValid here // that's because invalidation of index only happens when the data is stale // we only check state of an index and optionally update it in the beginning of processing pipeline if (sortIndex.OrderData == null || sortIndex.OrderData.Length > untrimmedCount) { throw new ArgumentException("Index on column is in invalid state", "sortIndex"); } m_sortIndex = sortIndex; m_descending = descending; PositionInIndex = descending ? m_sortIndex.ValidDocCount : -1; ReadStructureAndTakeLocks(); }
public DocumentDataContainerEnumerator_FullScan( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, IReadOnlyList<FieldMetadata> fields, int countOfMainFields) : base(untrimmedCount, rowData, dataContainer, fields, countOfMainFields) { ReadStructureAndTakeLocks(); }
public DocumentDataContainerEnumerator_FullScan( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, IReadOnlyList <FieldMetadata> fields, int countOfMainFields) : base(untrimmedCount, rowData, dataContainer, fields, countOfMainFields) { ReadStructureAndTakeLocks(); }
public DocumentDataContainerEnumerator_BulkPkScan( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, List<FieldMetadata> fields, IDriverDataEnumerator inputDataEnumerator) : base(untrimmedCount, rowData, dataContainer, fields, fields.Count - 1) { if (inputDataEnumerator == null) { throw new ArgumentNullException("inputDataEnumerator"); } m_inputEnumerator = inputDataEnumerator; ReadStructureAndTakeLocks(); }
public DocumentDataContainerEnumerator_BulkPkScan( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, List <FieldMetadata> fields, IDriverDataEnumerator inputDataEnumerator) : base(untrimmedCount, rowData, dataContainer, fields, fields.Count - 1) { if (inputDataEnumerator == null) { throw new ArgumentNullException("inputDataEnumerator"); } m_inputEnumerator = inputDataEnumerator; ReadStructureAndTakeLocks(); }
protected DocumentDataContainerEnumeratorBase( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, IReadOnlyList <FieldMetadata> fields, int countOfMainFields) { if (untrimmedCount < 0) { throw new ArgumentOutOfRangeException("untrimmedCount", untrimmedCount, "Untrimmed count cannot be negative"); } if (rowData == null) { throw new ArgumentNullException("rowData"); } if (dataContainer == null) { throw new ArgumentNullException("dataContainer"); } if (fields == null) { throw new ArgumentNullException("fields"); } if (CountOfMainFields < 0 || CountOfMainFields > fields.Count) { throw new ArgumentOutOfRangeException("countOfMainFields", countOfMainFields, "Invalid number of first-priority fetching fields"); } Position = -1; UntrimmedCount = untrimmedCount; RowData = rowData; DataContainer = dataContainer; Fields = fields; CountOfMainFields = countOfMainFields; RowDataOrdinalToColumnStoreIndex = new int[RowData.FieldTypes.Length]; // ancestors must also invoke ReadStructureAndTakeLocks in their constructor }
protected DocumentDataContainerEnumeratorBase( int untrimmedCount, DriverRowData rowData, DocumentDataContainer dataContainer, IReadOnlyList<FieldMetadata> fields, int countOfMainFields) { if (untrimmedCount < 0) { throw new ArgumentOutOfRangeException("untrimmedCount", untrimmedCount, "Untrimmed count cannot be negative"); } if (rowData == null) { throw new ArgumentNullException("rowData"); } if (dataContainer == null) { throw new ArgumentNullException("dataContainer"); } if (fields == null) { throw new ArgumentNullException("fields"); } if (CountOfMainFields < 0 || CountOfMainFields > fields.Count) { throw new ArgumentOutOfRangeException("countOfMainFields", countOfMainFields, "Invalid number of first-priority fetching fields"); } Position = -1; UntrimmedCount = untrimmedCount; RowData = rowData; DataContainer = dataContainer; Fields = fields; CountOfMainFields = countOfMainFields; RowDataOrdinalToColumnStoreIndex = new int[RowData.FieldTypes.Length]; // ancestors must also invoke ReadStructureAndTakeLocks in their constructor }
public SortIndexManager(DocumentDataContainer documentStore) { if (documentStore == null) { throw new ArgumentNullException("documentStore"); } m_documentStore = documentStore; m_fieldIdToIndexHandle = new ConcurrentDictionary<int, int>(); if (m_documentStore.FieldIdToColumnStore.Count != m_documentStore.DocDesc.Fields.Length) { throw new Exception("Internal error: fieldid->colstore map and array of fields in document descriptor have different lengths"); } m_fieldIndexes = new SortIndex[m_documentStore.FieldIdToColumnStore.Count]; for (var ordinal = 0; ordinal < m_fieldIndexes.Length; ordinal++) { m_fieldIndexes[ordinal] = new SortIndex(); m_fieldIdToIndexHandle[m_documentStore.DocDesc.Fields[ordinal]] = ordinal; } }
public SortIndexManager(DocumentDataContainer documentStore) { if (documentStore == null) { throw new ArgumentNullException("documentStore"); } m_documentStore = documentStore; m_fieldIdToIndexHandle = new ConcurrentDictionary <int, int>(); if (m_documentStore.FieldIdToColumnStore.Count != m_documentStore.DocDesc.Fields.Length) { throw new Exception("Internal error: fieldid->colstore map and array of fields in document descriptor have different lengths"); } m_fieldIndexes = new SortIndex[m_documentStore.FieldIdToColumnStore.Count]; for (var ordinal = 0; ordinal < m_fieldIndexes.Length; ordinal++) { m_fieldIndexes[ordinal] = new SortIndex(); m_fieldIdToIndexHandle[m_documentStore.DocDesc.Fields[ordinal]] = ordinal; } }
/// <summary> /// Ctr. /// </summary> public RamDriverChangeset(RamDriver driver, DriverChangeBuffer changeBuffer, bool isBulk, DocumentDataContainer documentContainer, ColumnDataBase[] columnStores) { if (driver == null) { throw new ArgumentNullException("driver"); } if (changeBuffer == null) { throw new ArgumentNullException("changeBuffer"); } if (documentContainer == null) { throw new ArgumentNullException("documentContainer"); } Driver = driver; ChangeBuffer = changeBuffer; IsBulk = isBulk; ColumnStores = columnStores; DocumentContainer = documentContainer; }
public DocumentDataContainer RequireDocumentContainer(int docType) { DocumentDataContainer docStore; if (m_documentDataContainers.TryGetValue(docType, out docStore)) { return docStore; } var doclock = m_documentDataContainerLocks[docType]; lock (doclock) { if (!m_documentDataContainers.TryGetValue(docType, out docStore)) { docStore = new DocumentDataContainer( m_dataContainerDescriptor, m_dataContainerDescriptor.RequireDocumentType(docType), m_memoryPool, m_tracer); if (!string.IsNullOrEmpty(m_storageRoot)) { var stats = ReadStatsFromStore(m_storageRoot); docStore.ReadDataFromStore(GetDocRootPath(m_storageRoot, m_dataContainerDescriptor.RequireDocumentType(docType)), stats.TryGetDocumentCount(docType)); } m_documentDataContainers.Add(docType, docStore); } return docStore; } }