private IndexKey ResolveKey(IndexKey key) { if (key.Equals(IndexRange.FirstInSet)) { ResolveSortedSet(); return(index.GetKey(sortedSet[0])); } if (key.Equals(IndexRange.LastInSet)) { ResolveSortedSet(); return(index.GetKey(sortedSet[sortedSet.Length - 1])); } return(key); }
public static void SingleValueKeyEqual(object value1, object value2, bool expected) { var key1 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value1))); var key2 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value2))); Assert.Equal(expected, key1.Equals(key2)); }
public static void MultiValueKeyEqual(object value1a, object value1b, object value2a, object value2b, bool expected) { var key1 = new IndexKey(new [] { SqlObject.New(SqlValueUtil.FromObject(value1a)), SqlObject.New(SqlValueUtil.FromObject(value1b)) }); var key2 = new IndexKey(new[] { SqlObject.New(SqlValueUtil.FromObject(value2a)), SqlObject.New(SqlValueUtil.FromObject(value2b)) }); Assert.Equal(expected, key1.Equals(key2)); }
private long PositionOfRangePoint(RangeFieldOffset position, IndexKey val) { long p; IndexKey cell; switch (position) { case RangeFieldOffset.FirstValue: if (val.Equals(IndexRange.FirstInSet)) { return(0); } if (val.Equals(IndexRange.LastInSet)) { // Get the last value and search for the first instance of it. cell = Last; } else { cell = val; } p = SearchFirst(cell); // (If value not found) if (p < 0) { return(-(p + 1)); } return(p); case RangeFieldOffset.LastValue: if (val.Equals(IndexRange.LastInSet)) { return(RowCount - 1); } if (val.Equals(IndexRange.FirstInSet)) { // Get the first value. cell = First; } else { cell = val; } p = SearchLast(cell); // (If value not found) if (p < 0) { return(-(p + 1) - 1); } return(p); case RangeFieldOffset.BeforeFirstValue: if (val.Equals(IndexRange.FirstInSet)) { return(-1); } if (val.Equals(IndexRange.LastInSet)) { // Get the last value and search for the first instance of it. cell = Last; } else { cell = val; } p = SearchFirst(cell); // (If value not found) if (p < 0) { return(-(p + 1) - 1); } return(p - 1); case RangeFieldOffset.AfterLastValue: if (val.Equals(IndexRange.LastInSet)) { return(RowCount); } if (val.Equals(IndexRange.FirstInSet)) { // Get the first value. cell = First; } else { cell = val; } p = SearchLast(cell); // (If value not found) if (p < 0) { return(-(p + 1)); } return(p + 1); default: throw new InvalidOperationException("Unrecognised position."); } }