You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2021/05/31 13:46:36 UTC
[skywalking-banyandb] branch main updated: change operator structure
This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
The following commit(s) were added to refs/heads/main by this push:
new 7d07c78 change operator structure
new 6626c34 Merge pull request #3 from lujiajing1126/feature/change-query-operator-ds
7d07c78 is described below
commit 7d07c780335dce25486b5c773510ebd0f86ef230
Author: Megrez Lu <lu...@gmail.com>
AuthorDate: Mon May 31 17:14:37 2021 +0800
change operator structure
---
api/fbs/v1/query.fbs | 18 ++++-----
api/fbs/v1/query_generated.go | 85 +++++--------------------------------------
2 files changed, 18 insertions(+), 85 deletions(-)
diff --git a/api/fbs/v1/query.fbs b/api/fbs/v1/query.fbs
index f69dfb0..4677e03 100644
--- a/api/fbs/v1/query.fbs
+++ b/api/fbs/v1/query.fbs
@@ -19,8 +19,11 @@ include "database.fbs";
namespace banyandb.v1;
-// BinaryOp specify the operation imposed to the given query condition
-enum BinaryOp: byte {
+// BinaryOp specifies the operation imposed to the given query condition
+// For EQ, NE, LT, GT, LE and GE, only one operand should be given, i.e. one-to-one relationship.
+// HAVING and NOT_HAVING allow multi-value to be the operand such as array/vector, i.e. one-to-many relationship.
+// For example, "keyA" contains "valueA" **and** "valueB"
+enum BinaryOp : byte {
EQ,
NE,
LT,
@@ -31,11 +34,6 @@ enum BinaryOp: byte {
NOT_HAVING
}
-// BinaryOps is an array of binary operators.
-table BinaryOps {
- ops: [BinaryOp];
-}
-
// IntPair in a typed pair with an array of int64 as values
table IntPair {
key: string;
@@ -59,9 +57,11 @@ table Pair {
pair: TypedPair;
}
-// PairQuery consists of the query condition with a binary operator to be imposed
+// PairQuery consists of the query condition with a single binary operator to be imposed
+// For 1:1 BinaryOp, values in condition must be an array with length = 1,
+// while for 1:N BinaryOp, values can be an array with length >= 1.
table PairQuery {
- ops: BinaryOps;
+ op: BinaryOp;
condition: Pair;
}
diff --git a/api/fbs/v1/query_generated.go b/api/fbs/v1/query_generated.go
index e434166..6990dd0 100644
--- a/api/fbs/v1/query_generated.go
+++ b/api/fbs/v1/query_generated.go
@@ -118,72 +118,6 @@ func (v Sort) String() string {
return "Sort(" + strconv.FormatInt(int64(v), 10) + ")"
}
-type BinaryOps struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsBinaryOps(buf []byte, offset flatbuffers.UOffsetT) *BinaryOps {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &BinaryOps{}
- x.Init(buf, n+offset)
- return x
-}
-
-func GetSizePrefixedRootAsBinaryOps(buf []byte, offset flatbuffers.UOffsetT) *BinaryOps {
- n := flatbuffers.GetUOffsetT(buf[offset+flatbuffers.SizeUint32:])
- x := &BinaryOps{}
- x.Init(buf, n+offset+flatbuffers.SizeUint32)
- return x
-}
-
-func (rcv *BinaryOps) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *BinaryOps) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *BinaryOps) Ops(j int) BinaryOp {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return BinaryOp(rcv._tab.GetInt8(a + flatbuffers.UOffsetT(j*1)))
- }
- return 0
-}
-
-func (rcv *BinaryOps) OpsLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *BinaryOps) MutateOps(j int, n BinaryOp) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.MutateInt8(a+flatbuffers.UOffsetT(j*1), int8(n))
- }
- return false
-}
-
-func BinaryOpsStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func BinaryOpsAddOps(builder *flatbuffers.Builder, ops flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(ops), 0)
-}
-func BinaryOpsStartOpsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(1, numElems, 1)
-}
-func BinaryOpsEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
-
type IntPair struct {
_tab flatbuffers.Table
}
@@ -417,17 +351,16 @@ func (rcv *PairQuery) Table() flatbuffers.Table {
return rcv._tab
}
-func (rcv *PairQuery) Ops(obj *BinaryOps) *BinaryOps {
+func (rcv *PairQuery) Op() BinaryOp {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(BinaryOps)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
+ return BinaryOp(rcv._tab.GetInt8(o + rcv._tab.Pos))
}
- return nil
+ return 0
+}
+
+func (rcv *PairQuery) MutateOp(n BinaryOp) bool {
+ return rcv._tab.MutateInt8Slot(4, int8(n))
}
func (rcv *PairQuery) Condition(obj *Pair) *Pair {
@@ -446,8 +379,8 @@ func (rcv *PairQuery) Condition(obj *Pair) *Pair {
func PairQueryStart(builder *flatbuffers.Builder) {
builder.StartObject(2)
}
-func PairQueryAddOps(builder *flatbuffers.Builder, ops flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(ops), 0)
+func PairQueryAddOp(builder *flatbuffers.Builder, op BinaryOp) {
+ builder.PrependInt8Slot(0, int8(op), 0)
}
func PairQueryAddCondition(builder *flatbuffers.Builder, condition flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(condition), 0)