public Row LoadRow(Id tableName, DbPtr ptr) { using var tManager = new TableFileManager(new FileStream(GetTableFileName(tableName), FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 4096)); var block = tManager.LoadDataBlock(ptr.FilePtrBlock); var row = block.LoadRowRecord(ptr.InBlockPos, tManager.RowRecordSize); return(row.Fields); }
public OperationResult <string> AddTable(Table table) { _ = table ?? throw new ArgumentNullException(nameof(table)); if (File.Exists(GetTableFileName(table.TableMetaInf.Name))) { return(new OperationResult <string>(ExecutionState.failed, null, new TableNotExistError(FullTableName(table.TableMetaInf.Name)))); } using var tManager = new TableFileManager(new FileStream(GetTableFileName(table.TableMetaInf.Name), FileMode.Create), table, _blockSize); return(new OperationResult <string>(ExecutionState.performed, "")); }
public OperationResult <Table> LoadTable(Id tableName) { if (!File.Exists(GetTableFileName(tableName))) { return(new OperationResult <Table>(ExecutionState.failed, null, new TableNotExistError(FullTableName(tableName)))); } Table table; using (var tManager = new TableFileManager(new FileStream(GetTableFileName(tableName), FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 4096))) { table = tManager.LoadTable(); table.TableData = new DataStorageRowsInFiles(GetTableFileName(tableName)); } return(new OperationResult <Table>(ExecutionState.performed, table)); }
public OperationResult <Tuple <long, long> > InsertRow(Id tableName, Row fields) { if (!File.Exists(GetTableFileName(tableName))) { return(new OperationResult <Tuple <long, long> >(ExecutionState.failed, new Tuple <long, long>(0, 0), new TableNotExistError(FullTableName(tableName)))); } using var manager = new TableFileManager(new FileStream(GetTableFileName(tableName), FileMode.Open, FileAccess.ReadWrite, FileShare.Read, 4096)); var rowRecord = new RowRecord(fields); manager.InsertRecord(rowRecord); return(new OperationResult <Tuple <long, long> >(ExecutionState.performed, new Tuple <long, long>(manager.readCount, manager.writeCount))); }
public OperationResult <Tuple <long, long> > UpdateAllRow(Id tableName, Row newRow, Predicate <Row> match) { if (!File.Exists(GetTableFileName(tableName))) { return(new OperationResult <Tuple <long, long> >(ExecutionState.failed, new Tuple <long, long>(0, 0), new TableNotExistError(FullTableName(tableName)))); } using var manager = new TableFileManager(new FileStream(GetTableFileName(tableName), FileMode.Open, FileAccess.ReadWrite, FileShare.Read, 4096)); using var tableData = new DataStorageRowsInFilesEnumerator(manager); var isnLast = tableData.MoveNext(); while (isnLast) { isnLast = match(tableData.Current) ? tableData.UpdateCurrentRow(newRow) : tableData.MoveNext(); } return(new OperationResult <Tuple <long, long> >(ExecutionState.performed, new Tuple <long, long>(manager.readCount, manager.writeCount))); }
public DataStorageRowsInFilesEnumerator(TableFileManager tManager) { _tManager = tManager; Reset(); }
public TableFileManagerDataBlockNodeEnumerator(TableFileManager tManager_) { _tManager = tManager_; Reset(); }