mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-04 18:49:00 -06:00
!= operator now uses indexes
This commit is contained in:
committed by
Daylon Wilkins
parent
1f8d3f08b9
commit
56280ef5ea
@@ -141,7 +141,7 @@ test_mutation() {
|
||||
}
|
||||
|
||||
@test "delete all one_pk, <>, pk" {
|
||||
test_mutation "delete from one_pk where pk1 <> 1024" "one_pk" "$one_pk_header"
|
||||
test_mutation "delete from one_pk where pk1 <> 1024" "one_pk" "$one_pk_header" "yes"
|
||||
}
|
||||
|
||||
@test "delete all two_pk, >, pk" {
|
||||
@@ -221,7 +221,7 @@ test_mutation() {
|
||||
}
|
||||
|
||||
@test "delete all one_pk, <>, pk + non-pk" {
|
||||
test_mutation "delete from one_pk where pk1 <> 1024 and c1 <> 1024" "one_pk" "$one_pk_header"
|
||||
test_mutation "delete from one_pk where pk1 <> 1024 and c1 <> 1024" "one_pk" "$one_pk_header" "yes"
|
||||
}
|
||||
|
||||
@test "delete all two_pk, >, pk + non-pk" {
|
||||
@@ -269,7 +269,7 @@ test_mutation() {
|
||||
}
|
||||
|
||||
@test "update all one_pk, <>, pk" {
|
||||
test_mutation "update one_pk set c2 = 256 where pk1 <> 1024" "one_pk" "$one_pk_all_updated"
|
||||
test_mutation "update one_pk set c2 = 256 where pk1 <> 1024" "one_pk" "$one_pk_all_updated" "yes"
|
||||
}
|
||||
|
||||
@test "update all two_pk, >, pk" {
|
||||
@@ -349,7 +349,7 @@ test_mutation() {
|
||||
}
|
||||
|
||||
@test "update all one_pk, <>, pk + non-pk" {
|
||||
test_mutation "update one_pk set c2 = 256 where pk1 <> 1024 and c1 <> 1024" "one_pk" "$one_pk_all_updated"
|
||||
test_mutation "update one_pk set c2 = 256 where pk1 <> 1024 and c1 <> 1024" "one_pk" "$one_pk_all_updated" "yes"
|
||||
}
|
||||
|
||||
@test "update all two_pk, >, pk + non-pk" {
|
||||
|
||||
14
go/go.sum
14
go/go.sum
@@ -134,18 +134,6 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm
|
||||
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
|
||||
github.com/dolthub/fslock v0.0.2 h1:8vUh47iKovgrtXNrXVIzsIoWLlspoXg+3nslhUzgKSw=
|
||||
github.com/dolthub/fslock v0.0.2/go.mod h1:0i7bsNkK+XHwFL3dIsSWeXSV7sykVzzVr6+jq8oeEo0=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201106005010-6faca804df09 h1:g5O/JQc4N5qQAxENlra7W2VbjdHqiltkvZoddiW+jfM=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201106005010-6faca804df09/go.mod h1:69ws/iwxL664UM+Rrdh69f0Bnix3pUHkHCS8uPc/cSI=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201110022037-011cc27c6296 h1:VmD/IO7FAg3g8q8BoZ2MQIljyApRpkpv3TB3Tp6k47Y=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201110022037-011cc27c6296/go.mod h1:mt/X2Nhcup61HdX72jdBwVKkWSA+2qrJYdq4fLvqkB0=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111024628-117786c2389a h1:F/3HM5q1FN3x8MaF4blQ7LeU2MwXyrxLADfkH7kVFiA=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111024628-117786c2389a/go.mod h1:mt/X2Nhcup61HdX72jdBwVKkWSA+2qrJYdq4fLvqkB0=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111071229-4fc31132e166 h1:EB9BGLZJDn2yCt4FXUlA2C6M3002bTQ7rLMg4c8c55g=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111071229-4fc31132e166/go.mod h1:mt/X2Nhcup61HdX72jdBwVKkWSA+2qrJYdq4fLvqkB0=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111173919-d00e2941f3f6 h1:kYZiRovVt4rrdKugw53d7WqHwLls5HOXnXpjrTlfRUw=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111173919-d00e2941f3f6/go.mod h1:mt/X2Nhcup61HdX72jdBwVKkWSA+2qrJYdq4fLvqkB0=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111174437-8e114c906f31 h1:TP6HcGdMUCVd0KEGH8k1HxJ3Qx8mRZVR7kyrXNEsC+I=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111174437-8e114c906f31/go.mod h1:mt/X2Nhcup61HdX72jdBwVKkWSA+2qrJYdq4fLvqkB0=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111233201-058dc85fd7d7 h1:ZtnTk8uvzBZG54seiHFVo94gFo2akmxuuOYQn5Wpyc0=
|
||||
github.com/dolthub/go-mysql-server v0.6.1-0.20201111233201-058dc85fd7d7/go.mod h1:K/xTlom+iL7IdXdA7OOgZRzm4D8ivqE68OqOlKH9ahg=
|
||||
github.com/dolthub/ishell v0.0.0-20201107004254-1592c0036c8d h1:i0u1Ze9wZF/zLgyOB/aLkG01gDDNQ48PR0/a80mxEyQ=
|
||||
@@ -154,8 +142,6 @@ github.com/dolthub/mmap-go v1.0.4-0.20201107010347-f9f2a9588a66 h1:WRPDbpJWEnPxP
|
||||
github.com/dolthub/mmap-go v1.0.4-0.20201107010347-f9f2a9588a66/go.mod h1:N5ZIbMGuDUpTpOFQ7HcsN6WSIpTGQjHP+Mz27AfmAgk=
|
||||
github.com/dolthub/sqllogictest/go v0.0.0-20201105013724-5123fc66e12c h1:ZIo6IOXU3/rJK4lp83QRq1zGhQrjQQtlmE2b7H1Vv/k=
|
||||
github.com/dolthub/sqllogictest/go v0.0.0-20201105013724-5123fc66e12c/go.mod h1:siLfyv2c92W1eN/R4QqG/+RjjX5W2+gCTRjZxBjI3TY=
|
||||
github.com/dolthub/vitess v0.0.0-20201105231317-8886950f2053 h1:d1IcMtRAas14KQWTLG3vh6hWhYTwZYvdtp1bUwVfdIU=
|
||||
github.com/dolthub/vitess v0.0.0-20201105231317-8886950f2053/go.mod h1:hUE8oSk2H5JZnvtlLBhJPYC8WZCA5AoSntdLTcBvdBM=
|
||||
github.com/dolthub/vitess v0.0.0-20201111232835-de121b254639 h1:zCse34nACeJiO+JUPwp4tbGY0ci4V1iPO3CrdYwKS3A=
|
||||
github.com/dolthub/vitess v0.0.0-20201111232835-de121b254639/go.mod h1:hUE8oSk2H5JZnvtlLBhJPYC8WZCA5AoSntdLTcBvdBM=
|
||||
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
|
||||
@@ -29,6 +29,7 @@ type DoltIndex interface {
|
||||
sql.Index
|
||||
sql.AscendIndex
|
||||
sql.DescendIndex
|
||||
sql.NegateIndex
|
||||
Schema() schema.Schema
|
||||
IndexSchema() schema.Schema
|
||||
TableData() types.Map
|
||||
@@ -177,6 +178,26 @@ func (di *doltIndex) Get(keys ...interface{}) (sql.IndexLookup, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Not implements sql.NegateIndex
|
||||
func (di *doltIndex) Not(keys ...interface{}) (sql.IndexLookup, error) {
|
||||
tpl, err := di.keysToTuple(keys)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
r1 := lookup.LessThanRange(tpl)
|
||||
r2, err := lookup.GreaterThanRange(tpl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &doltIndexLookup{
|
||||
idx: di,
|
||||
ranges: []lookup.Range{
|
||||
r1,
|
||||
r2,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Has implements sql.Index
|
||||
func (*doltIndex) Has(partition sql.Partition, key ...interface{}) (bool, error) {
|
||||
return false, errors.New("unimplemented")
|
||||
|
||||
@@ -183,6 +183,14 @@ func (di *testMergeableDoltIndex) Get(keys ...interface{}) (sql.IndexLookup, err
|
||||
finalRanges: di.finalRanges,
|
||||
}, err
|
||||
}
|
||||
func (di *testMergeableDoltIndex) Not(keys ...interface{}) (sql.IndexLookup, error) {
|
||||
indexLookup, err := di.doltIndex.Not(keys...)
|
||||
return &testMergeableIndexLookup{
|
||||
doltIndexLookup: indexLookup.(*doltIndexLookup),
|
||||
t: di.t,
|
||||
finalRanges: di.finalRanges,
|
||||
}, err
|
||||
}
|
||||
func (di *testMergeableDoltIndex) AscendGreaterOrEqual(keys ...interface{}) (sql.IndexLookup, error) {
|
||||
indexLookup, err := di.doltIndex.AscendGreaterOrEqual(keys...)
|
||||
return &testMergeableIndexLookup{
|
||||
|
||||
@@ -83,6 +83,59 @@ func TestMergeableIndexes(t *testing.T) {
|
||||
},
|
||||
[]int64{},
|
||||
},
|
||||
{
|
||||
"v1 = 11 OR v1 != 11",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 = 11 OR v1 != 15",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(15)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 = 11 AND v1 != 15",
|
||||
[]lookup.Range{
|
||||
lookup.MustClosedRange(idxv1.tuple(11), idxv1.tuple(11)),
|
||||
},
|
||||
[]int64{1},
|
||||
},
|
||||
{
|
||||
"v1 = 11 OR v1 = 15 OR v1 != 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(19)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(19)),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8},
|
||||
},
|
||||
{
|
||||
"v1 = 11 OR v1 = 15 AND v1 != 19",
|
||||
[]lookup.Range{
|
||||
lookup.MustClosedRange(idxv1.tuple(11), idxv1.tuple(11)),
|
||||
lookup.MustClosedRange(idxv1.tuple(15), idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{1, 5},
|
||||
},
|
||||
{
|
||||
"v1 = 11 AND v1 = 15 OR v1 != 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(19)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(19)),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8},
|
||||
},
|
||||
{
|
||||
"v1 = 11 AND v1 = 15 AND v1 != 19",
|
||||
[]lookup.Range{
|
||||
lookup.EmptyRange(),
|
||||
},
|
||||
[]int64{},
|
||||
},
|
||||
{
|
||||
"v1 = 11 OR v1 > 15",
|
||||
[]lookup.Range{
|
||||
@@ -259,6 +312,286 @@ func TestMergeableIndexes(t *testing.T) {
|
||||
},
|
||||
[]int64{},
|
||||
},
|
||||
{
|
||||
"v1 != 11",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(11)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 <> 11",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(11)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 <> 11 OR v1 <> 15",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 <> 11 AND v1 <> 15",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 OR v1 != 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 <> 11 OR v1 <> 15 OR v1 <> 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 AND v1 != 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 <> 11 OR v1 <> 15 AND v1 <> 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 AND v1 != 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustOpenRange(idxv1.tuple(15), idxv1.tuple(19)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(19)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8},
|
||||
},
|
||||
{
|
||||
"v1 <> 11 AND v1 <> 15 AND v1 <> 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustOpenRange(idxv1.tuple(15), idxv1.tuple(19)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(19)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 > 15",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(11)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 > 15",
|
||||
[]lookup.Range{
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 OR v1 > 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 AND v1 > 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(11)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 OR v1 > 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 AND v1 > 19",
|
||||
[]lookup.Range{
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(19)),
|
||||
},
|
||||
[]int64{},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 >= 15",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(11)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 >= 15",
|
||||
[]lookup.Range{
|
||||
lookup.GreaterOrEqualRange(idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 OR v1 >= 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 AND v1 >= 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(11)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 OR v1 >= 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustGreaterThanRange(idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 AND v1 >= 19",
|
||||
[]lookup.Range{
|
||||
lookup.GreaterOrEqualRange(idxv1.tuple(19)),
|
||||
},
|
||||
[]int64{9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 < 15",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 < 15",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 OR v1 < 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 AND v1 < 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 OR v1 < 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 AND v1 < 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustOpenRange(idxv1.tuple(15), idxv1.tuple(19)),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 <= 15",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 <= 15",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustCustomRange(idxv1.tuple(11), idxv1.tuple(15),
|
||||
lookup.Open, lookup.Closed),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 5},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 OR v1 <= 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 OR v1 != 15 AND v1 <= 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 OR v1 <= 19",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 != 11 AND v1 != 15 AND v1 <= 19",
|
||||
[]lookup.Range{
|
||||
lookup.LessThanRange(idxv1.tuple(11)),
|
||||
lookup.MustOpenRange(idxv1.tuple(11), idxv1.tuple(15)),
|
||||
lookup.MustCustomRange(idxv1.tuple(15), idxv1.tuple(19),
|
||||
lookup.Open, lookup.Closed),
|
||||
},
|
||||
[]int64{0, 2, 3, 4, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 > 11",
|
||||
[]lookup.Range{
|
||||
@@ -803,6 +1136,23 @@ func TestMergeableIndexes(t *testing.T) {
|
||||
},
|
||||
[]int64{1, 2, 3, 4, 5},
|
||||
},
|
||||
{
|
||||
"v1 BETWEEN 11 AND 15 OR v1 != 13",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 BETWEEN 11 AND 15 AND v1 != 13",
|
||||
[]lookup.Range{
|
||||
lookup.MustCustomRange(idxv1.tuple(11), idxv1.tuple(13),
|
||||
lookup.Closed, lookup.Open),
|
||||
lookup.MustCustomRange(idxv1.tuple(13), idxv1.tuple(15),
|
||||
lookup.Open, lookup.Closed),
|
||||
},
|
||||
[]int64{1, 2, 4, 5},
|
||||
},
|
||||
{
|
||||
"v1 BETWEEN 11 AND 15 AND v1 <= 19",
|
||||
[]lookup.Range{
|
||||
@@ -841,6 +1191,21 @@ func TestMergeableIndexes(t *testing.T) {
|
||||
},
|
||||
[]int64{2, 3},
|
||||
},
|
||||
{
|
||||
"v1 IN (11, 12, 13) OR v1 != 12",
|
||||
[]lookup.Range{
|
||||
lookup.AllRange(),
|
||||
},
|
||||
[]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||
},
|
||||
{
|
||||
"v1 IN (11, 12, 13) AND v1 != 12",
|
||||
[]lookup.Range{
|
||||
lookup.MustClosedRange(idxv1.tuple(11), idxv1.tuple(11)),
|
||||
lookup.MustClosedRange(idxv1.tuple(13), idxv1.tuple(13)),
|
||||
},
|
||||
[]int64{1, 3},
|
||||
},
|
||||
{
|
||||
"v1 IN (11, 12, 13) OR v1 >= 13 AND v1 < 15",
|
||||
[]lookup.Range{
|
||||
|
||||
Reference in New Issue
Block a user