MCPcopy Create free account
hub / github.com/couchbase/cbft / bleveIndexAliasForUserIndexAlias

Function bleveIndexAliasForUserIndexAlias

pindex_alias.go:207–312  ·  view source on GitHub ↗

The indexName/indexUUID is for a user-defined index alias. TODO: One day support user-defined aliases for non-bleve indexes.

(mgr *cbgt.Manager,
	indexName, indexUUID string, ensureCanRead bool,
	consistencyParams *cbgt.ConsistencyParams,
	cancelCh <-chan bool, groupByNode bool,
	partitionSelection string)

Source from the content-addressed store, hash-verified

205//
206// TODO: One day support user-defined aliases for non-bleve indexes.
207func bleveIndexAliasForUserIndexAlias(mgr *cbgt.Manager,
208 indexName, indexUUID string, ensureCanRead bool,
209 consistencyParams *cbgt.ConsistencyParams,
210 cancelCh <-chan bool, groupByNode bool,
211 partitionSelection string) (
212 bleve.IndexAlias, bool, error) {
213 alias := bleve.NewIndexAlias()
214
215 indexDefs, _, err := mgr.GetIndexDefs(false)
216 if err != nil {
217 return nil, false, fmt.Errorf("alias: could not get indexDefs,"+
218 " indexName: %s, err: %v", indexName, err)
219 }
220
221 num := 0
222 var multiCollIndex bool
223 var fillAlias func(aliasName, aliasUUID string) error
224
225 fillAlias = func(aliasName, aliasUUID string) error {
226 aliasDef := indexDefs.IndexDefs[aliasName]
227 if aliasDef == nil {
228 return fmt.Errorf("alias: could not get aliasDef,"+
229 " aliasName: %s, indexName: %s",
230 aliasName, indexName)
231 }
232 if aliasDef.Type != "fulltext-alias" {
233 return fmt.Errorf("alias: not fulltext-alias type: %s,"+
234 " aliasName: %s, indexName: %s",
235 aliasDef.Type, aliasName, indexName)
236 }
237 if aliasUUID != "" &&
238 aliasUUID != aliasDef.UUID {
239 return fmt.Errorf("alias: mismatched aliasUUID: %s,"+
240 " aliasDef.UUID: %s, aliasName: %s, indexName: %s",
241 aliasUUID, aliasDef.UUID, aliasName, indexName)
242 }
243
244 var params *AliasParams
245 params, err = parseAliasParams(aliasDef.Params)
246 if err != nil {
247 return fmt.Errorf("alias: could not parse aliasDef.Params: %s,"+
248 " aliasName: %s, indexName: %s",
249 aliasDef.Params, aliasName, indexName)
250 }
251
252 for targetName, targetSpec := range params.Targets {
253 if !multiCollIndex {
254 _, multiCollIndex = metaFieldValCache.getSourceDetailsMap(targetName)
255 }
256
257 if num > maxAliasTargets {
258 return fmt.Errorf("alias: too many alias targets,"+
259 " perhaps there's a cycle,"+
260 " aliasName: %s, indexName: %s",
261 aliasName, indexName)
262 }
263 targetDef := indexDefs.IndexDefs[targetName]
264 if targetDef == nil {

Callers 2

CountAliasFunction · 0.85
QueryAliasFunction · 0.85

Calls 6

parseAliasParamsFunction · 0.85
bleveIndexAliasFunction · 0.85
getRemoteClientsFunction · 0.85
getSourceDetailsMapMethod · 0.80
AddMethod · 0.80
GetIndexDefsMethod · 0.65

Tested by

no test coverage detected