Files
2026-07-13 12:32:25 +08:00

48 lines
1.1 KiB
Go
Executable File

package pgcatalog
import (
"testing"
assert "github.com/stretchr/testify/require"
)
func TestIndexes(t *testing.T) {
// Only the fields that impact indexing are set here
con1 := &pgConstraint{
oidNative: 100,
name: "abc",
tableOidNative: 300,
typeOidNative: 0, // this means the constraint is on a table, not a type
schemaOidNative: 500,
}
relidTypNameIdx := NewUniqueInMemIndexStorage[*pgConstraint](lessConstraintRelidTypeName)
relidTypNameIdx.Add(con1)
var foundElements []*pgConstraint
cb := func(c *pgConstraint) bool {
foundElements = append(foundElements, c)
return true
}
// lookup by relid
relidTypNameIdx.uniqTree.AscendRange(
&pgConstraint{tableOidNative: 300},
&pgConstraint{tableOidNative: 301},
cb,
)
assert.Equal(t, []*pgConstraint{con1}, foundElements)
foundElements = nil
// lookup by relid, typeid
relidTypNameIdx.uniqTree.AscendRange(
&pgConstraint{tableOidNative: 300, typeOidNative: 0},
&pgConstraint{tableOidNative: 300, typeOidNative: 1},
cb,
)
assert.Equal(t, []*pgConstraint{con1}, foundElements)
}