From d478dd9d94e6a89b5c4bc29bd48eb8c168eedb74 Mon Sep 17 00:00:00 2001 From: Jaden Weiss Date: Wed, 10 Jun 2020 09:23:39 -0400 Subject: [PATCH 1/2] fix BSI comparison match-all-but-one operation --- fragment.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/fragment.go b/fragment.go index cc2dfcc20..5f26828ec 100644 --- a/fragment.go +++ b/fragment.go @@ -1270,12 +1270,12 @@ func (f *fragment) rangeLTUnsigned(filter *Row, bitDepth uint, predicate uint64, return filter, nil case predicate == (1< Date: Wed, 10 Jun 2020 10:09:33 -0400 Subject: [PATCH 2/2] add regression test for BSI match-all-but-one operations --- fragment_internal_test.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/fragment_internal_test.go b/fragment_internal_test.go index 2a554bfc1..5912eb132 100644 --- a/fragment_internal_test.go +++ b/fragment_internal_test.go @@ -624,6 +624,23 @@ func TestFragment_Range(t *testing.T) { } }) + t.Run("LTMaxRegression", func(t *testing.T) { + f := mustOpenFragment("i", "f", viewStandard, 0, "") + defer f.Clean(t) + + if _, err := f.setValue(1, 2, 3); err != nil { + t.Fatal(err) + } else if _, err := f.setValue(2, 2, 0); err != nil { + t.Fatal(err) + } + + if b, err := f.rangeLTUnsigned(NewRow(1, 2), 2, 3, false); err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(b.Columns(), []uint64{2}) { + t.Fatalf("unepxected coulmns: %+v", b.Columns()) + } + }) + t.Run("GT", func(t *testing.T) { f := mustOpenFragment("i", "f", viewStandard, 0, "") defer f.Clean(t) @@ -672,6 +689,23 @@ func TestFragment_Range(t *testing.T) { } }) + t.Run("GTMinRegression", func(t *testing.T) { + f := mustOpenFragment("i", "f", viewStandard, 0, "") + defer f.Clean(t) + + if _, err := f.setValue(1, 2, 0); err != nil { + t.Fatal(err) + } else if _, err := f.setValue(2, 2, 1); err != nil { + t.Fatal(err) + } + + if b, err := f.rangeGTUnsigned(NewRow(1, 2), 2, 0, false); err != nil { + t.Fatal(err) + } else if !reflect.DeepEqual(b.Columns(), []uint64{2}) { + t.Fatalf("unepxected coulmns: %+v", b.Columns()) + } + }) + t.Run("BETWEEN", func(t *testing.T) { f := mustOpenFragment("i", "f", viewStandard, 0, "") defer f.Clean(t)