@@ -23,7 +23,6 @@ import (
23
23
"github.com/cockroachdb/cockroach/pkg/sql/sessiondata"
24
24
"github.com/cockroachdb/cockroach/pkg/util/buildutil"
25
25
"github.com/cockroachdb/cockroach/pkg/util/deduplicate"
26
- "github.com/cockroachdb/cockroach/pkg/util/encoding"
27
26
"github.com/cockroachdb/cockroach/pkg/util/intsets"
28
27
"github.com/cockroachdb/cockroach/pkg/util/log"
29
28
"github.com/cockroachdb/errors"
@@ -438,7 +437,7 @@ func (ru *Updater) UpdateRow(
438
437
// putFn and sameKeyPutFn are the functions that should be invoked in
439
438
// order to write the new k/v entry. If the key doesn't change,
440
439
// sameKeyPutFn will be used, otherwise putFn will be used.
441
- var putFn , sameKeyPutFn func (context.Context , Putter , * roachpb.Key , * roachpb.Value , bool , []encoding. Direction )
440
+ var putFn , sameKeyPutFn func (context.Context , Putter , * roachpb.Key , * roachpb.Value , bool , * RowHelper , lazyIndexDirs )
442
441
if index .ForcePut () {
443
442
// See the comment on (catalog.Index).ForcePut() for more details.
444
443
// TODO(#140695): re-evaluate the lock need when we enable buffered
@@ -508,7 +507,7 @@ func (ru *Updater) UpdateRow(
508
507
if err = ru .Helper .deleteIndexEntry (
509
508
ctx , b , index , & oldEntry .Key , alreadyLocked ,
510
509
ru .Helper .sd .BufferedWritesUseLockingOnNonUniqueIndexes ,
511
- traceKV , ru . Helper . secIndexValDirs [ i ] ,
510
+ traceKV , secondaryIndexDirs ( i ) ,
512
511
); err != nil {
513
512
return nil , err
514
513
}
@@ -528,9 +527,9 @@ func (ru *Updater) UpdateRow(
528
527
}
529
528
530
529
if sameKey {
531
- sameKeyPutFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , ru .Helper . secIndexValDirs [ i ] )
530
+ sameKeyPutFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , & ru .Helper , secondaryIndexDirs ( i ) )
532
531
} else {
533
- putFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , ru .Helper . secIndexValDirs [ i ] )
532
+ putFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , & ru .Helper , secondaryIndexDirs ( i ) )
534
533
}
535
534
writtenIndexes .Add (i )
536
535
} else if oldEntry .Family < newEntry .Family {
@@ -545,7 +544,7 @@ func (ru *Updater) UpdateRow(
545
544
if err = ru .Helper .deleteIndexEntry (
546
545
ctx , b , index , & oldEntry .Key , alreadyLocked ,
547
546
ru .Helper .sd .BufferedWritesUseLockingOnNonUniqueIndexes ,
548
- traceKV , ru . Helper . secIndexValDirs [ i ] ,
547
+ traceKV , secondaryIndexDirs ( i ) ,
549
548
); err != nil {
550
549
return nil , err
551
550
}
@@ -560,7 +559,7 @@ func (ru *Updater) UpdateRow(
560
559
561
560
// In this case, the index now has a k/v that did not exist
562
561
// in the old row, so we put the new key in place.
563
- putFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , ru .Helper . secIndexValDirs [ i ] )
562
+ putFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , & ru .Helper , secondaryIndexDirs ( i ) )
564
563
writtenIndexes .Add (i )
565
564
newIdx ++
566
565
}
@@ -574,7 +573,7 @@ func (ru *Updater) UpdateRow(
574
573
if err = ru .Helper .deleteIndexEntry (
575
574
ctx , b , index , & oldEntry .Key , alreadyLocked ,
576
575
ru .Helper .sd .BufferedWritesUseLockingOnNonUniqueIndexes ,
577
- traceKV , ru . Helper . secIndexValDirs [ i ] ,
576
+ traceKV , secondaryIndexDirs ( i ) ,
578
577
); err != nil {
579
578
return nil , err
580
579
}
@@ -588,7 +587,7 @@ func (ru *Updater) UpdateRow(
588
587
// and the old row values do not match the partial index
589
588
// predicate.
590
589
newEntry := & newEntries [newIdx ]
591
- putFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , ru .Helper . secIndexValDirs [ i ] )
590
+ putFn (ctx , b , & newEntry .Key , & newEntry .Value , traceKV , & ru .Helper , secondaryIndexDirs ( i ) )
592
591
writtenIndexes .Add (i )
593
592
newIdx ++
594
593
}
@@ -597,14 +596,15 @@ func (ru *Updater) UpdateRow(
597
596
for j := range ru .oldIndexEntries [i ] {
598
597
if err = ru .Helper .deleteIndexEntry (
599
598
ctx , b , index , & ru.oldIndexEntries [i ][j ].Key , alreadyLocked ,
600
- ru .Helper .sd .BufferedWritesUseLockingOnNonUniqueIndexes , traceKV , nil , /* valDirs */
599
+ ru .Helper .sd .BufferedWritesUseLockingOnNonUniqueIndexes , traceKV , emptyIndexDirs ,
601
600
); err != nil {
602
601
return nil , err
603
602
}
604
603
}
605
604
// We're adding all of the inverted index entries from the row being updated.
606
605
for j := range ru .newIndexEntries [i ] {
607
- putFn (ctx , b , & ru.newIndexEntries [i ][j ].Key , & ru.newIndexEntries [i ][j ].Value , traceKV , ru .Helper .secIndexValDirs [i ])
606
+ putFn (ctx , b , & ru.newIndexEntries [i ][j ].Key , & ru.newIndexEntries [i ][j ].Value , traceKV ,
607
+ & ru .Helper , secondaryIndexDirs (i ))
608
608
}
609
609
}
610
610
}
@@ -631,7 +631,7 @@ func (ru *Updater) UpdateRow(
631
631
for _ , deletedSecondaryIndexEntry := range deletedSecondaryIndexEntries {
632
632
if err = ru .DeleteHelper .deleteIndexEntry (
633
633
ctx , b , index , & deletedSecondaryIndexEntry .Key , alreadyLocked ,
634
- ru .Helper .sd .BufferedWritesUseLockingOnNonUniqueIndexes , traceKV , nil , /* valDirs */
634
+ ru .Helper .sd .BufferedWritesUseLockingOnNonUniqueIndexes , traceKV , emptyIndexDirs ,
635
635
); err != nil {
636
636
return nil , err
637
637
}
@@ -671,11 +671,12 @@ func updateCPutFn(
671
671
value * roachpb.Value ,
672
672
expVal []byte ,
673
673
traceKV bool ,
674
- keyEncodingDirs []encoding.Direction ,
674
+ rh * RowHelper ,
675
+ dirs lazyIndexDirs ,
675
676
) {
676
677
if traceKV {
677
678
log .VEventfDepth (
678
- ctx , 1 , 2 , "CPut %s -> %s (swap)" , keys .PrettyPrint (keyEncodingDirs , * key ),
679
+ ctx , 1 , 2 , "CPut %s -> %s (swap)" , keys .PrettyPrint (dirs . compute ( rh ) , * key ),
679
680
value .PrettyPrint (),
680
681
)
681
682
}
0 commit comments