本文整理汇总了Golang中github.com/couchbase/query/datastore.IndexConnection类的典型用法代码示例。如果您正苦于以下问题:Golang IndexConnection类的具体用法?Golang IndexConnection怎么用?Golang IndexConnection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IndexConnection类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: ScanEntries
func (pi *storeIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
entry := datastore.IndexEntry{PrimaryKey: pi.keyspace.namespace.store.actualStore.Id()}
conn.EntryChannel() <- &entry
}
开发者ID:pkdevboxy,项目名称:query,代码行数:7,代码来源:system_keyspace_datastores.go
示例2: Scan
// Scan implement Index{} interface.
func (si *secondaryIndex) Scan(
requestId string, span *datastore.Span, distinct bool, limit int64,
cons datastore.ScanConsistency, vector timestamp.Vector,
conn *datastore.IndexConnection) {
entryChannel := conn.EntryChannel()
defer close(entryChannel)
client := si.gsi.gsiClient
if span.Seek != nil {
seek := values2SKey(span.Seek)
client.Lookup(
si.defnID, []c.SecondaryKey{seek}, distinct, limit,
n1ql2GsiConsistency[cons], vector2ts(vector),
makeResponsehandler(client, conn))
} else {
low, high := values2SKey(span.Range.Low), values2SKey(span.Range.High)
incl := n1ql2GsiInclusion[span.Range.Inclusion]
client.Range(
si.defnID, low, high, incl, distinct, limit,
n1ql2GsiConsistency[cons], vector2ts(vector),
makeResponsehandler(client, conn))
}
}
开发者ID:prataprc,项目名称:indexing,代码行数:26,代码来源:secondary_index.go
示例3: ScanEntries
func (pi *dualIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
entry := datastore.IndexEntry{PrimaryKey: KEYSPACE_NAME_DUAL}
conn.EntryChannel() <- &entry
}
开发者ID:jmptrader,项目名称:query,代码行数:7,代码来源:system_keyspace_dual.go
示例4: ScanEntries
func (pi *requestLogIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
accounting.RequestsForeach(func(id string, entry *accounting.RequestLogEntry) {
indexEntry := datastore.IndexEntry{PrimaryKey: id}
conn.EntryChannel() <- &indexEntry
})
}
开发者ID:pkdevboxy,项目名称:query,代码行数:8,代码来源:system_keyspace_request_log.go
示例5: ScanEntries
func (pi *preparedsIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
names := plan.NamePrepareds()
for _, name := range names {
entry := datastore.IndexEntry{PrimaryKey: name}
conn.EntryChannel() <- &entry
}
}
开发者ID:pkdevboxy,项目名称:query,代码行数:10,代码来源:system_keyspace_prepareds.go
示例6: ScanEntries
// Scan implement PrimaryIndex{} interface.
func (si *secondaryIndex) ScanEntries(
requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
entryChannel := conn.EntryChannel()
defer close(entryChannel)
client := si.gsi.gsiClient
client.ScanAll(
si.defnID, limit,
n1ql2GsiConsistency[cons], vector2ts(vector),
makeResponsehandler(client, conn))
}
开发者ID:prataprc,项目名称:indexing,代码行数:14,代码来源:secondary_index.go
示例7: ScanEntries
func (pi *primaryIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
if limit == 0 {
limit = int64(pi.keyspace.nitems)
}
for i := 0; i < pi.keyspace.nitems && int64(i) < limit; i++ {
entry := datastore.IndexEntry{PrimaryKey: strconv.Itoa(i)}
conn.EntryChannel() <- &entry
}
}
开发者ID:jmptrader,项目名称:query,代码行数:13,代码来源:mock.go
示例8: makeResponsehandler
func makeResponsehandler(
client *qclient.GsiClient, conn *datastore.IndexConnection) qclient.ResponseHandler {
entryChannel := conn.EntryChannel()
stopChannel := conn.StopChannel()
return func(data qclient.ResponseReader) bool {
if err := data.Error(); err != nil {
conn.Error(n1qlError(client, err))
return false
}
skeys, pkeys, err := data.GetEntries()
if err == nil {
for i, skey := range skeys {
// Primary-key is mandatory.
e := &datastore.IndexEntry{
PrimaryKey: string(pkeys[i]),
}
e.EntryKey = skey2Values(skey)
fmsg := "current enqueued length: %d (max %d)\n"
l.Tracef(fmsg, len(entryChannel), cap(entryChannel))
select {
case entryChannel <- e:
case <-stopChannel:
return false
}
}
return true
}
conn.Error(errors.NewError(nil, err.Error()))
return false
}
}
开发者ID:prataprc,项目名称:indexing,代码行数:35,代码来源:secondary_index.go
示例9: ScanEntries
func (pi *namespaceIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
namespaceIds, err := pi.keyspace.namespace.store.actualStore.NamespaceIds()
if err == nil {
for i, namespaceId := range namespaceIds {
if limit > 0 && int64(i) > limit {
break
}
entry := datastore.IndexEntry{PrimaryKey: namespaceId}
conn.EntryChannel() <- &entry
}
}
}
开发者ID:pkdevboxy,项目名称:query,代码行数:16,代码来源:system_keyspace_namespaces.go
示例10: Scan
func (pi *primaryIndex) Scan(requestId string, span *datastore.Span, distinct bool, limit int64,
cons datastore.ScanConsistency, vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
// For primary indexes, bounds must always be strings, so we
// can just enforce that directly
low, high := "", ""
// Ensure that lower bound is a string, if any
if len(span.Range.Low) > 0 {
a := span.Range.Low[0].Actual()
switch a := a.(type) {
case string:
low = a
default:
conn.Error(errors.NewOtherDatastoreError(nil, fmt.Sprintf("Invalid lower bound %v of type %T.", a, a)))
return
}
}
// Ensure that upper bound is a string, if any
if len(span.Range.High) > 0 {
a := span.Range.High[0].Actual()
switch a := a.(type) {
case string:
high = a
default:
conn.Error(errors.NewOtherDatastoreError(nil, fmt.Sprintf("Invalid upper bound %v of type %T.", a, a)))
return
}
}
if limit == 0 {
limit = int64(pi.keyspace.nitems)
}
for i := 0; i < pi.keyspace.nitems && int64(i) < limit; i++ {
id := strconv.Itoa(i)
if low != "" &&
(id < low ||
(id == low && (span.Range.Inclusion&datastore.LOW == 0))) {
continue
}
low = ""
if high != "" &&
(id > high ||
(id == high && (span.Range.Inclusion&datastore.HIGH == 0))) {
break
}
entry := datastore.IndexEntry{PrimaryKey: id}
conn.EntryChannel() <- &entry
}
}
开发者ID:jmptrader,项目名称:query,代码行数:57,代码来源:mock.go
示例11: scan
func (this *spanScan) scan(context *Context, conn *datastore.IndexConnection) {
defer context.Recover() // Recover from any panic
dspan, err := evalSpan(this.span, context)
if err != nil {
context.Error(errors.NewEvaluationError(err, "span"))
close(conn.EntryChannel())
return
}
limit := int64(math.MaxInt64)
if this.plan.Limit() != nil {
lv, err := this.plan.Limit().Evaluate(nil, context)
if err == nil && lv.Type() == value.NUMBER {
limit = int64(lv.Actual().(float64))
}
}
this.plan.Index().Scan(context.RequestId(), dspan, this.plan.Distinct(), limit,
context.ScanConsistency(), context.ScanVector(), conn)
}
开发者ID:jmptrader,项目名称:query,代码行数:21,代码来源:scan_index.go
示例12: Scan
func (pi *keyspaceIndex) Scan(requestId string, span *datastore.Span, distinct bool, limit int64,
cons datastore.ScanConsistency, vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
val := ""
a := span.Seek[0].Actual()
switch a := a.(type) {
case string:
val = a
default:
conn.Error(errors.NewSystemDatastoreError(nil, fmt.Sprintf("Invalid seek value %v of type %T.", a, a)))
return
}
ids := strings.SplitN(val, "/", 2)
if len(ids) != 2 {
return
}
namespace, _ := pi.keyspace.namespace.store.actualStore.NamespaceById(ids[0])
if namespace == nil {
return
}
keyspace, _ := namespace.KeyspaceById(ids[1])
if keyspace != nil {
entry := datastore.IndexEntry{PrimaryKey: fmt.Sprintf("%s/%s", namespace.Id(), keyspace.Id())}
conn.EntryChannel() <- &entry
}
}
开发者ID:jmptrader,项目名称:query,代码行数:31,代码来源:system_keyspace_keyspaces.go
示例13: newIndexConnection
func (this *PrimaryScan) newIndexConnection(context *Context) *datastore.IndexConnection {
var conn *datastore.IndexConnection
// Use keyspace count to create a sized index connection
keyspace := this.plan.Keyspace()
size, err := keyspace.Count()
if err == nil {
if size <= 0 {
size = 1
}
conn, err = datastore.NewSizedIndexConnection(size, context)
conn.SetPrimary()
}
// Use non-sized API and log error
if err != nil {
conn = datastore.NewIndexConnection(context)
conn.SetPrimary()
logging.Errorp("PrimaryScan.newIndexConnection ", logging.Pair{"error", err})
}
return conn
}
开发者ID:pkdevboxy,项目名称:query,代码行数:24,代码来源:scan_primary.go
示例14: ScanEntries
func (pi *indexIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
// eliminate duplicate keys
keys := make(map[string]string, 64)
actualStore := pi.keyspace.namespace.store.actualStore
namespaceIds, err := actualStore.NamespaceIds()
if err == nil {
for _, namespaceId := range namespaceIds {
namespace, err := actualStore.NamespaceById(namespaceId)
if err == nil {
keyspaceIds, err := namespace.KeyspaceIds()
if err == nil {
for _, keyspaceId := range keyspaceIds {
keyspace, err := namespace.KeyspaceById(keyspaceId)
if err == nil {
indexers, err := keyspace.Indexers()
if err == nil {
for _, indexer := range indexers {
err = indexer.Refresh()
if err != nil {
logging.Errorf("Refreshing indexes failed %v", err)
conn.Error(errors.NewSystemDatastoreError(err, ""))
// don't return here but continue processing, because other keyspaces may still be responsive. MB-15834
continue
}
indexIds, err := indexer.IndexIds()
if err == nil {
for _, indexId := range indexIds {
key := fmt.Sprintf("%s/%s/%s", namespaceId, keyspaceId, indexId)
keys[key] = key
}
}
}
}
}
}
}
}
}
}
for k, _ := range keys {
entry := datastore.IndexEntry{PrimaryKey: k}
conn.EntryChannel() <- &entry
}
}
开发者ID:pkdevboxy,项目名称:query,代码行数:50,代码来源:system_keyspace_indexes.go
示例15: ScanEntries
func (pi *indexIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
// eliminate duplicate keys
keys := make(map[string]string, 64)
actualStore := pi.keyspace.namespace.store.actualStore
namespaceIds, err := actualStore.NamespaceIds()
if err == nil {
for _, namespaceId := range namespaceIds {
namespace, err := actualStore.NamespaceById(namespaceId)
if err == nil {
keyspaceIds, err := namespace.KeyspaceIds()
if err == nil {
for _, keyspaceId := range keyspaceIds {
keyspace, err := namespace.KeyspaceById(keyspaceId)
if err == nil {
indexers, err := keyspace.Indexers()
if err == nil {
for _, indexer := range indexers {
err = indexer.Refresh()
if err != nil {
conn.Error(errors.NewSystemDatastoreError(err, ""))
return
}
indexIds, err := indexer.IndexIds()
if err == nil {
for _, indexId := range indexIds {
key := fmt.Sprintf("%s/%s/%s", namespaceId, keyspaceId, indexId)
keys[key] = key
}
}
}
}
}
}
}
}
}
}
for k, _ := range keys {
entry := datastore.IndexEntry{PrimaryKey: k}
conn.EntryChannel() <- &entry
}
}
开发者ID:mschoch,项目名称:query,代码行数:48,代码来源:system_keyspace_indexes.go
示例16: ScanEntries
func (pi *activeRequestsIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
numRequests, err := server.ActiveRequestsCount()
if err != nil {
conn.Error(err)
return
}
requestIds := make([]string, numRequests)
server.ActiveRequestsForEach(func(id string, request server.Request) {
requestIds = append(requestIds, id)
})
for _, name := range requestIds {
entry := datastore.IndexEntry{PrimaryKey: name}
conn.EntryChannel() <- &entry
}
}
开发者ID:pkdevboxy,项目名称:query,代码行数:18,代码来源:system_keyspace_actives.go
示例17: Scan
func (pi *dualIndex) Scan(requestId string, span *datastore.Span, distinct bool, limit int64,
cons datastore.ScanConsistency, vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
val := ""
a := span.Seek[0].Actual()
switch a := a.(type) {
case string:
val = a
default:
conn.Error(errors.NewSystemDatastoreError(nil, fmt.Sprintf("Invalid seek value %v of type %T.", a, a)))
return
}
if strings.EqualFold(val, KEYSPACE_NAME_DUAL) {
entry := datastore.IndexEntry{PrimaryKey: KEYSPACE_NAME_DUAL}
conn.EntryChannel() <- &entry
}
}
开发者ID:jmptrader,项目名称:query,代码行数:20,代码来源:system_keyspace_dual.go
示例18: ScanEntries
func (pi *primaryIndex) ScanEntries(requestId string, limit int64, cons datastore.ScanConsistency,
vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
dirEntries, er := ioutil.ReadDir(pi.keyspace.path())
if er != nil {
conn.Error(errors.NewFileDatastoreError(er, ""))
return
}
for i, dirEntry := range dirEntries {
if limit > 0 && int64(i) > limit {
break
}
if !dirEntry.IsDir() {
entry := datastore.IndexEntry{PrimaryKey: documentPathToId(dirEntry.Name())}
conn.EntryChannel() <- &entry
}
}
}
开发者ID:jmptrader,项目名称:query,代码行数:20,代码来源:file.go
示例19: notifyConn
func notifyConn(conn *datastore.IndexConnection) {
select {
case conn.StopChannel() <- false:
default:
}
}
开发者ID:jmptrader,项目名称:query,代码行数:6,代码来源:scan_util.go
示例20: Scan
func (pi *activeRequestsIndex) Scan(requestId string, span *datastore.Span, distinct bool, limit int64,
cons datastore.ScanConsistency, vector timestamp.Vector, conn *datastore.IndexConnection) {
defer close(conn.EntryChannel())
// NOP
}
开发者ID:pkdevboxy,项目名称:query,代码行数:5,代码来源:system_keyspace_actives.go
注:本文中的github.com/couchbase/query/datastore.IndexConnection类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论