JET / Esent: SeekEQ не находит совпадений с индексом из нескольких столбцов и подстановочными знаками - PullRequest
0 голосов
/ 18 марта 2020

У меня есть таблица из 5 столбцов с первичным индексом из 2 столбцов. Допустим, индекс определен как (Col1, Col2).

В следующем фрагменте Api.TrySeek возвращает значение false, и я не уверен, почему:

Api.JetSetCurrentIndex(session, table, null);

// this should match on Col1 = colVal1 and Col2 = *
Api.MakeKey(session, table, colVal1, MakeKeyGrbit.NewKey | MakeKeyGrbit.FullColumnStartLimit);

if (Api.TrySeek(session, table, SeekGrbit.SeekEQ)) // why is this false??
{
    Api.MakeKey(session, table, colVal1, MakeKeyGrbit.NewKey | MakeKeyGrbit.FullColumnEndLimit);

    if (Api.TrySetIndexRange(session, table, SetIndexRangeGrbit.RangeUpperLimit | SetIndexRangeGrbit.RangeInclusive))
    {
         <loop through entries in index range>

Однако это возвращает true, если я использую SeekGrbit.SeekGE. Может кто-нибудь объяснить, почему? Разве SeekEQ не работает с подстановочными столбцами, а SeekGE?

В l oop я дважды проверил, что все записи имеют Col1 == colVal1, чтобы исключить возможность того, что он просто находит записи где Col1> colVal1.

...