@@ -8,11 +8,11 @@ package scgraph
88import (
99 "sync"
1010
11- "github.com/RaduBerinde/btree" // TODO(#144504): switch to the newer btree
1211 "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/scpb"
1312 "github.com/cockroachdb/cockroach/pkg/sql/schemachanger/screl"
1413 "github.com/cockroachdb/cockroach/pkg/util/iterutil"
1514 "github.com/cockroachdb/errors"
15+ "github.com/google/btree"
1616)
1717
1818// edgeTreeOrder order in which the edge tree is sorted,
@@ -30,8 +30,8 @@ type getTargetIdxFunc = func(n *screl.Node) targetIdx
3030// depEdges is a data structure to store the set of depEdges. It offers
3131// in-order traversal of edges from or to any node in the graph.
3232type depEdges struct {
33- fromTo * btree.BTree
34- toFrom * btree.BTree
33+ fromTo * btree.BTreeG [ * depEdgeTreeEntry ]
34+ toFrom * btree.BTreeG [ * depEdgeTreeEntry ]
3535
3636 getTargetIdx getTargetIdxFunc
3737 edgeAlloc depEdgeAlloc
@@ -42,8 +42,8 @@ type depEdges struct {
4242func makeDepEdges (getTargetIdx getTargetIdxFunc ) depEdges {
4343 const degree = 32 // arbitrary
4444 return depEdges {
45- fromTo : btree .New (degree ),
46- toFrom : btree .New (degree ),
45+ fromTo : btree .NewG [ * depEdgeTreeEntry ] (degree , ( * depEdgeTreeEntry ). less ),
46+ toFrom : btree .NewG [ * depEdgeTreeEntry ] (degree , ( * depEdgeTreeEntry ). less ),
4747 getTargetIdx : getTargetIdx ,
4848 }
4949}
@@ -109,7 +109,11 @@ func (et *depEdges) iterateToNode(n *screl.Node, it DepEdgeIterator) (err error)
109109// (target, status) node will be visited, and if the order is toFrom, then all
110110// edges to that (target, status) node will be visited.
111111func iterateDepEdges (
112- order edgeTreeOrder , t * btree.BTree , target targetIdx , status scpb.Status , it DepEdgeIterator ,
112+ order edgeTreeOrder ,
113+ t * btree.BTreeG [* depEdgeTreeEntry ],
114+ target targetIdx ,
115+ status scpb.Status ,
116+ it DepEdgeIterator ,
113117) (err error ) {
114118 var idx int
115119 if order == toFrom {
@@ -123,17 +127,17 @@ func iterateDepEdges(
123127 defer putDepEdgeTreeEntry (k2 )
124128 * k1 = depEdgeTreeEntry {edgeKey : qk , order : order , kind : queryStart }
125129 * k2 = depEdgeTreeEntry {edgeKey : qk , order : order , kind : queryEnd }
126- t .AscendRange (k1 , k2 , func (i btree. Item ) (wantMore bool ) {
127- err = it (i .( * depEdgeTreeEntry ). edge )
130+ t .AscendRange (k1 , k2 , func (i * depEdgeTreeEntry ) (wantMore bool ) {
131+ err = it (i .edge )
128132 return err == nil
129133 })
130134 return iterutil .Map (err )
131135}
132136
133137// iterates iterates all edges.
134138func (et * depEdges ) iterate (it DepEdgeIterator ) (err error ) {
135- et .fromTo .Ascend (func (i btree. Item ) bool {
136- err = it (i .( * depEdgeTreeEntry ). edge )
139+ et .fromTo .Ascend (func (i * depEdgeTreeEntry ) bool {
140+ err = it (i .edge )
137141 return err == nil
138142 })
139143 return iterutil .Map (err )
@@ -144,8 +148,8 @@ func (et *depEdges) get(k edgeKey) (*DepEdge, bool) {
144148 qk := getDepEdgeTreeEntry ()
145149 defer putDepEdgeTreeEntry (qk )
146150 * qk = depEdgeTreeEntry {edgeKey : k , order : fromTo }
147- if got := et .fromTo .Get (qk ); got != nil {
148- return got .( * depEdgeTreeEntry ). edge , true
151+ if got , _ := et .fromTo .Get (qk ); got != nil {
152+ return got .edge , true
149153 }
150154 return nil , false
151155}
@@ -205,8 +209,7 @@ const (
205209 queryEnd
206210)
207211
208- func (ek * depEdgeTreeEntry ) Less (other btree.Item ) bool {
209- o := other .(* depEdgeTreeEntry )
212+ func (ek * depEdgeTreeEntry ) less (o * depEdgeTreeEntry ) bool {
210213 less , eq := cmpEdgeTreeEntry (ek , o , true /* first */ )
211214 if eq {
212215 less , _ = cmpEdgeTreeEntry (ek , o , false /* first */ )
0 commit comments