Example #1
0
        /// <summary> Before seek </summary>
        internal override IEnumerable<Bookmark> GetBookmarksGenerator(Table table, bool doNotRewind)
        {
            var cursor = table.OpenNativeCursor(SearchIndex);

            var session = cursor.Table.Database.CurrentSession;

            // seek to value
            var key = Converters.Convert(Val);

            Api.JetMakeKey(session, cursor, key, key.Length, MakeKeyGrbit.NewKey);
            Api.TrySeek(session, cursor, SeekGrbit.SeekGE);

            Api.JetMakeKey(session, cursor, key, key.Length, MakeKeyGrbit.NewKey | MakeKeyGrbit.SubStrLimit);
            Api.TrySetIndexRange(session, cursor, SetIndexRangeGrbit.RangeUpperLimit | SetIndexRangeGrbit.RangeInclusive);

            // step back
            if(!doNotRewind)
                cursor.StepBack();

            return cursor;
        }