private List<Int64> getDatasetVersionEffectiveTupleIds(DatasetVersion datasetVersion)
{
List<Int64> tuples = new List<Int64>();
Dataset dataset = datasetVersion.Dataset;
if (dataset.Status == DatasetStatus.Deleted)
throw new Exception(string.Format("Provided dataset version {0} belongs to deleted dataset {1}.", datasetVersion.Id, dataset.Id));
Int64 latestVersionId = dataset.Versions.OrderByDescending(t => t.Timestamp).Where(p => p.Timestamp <= dataset.LastCheckIOTimestamp).First().Id; // no need to replace it with the STATUS version
if (datasetVersion.Id > latestVersionId)
throw new Exception(string.Format("Invalid version id. The dataset version id {0} is greater than the latest version number!", datasetVersion.Id));
if (latestVersionId == datasetVersion.Id && dataset.Status == DatasetStatus.CheckedOut) // its a request for the working copy
{
tuples = getWorkingCopyTupleIds(datasetVersion);
}
else if (latestVersionId == datasetVersion.Id && dataset.Status == DatasetStatus.CheckedIn) // its a request for the latest checked in version that should be served from the Tuples table
{
tuples = getPrimaryTupleIds(datasetVersion);
}
else
{
throw new NotSupportedException(string.Format("Invalid version id. The dataset version id {0} is not referring to the latest or working versions. This function is able to access historical versions, use GetDatasetVersionEffectiveTuples function instead!", datasetVersion.Id));
}
return (tuples);
}