Skip to content

Commit 3d7dd08

Browse files
MB-71031: Avoid create primary index on _query collection if one exists
Prevent creating "ix_system_query" primary index when... a primary index with different name is already exist in the _system._query keyspace Change-Id: Ibafb561152b29e1f3a8350de2db4c101eebc2f69 Reviewed-on: https://review.couchbase.org/c/query/+/242069 Reviewed-by: Sitaram Vemulapalli <sitaram.vemulapalli@couchbase.com> Well-Formed: Restriction Checker Tested-by: Sitaram Vemulapalli <sitaram.vemulapalli@couchbase.com> Reviewed-by: Bingjie Miao <bingjie.miao@couchbase.com>
1 parent 860b55c commit 3d7dd08

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

datastore/couchbase/couchbase.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3543,7 +3543,21 @@ func (s *store) CheckSystemCollection(bucketName, requestId string, forceIndex b
35433543
return false, errors.NewInvalidGSIIndexerError("Cannot get primary index on system collection")
35443544
}
35453545

3546-
sysIndex, er := indexer3.IndexByName(_BUCKET_SYSTEM_PRIM_INDEX)
3546+
sysIndexName := _BUCKET_SYSTEM_PRIM_INDEX
3547+
3548+
primaryIndexes, err := indexer3.PrimaryIndexes()
3549+
if err != nil {
3550+
return false, err
3551+
}
3552+
3553+
for _, index := range primaryIndexes {
3554+
if index != nil && index.IsPrimary() {
3555+
sysIndexName = index.Name()
3556+
break
3557+
}
3558+
}
3559+
3560+
sysIndex, er := indexer3.IndexByName(sysIndexName)
35473561
if er != nil {
35483562
if !errors.IsIndexNotFoundError(er) {
35493563
// only ignore index not found error
@@ -3586,7 +3600,7 @@ func (s *store) CheckSystemCollection(bucketName, requestId string, forceIndex b
35863600
return false, er
35873601
}
35883602

3589-
sysIndex, er = indexer3.IndexByName(_BUCKET_SYSTEM_PRIM_INDEX)
3603+
sysIndex, er = indexer3.IndexByName(sysIndexName)
35903604
if er != nil {
35913605
return false, er
35923606
}

0 commit comments

Comments
 (0)