private static OPhysicalPosition createPhysicalPosition(final byte recordType, final long clusterPosition, final int version) { final OPhysicalPosition physicalPosition = new OPhysicalPosition(); physicalPosition.recordType = recordType; physicalPosition.recordSize = -1; physicalPosition.clusterPosition = clusterPosition; physicalPosition.recordVersion = version; return physicalPosition; }
public void copyFrom(final OPhysicalPosition iSource) { iSource.copyTo(this); }
private static OPhysicalPosition createPhysicalPosition(final byte recordType, final long clusterPosition, final int version) { final OPhysicalPosition physicalPosition = new OPhysicalPosition(); physicalPosition.recordType = recordType; physicalPosition.recordSize = -1; physicalPosition.clusterPosition = clusterPosition; physicalPosition.recordVersion = version; return physicalPosition; }
private static OPhysicalPosition[] convertToPhysicalPositions(final long[] clusterPositions) { final OPhysicalPosition[] positions = new OPhysicalPosition[clusterPositions.length]; for (int i = 0; i < positions.length; i++) { final OPhysicalPosition physicalPosition = new OPhysicalPosition(); physicalPosition.clusterPosition = clusterPositions[i]; positions[i] = physicalPosition; } return positions; }
private static OPhysicalPosition[] convertToPhysicalPositions(final long[] clusterPositions) { final OPhysicalPosition[] positions = new OPhysicalPosition[clusterPositions.length]; for (int i = 0; i < positions.length; i++) { final OPhysicalPosition physicalPosition = new OPhysicalPosition(); physicalPosition.clusterPosition = clusterPositions[i]; positions[i] = physicalPosition; } return positions; }
@Override public OPhysicalPosition[] call(ODatabaseDocumentInternal database) { return database.getStorage().ceilingPhysicalPositions(clusterId1, new OPhysicalPosition(0)); } });
@Override public OPhysicalPosition next() { try { if (positionsIndex == -1) { positionsToProcess = cluster.ceilingPositions(new OPhysicalPosition(min)); positionsIndex = 0; } if (positionsToProcess.length == 0) throw new NoSuchElementException(); final OPhysicalPosition result = positionsToProcess[positionsIndex]; positionsIndex++; if (positionsIndex >= positionsToProcess.length) { positionsToProcess = cluster.higherPositions(positionsToProcess[positionsToProcess.length - 1]); positionsIndex = 0; } return result; } catch (IOException e) { throw OException.wrapException(new ODatabaseException("Cannot read next record of cluster"), e); } }
OStorage storage = database.getStorage(); OPhysicalPosition[] positions = storage.ceilingPhysicalPositions(clusterId, new OPhysicalPosition(0)); while (positions.length > 0) { for (OPhysicalPosition position : positions) {
protected boolean prevPosition() { if (positionsToProcess == null) { positionsToProcess = dbStorage.floorPhysicalPositions(current.getClusterId(), new OPhysicalPosition(lastClusterEntry)); if (positionsToProcess == null) return false; if (positionsToProcess.length == 0) return false; currentEntryPosition = positionsToProcess.length; } else { if (currentEntry < firstClusterEntry) return false; } decrementEntreePosition(); while (positionsToProcess.length > 0 && currentEntryPosition < 0) { positionsToProcess = dbStorage.lowerPhysicalPositions(current.getClusterId(), positionsToProcess[0]); currentEntryPosition = positionsToProcess.length; decrementEntreePosition(); } if (positionsToProcess.length == 0) return false; currentEntry = positionsToProcess[currentEntryPosition].clusterPosition; if (currentEntry < firstClusterEntry) return false; current.setClusterPosition(currentEntry); return true; }
protected boolean nextPosition() { if (positionsToProcess == null) { positionsToProcess = dbStorage.ceilingPhysicalPositions(current.getClusterId(), new OPhysicalPosition(firstClusterEntry)); if (positionsToProcess == null) return false; } else { if (currentEntry >= lastClusterEntry) return false; } incrementEntreePosition(); while (positionsToProcess.length > 0 && currentEntryPosition >= positionsToProcess.length) { positionsToProcess = dbStorage .higherPhysicalPositions(current.getClusterId(), positionsToProcess[positionsToProcess.length - 1]); currentEntryPosition = -1; incrementEntreePosition(); } if (positionsToProcess.length == 0) return false; currentEntry = positionsToProcess[currentEntryPosition].clusterPosition; if (currentEntry > lastClusterEntry || currentEntry == ORID.CLUSTER_POS_INVALID) return false; current.setClusterPosition(currentEntry); return true; }
public boolean isDeleted(final ORID rid) { try { if (rid.isNew()) { throw new OStorageException("Passed record with id " + rid + " is new and cannot be stored."); } checkOpenness(); stateLock.acquireReadLock(); try { final OCluster cluster = getClusterById(rid.getClusterId()); checkOpenness(); return cluster.isDeleted(new OPhysicalPosition(rid.getClusterPosition())); } catch (final IOException ioe) { OLogManager.instance().error(this, "Retrieval of record '" + rid + "' cause: " + ioe.getMessage(), ioe); } finally { stateLock.releaseReadLock(); } return false; } catch (final RuntimeException ee) { throw logAndPrepareForRethrow(ee); } catch (final Error ee) { throw logAndPrepareForRethrow(ee); } catch (final Throwable t) { throw logAndPrepareForRethrow(t); } }
@Override public final ORecordMetadata getRecordMetadata(final ORID rid) { try { if (rid.isNew()) { throw new OStorageException("Passed record with id " + rid + " is new and cannot be stored."); } checkOpenness(); stateLock.acquireReadLock(); try { final OCluster cluster = getClusterById(rid.getClusterId()); checkOpenness(); final OPhysicalPosition ppos = cluster.getPhysicalPosition(new OPhysicalPosition(rid.getClusterPosition())); if (ppos == null) { return null; } return new ORecordMetadata(rid, ppos.recordVersion); } catch (final IOException ioe) { OLogManager.instance().error(this, "Retrieval of record '" + rid + "' cause: " + ioe.getMessage(), ioe); } finally { stateLock.releaseReadLock(); } return null; } catch (final RuntimeException ee) { throw logAndPrepareForRethrow(ee); } catch (final Error ee) { throw logAndPrepareForRethrow(ee); } catch (final Throwable t) { throw logAndPrepareForRethrow(t); } }
try { final OPhysicalPosition ppos = cluster.getPhysicalPosition(new OPhysicalPosition(rid.getClusterPosition())); if (!checkForRecordValidity(ppos)) { final int recordVersion = -1;
try { final OPhysicalPosition ppos = cluster.getPhysicalPosition(new OPhysicalPosition(rid.getClusterPosition()));
private OStorageOperationResult<Boolean> doHideMethod(final ORecordId rid, final OCluster cluster) { try { final OPhysicalPosition ppos = cluster.getPhysicalPosition(new OPhysicalPosition(rid.getClusterPosition())); if (ppos == null) { // ALREADY HIDDEN return new OStorageOperationResult<>(false); } makeStorageDirty(); boolean rollback = false; atomicOperationsManager.startAtomicOperation((String) null, true); try { cluster.hideRecord(ppos.clusterPosition); final ORecordSerializationContext context = ORecordSerializationContext.getContext(); if (context != null) { context.executeOperations(this); } } catch (final Exception e) { rollback = true; throw e; } finally { atomicOperationsManager.endAtomicOperation(rollback); } return new OStorageOperationResult<>(true); } catch (final IOException ioe) { OLogManager.instance().error(this, "Error on deleting record " + rid + "( cluster: " + cluster + ")", ioe); throw OException.wrapException(new OStorageException("Error on deleting record " + rid + "( cluster: " + cluster + ")"), ioe); } }
positions.put(recordOperation, new OPhysicalPosition(rec.getIdentity().getClusterPosition())); } else { throw new OStorageException("Impossible to commit a transaction with not valid rid in pre-allocated commit");
final OPhysicalPosition physicalPosition = new OPhysicalPosition(); physicalPosition.recordSize = -1;
final OPhysicalPosition physicalPosition = new OPhysicalPosition(); physicalPosition.recordSize = -1;