Skip to content

Commit

Permalink
latest-15.0 rebase: Sync with recent commits from latest (Dec 12) (#1414
Browse files Browse the repository at this point in the history
)

* feat: fix checkMySQL and add tests and documentation (#11895) (#1391)

Signed-off-by: Manan Gupta <[email protected]>

Signed-off-by: Manan Gupta <[email protected]>

Signed-off-by: Manan Gupta <[email protected]>

* more unit tests for QueryMatchesTemplates() (#11894) (#1394)

Signed-off-by: Shlomi Noach <[email protected]>

Signed-off-by: Shlomi Noach <[email protected]>

Signed-off-by: Shlomi Noach <[email protected]>

* Simplify `getPlan` and `gen4CompareV3` (#11903) (#1400)

* simplify getPlan and gen4CompareV3

Signed-off-by: Florent Poinsard <[email protected]>

* fix error return in getPlan

Signed-off-by: Florent Poinsard <[email protected]>

Signed-off-by: Florent Poinsard <[email protected]>

Signed-off-by: Florent Poinsard <[email protected]>
Signed-off-by: Rohit Nayak <[email protected]>

* Fix merge issue found during make

Signed-off-by: Rohit Nayak <[email protected]>

* Disable MIN() / MAX() support (#1399)

It's trivially simple today to trigger a panic for these, because the
invalidation steps are not there and they panic. So if you remove a
value that's the maximum or minimum, we panic and crash.

Better to block creating this for now and fix the underlying problem
first and then allow it again.

Signed-off-by: Dirkjan Bussink <[email protected]>

Signed-off-by: Dirkjan Bussink <[email protected]>

* Always use public id internally for mappings (#1398)

* Always use public id internally for mappings

We were using the `.Name` attribute of a query in a few places
internally as a hash key, but that is broken. There's no guarantee that
we always have a name, let alone that it's guaranteed to be unique.

This switches to using the public id and adds additional validation
checks that it's always set and that it's always unique for hash map
lookups.

The case where this was blowing up is that end-to-end tests would fail
if there's no name for a query and no name through a special comment
either.

We also likely would have seen very strange bugs if someone named their
query "source" since that's a special node name and we used the name as
node names as well.

Signed-off-by: Dirkjan Bussink <[email protected]>

* integration: use default view ids

Signed-off-by: Vicent Marti <[email protected]>

* boost: do not use Public IDs as names

Signed-off-by: Vicent Marti <[email protected]>

* boost: do not use node IDs for table names either

Signed-off-by: Vicent Marti <[email protected]>

* boost: fix test issues

Signed-off-by: Vicent Marti <[email protected]>

* boost: fix protogen

Signed-off-by: Vicent Marti <[email protected]>

* incorporator: do not panic

Signed-off-by: Vicent Marti <[email protected]>

Signed-off-by: Dirkjan Bussink <[email protected]>
Signed-off-by: Vicent Marti <[email protected]>
Co-authored-by: Vicent Marti <[email protected]>

* feat: add test and fix the error of not sending a ServerLost error on server side error (#11920) (#1405)

Signed-off-by: Manan Gupta <[email protected]>

Signed-off-by: Manan Gupta <[email protected]>

Signed-off-by: Manan Gupta <[email protected]>

* Onlineddl: formalize "immediate operations", respect `--postpone-completion` strategy flag (#11910) (#1411)

* Added endtoend test to validate postponed REVERT of an ALTER VIEW statement: test indicates a bug

Signed-off-by: Shlomi Noach <[email protected]>

* ALTER VIEW now respects --postpone-completion flag

Signed-off-by: Shlomi Noach <[email protected]>

* Online DDL: formalize 'immediate operations', respect --postpone-completion

Signed-off-by: Shlomi Noach <[email protected]>

* typo

Signed-off-by: Shlomi Noach <[email protected]>

* only test instant ddl in capable versions (ie 8.0)

Signed-off-by: Shlomi Noach <[email protected]>

* more specific instant ddl capability

Signed-off-by: Shlomi Noach <[email protected]>

* Update go/vt/vttablet/onlineddl/executor.go

Co-authored-by: Deepthi Sigireddi <[email protected]>
Signed-off-by: Shlomi Noach <[email protected]>

* Update go/vt/vttablet/onlineddl/executor.go

Co-authored-by: Deepthi Sigireddi <[email protected]>
Signed-off-by: Shlomi Noach <[email protected]>

* Update go/vt/vttablet/onlineddl/executor.go

Co-authored-by: Deepthi Sigireddi <[email protected]>
Signed-off-by: Shlomi Noach <[email protected]>

Signed-off-by: Shlomi Noach <[email protected]>
Co-authored-by: Deepthi Sigireddi <[email protected]>

Signed-off-by: Shlomi Noach <[email protected]>
Co-authored-by: Deepthi Sigireddi <[email protected]>

* log: also log error in DiscoverInstance when force discovery is specified (#11936) (#1410)

Signed-off-by: Manan Gupta <[email protected]>

Signed-off-by: Manan Gupta <[email protected]>

Signed-off-by: Manan Gupta <[email protected]>
Signed-off-by: Rohit Nayak <[email protected]>

Signed-off-by: Manan Gupta <[email protected]>
Signed-off-by: Shlomi Noach <[email protected]>
Signed-off-by: Florent Poinsard <[email protected]>
Signed-off-by: Rohit Nayak <[email protected]>
Signed-off-by: Dirkjan Bussink <[email protected]>
Signed-off-by: Vicent Marti <[email protected]>
Co-authored-by: Manan Gupta <[email protected]>
Co-authored-by: Shlomi Noach <[email protected]>
Co-authored-by: FlorentP <[email protected]>
Co-authored-by: Dirkjan Bussink <[email protected]>
Co-authored-by: Vicent Marti <[email protected]>
Co-authored-by: Deepthi Sigireddi <[email protected]>
  • Loading branch information
7 people authored Dec 12, 2022
1 parent 4cc2c06 commit 99a2647
Show file tree
Hide file tree
Showing 76 changed files with 1,550 additions and 1,183 deletions.
399 changes: 267 additions & 132 deletions go/boost/boostpb/node.pb.go

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion go/boost/dataflow/domain/domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -1940,7 +1940,11 @@ func (d *Domain) buildUpquery(query *strings.Builder, n *flownode.Node) {
sqlescape.WriteEscapeID(query, f)
}
query.WriteString(" FROM ")
sqlescape.WriteEscapeID(query, n.Name)
if base := n.AsExternalBase(); base != nil {
sqlescape.WriteEscapeID(query, base.Table())
} else {
panic("unexpected upquery on node")
}
}

func (d *Domain) buildUpqueryFiltered(n *flownode.Node, cols []int, keys map[boostpb.Row]bool) (string, map[string]*querypb.BindVariable) {
Expand Down
16 changes: 14 additions & 2 deletions go/boost/dataflow/flownode/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"vitess.io/vitess/go/boost/boostpb"
"vitess.io/vitess/go/boost/dataflow/state"
"vitess.io/vitess/go/boost/graph"
"vitess.io/vitess/go/sqltypes"
"vitess.io/vitess/go/vt/vthash"
)

Expand All @@ -18,13 +17,23 @@ var _ AnyBase = (*Base)(nil)

type Base struct {
primaryKey []int
table string
schema []boostpb.Type
dropped []int
unmodified bool
}

func (base *Base) dataflow() {}

func (base *Base) Keyspace() string {
// all fake bases are on the same empty keyspace
return ""
}

func (base *Base) Table() string {
return base.table
}

func (base *Base) Schema() []boostpb.Type {
if base.schema == nil {
panic("no schema initialization")
Expand Down Expand Up @@ -204,8 +213,9 @@ func (base *Base) SuggestIndexes(n graph.NodeIdx) map[graph.NodeIdx][]int {
return map[graph.NodeIdx][]int{n: base.primaryKey}
}

func NewBase(primaryKey []int, schema []boostpb.Type, defaults []sqltypes.Value) *Base {
func NewBase(table string, primaryKey []int, schema []boostpb.Type) *Base {
return &Base{
table: table,
primaryKey: primaryKey,
schema: schema,
unmodified: true,
Expand All @@ -214,6 +224,7 @@ func NewBase(primaryKey []int, schema []boostpb.Type, defaults []sqltypes.Value)

func (base *Base) ToProto() *boostpb.Node_Base {
return &boostpb.Node_Base{
Table: base.table,
PrimaryKey: base.primaryKey,
Schema: base.schema,
Dropped: base.dropped,
Expand All @@ -223,6 +234,7 @@ func (base *Base) ToProto() *boostpb.Node_Base {

func NewBaseFromProto(base *boostpb.Node_Base) *Base {
return &Base{
table: base.Table,
primaryKey: base.PrimaryKey,
schema: base.Schema,
dropped: base.Dropped,
Expand Down
11 changes: 9 additions & 2 deletions go/boost/dataflow/flownode/external_base.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type ExternalBase struct {
schema []boostpb.Type
keySchema []boostpb.Type
keyspace string
table string

recents map[vthash.Hash]mysql.Mysql56GTIDSet
inflight map[*inflight]struct{}
Expand Down Expand Up @@ -164,6 +165,10 @@ func (base *ExternalBase) Keyspace() string {
return base.keyspace
}

func (base *ExternalBase) Table() string {
return base.table
}

func (base *ExternalBase) BeginUpquery(ctx context.Context, slot uint8, keyed []int, keys map[boostpb.Row]bool) {
if slot == 0 {
panic("slot 0 should be reserved")
Expand Down Expand Up @@ -248,7 +253,7 @@ func (base *ExternalBase) FinishUpquery(ctx context.Context, m *boostpb.Packet_R
}
}

func NewExternalBase(primaryKey []int, schema []boostpb.Type, keyspace string) *ExternalBase {
func NewExternalBase(primaryKey []int, schema []boostpb.Type, keyspace, table string) *ExternalBase {
if primaryKey == nil {
panic("NewExternalBase without primary key")
}
Expand All @@ -266,6 +271,7 @@ func NewExternalBase(primaryKey []int, schema []boostpb.Type, keyspace string) *
schema: schema,
keySchema: keySchema,
keyspace: keyspace,
table: table,
inflight: map[*inflight]struct{}{},
recents: map[vthash.Hash]mysql.Mysql56GTIDSet{},
}
Expand All @@ -275,12 +281,13 @@ func (base *ExternalBase) ToProto() *boostpb.Node_ExternalBase {
pbase := &boostpb.Node_ExternalBase{
PrimaryKey: base.primaryKey,
Keyspace: base.keyspace,
Table: base.table,
Schema: base.schema,
}
return pbase
}

func NewExternalBaseFromProto(base *boostpb.Node_ExternalBase) *ExternalBase {
// TODO: handle defaultValues
return NewExternalBase(base.PrimaryKey, base.Schema, base.Keyspace)
return NewExternalBase(base.PrimaryKey, base.Schema, base.Keyspace, base.Table)
}
8 changes: 4 additions & 4 deletions go/boost/dataflow/flownode/graphviz.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,9 @@ func (n *Node) RenderGraphviz(gvz *graphviz.Node, options GraphvizOptions) {
gvz.Row(addr, "(dropped)")
return
case *Base:
gvz.Row(addr, graphviz.Fmt("<B>%s</B>", n.Name), materialized)
gvz.Row(addr, graphviz.Fmt("<B>%s</B>", impl.Table()), materialized)
case *ExternalBase:
gvz.Row(addr, graphviz.Fmt("<B>%s</B> <I>(external)</I>", n.Name))
gvz.Row(addr, graphviz.Fmt("%s.<B>%s</B> <I>(external)</I>", impl.Keyspace(), impl.Table()))
gvz.Row(impl.keyspace)
case *Ingress:
gvz.Row(addr, materialized)
Expand All @@ -94,10 +94,10 @@ func (n *Node) RenderGraphviz(gvz *graphviz.Node, options GraphvizOptions) {
} else {
key = fmt.Sprintf("%v", impl.Key())
}
gvz.Row(addr, graphviz.Fmt("<B>%s</B>", n.Name), materialized)
gvz.Row(addr, graphviz.Fmt("<B>%s</B>", impl.PublicID()), materialized)
gvz.Row("(reader / ⚷: " + key + ")")
case Internal:
gvz.Row(addr, n.Name, materialized)
gvz.Row(addr, n.name, materialized)
gvz.Row(graphviz.Fmt("<FONT POINT-SIZE=\"10\">%s</FONT>", impl.Description()))
}

Expand Down
2 changes: 1 addition & 1 deletion go/boost/dataflow/flownode/internal_distinct_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
func TestDistinct(t *testing.T) {
setup := func(t *testing.T, materialized bool) *MockGraph {
g := NewMockGraph(t)
s := g.AddBase("source", []string{"x", "y", "z"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar, sqltypes.Int64), nil)
s := g.AddBase("source", []string{"x", "y", "z"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar, sqltypes.Int64))
g.SetOp(
"distinct",
[]string{"x", "y", "z"},
Expand Down
2 changes: 1 addition & 1 deletion go/boost/dataflow/flownode/internal_filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func TestFilter(t *testing.T) {

var fields = []string{"x", "y"}
g := NewMockGraph(t)
s := g.AddBase("source", fields, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar), nil)
s := g.AddBase("source", fields, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar))
g.SetOp("filter", fields, NewFilter(s.AsGlobal(), filters), materialized)
return g
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
func TestGroupedAggregation(t *testing.T) {
setup := func(t *testing.T, materialize bool) *MockGraph {
g := NewMockGraph(t)
s := g.AddBase("source", []string{"x", "y"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.Int64), nil)
s := g.AddBase("source", []string{"x", "y"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.Int64))
grp := NewGrouped(s.AsGlobal(), false, []int{0}, []AggrExpr{AggregationOver(AggregationCount, 1)})

g.SetOp("identity", []string{"x", "ys"}, grp, materialize)
Expand All @@ -21,7 +21,7 @@ func TestGroupedAggregation(t *testing.T) {

setupMulticol := func(t *testing.T, materialize bool) *MockGraph {
g := NewMockGraph(t)
s := g.AddBase("source", []string{"x", "y", "z"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.Int64, sqltypes.Int64), nil)
s := g.AddBase("source", []string{"x", "y", "z"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.Int64, sqltypes.Int64))
grp := NewGrouped(s.AsGlobal(), false, []int{0, 2}, []AggrExpr{AggregationOver(AggregationCount, 1)})
g.SetOp("identity", []string{"x", "z", "ys"}, grp, materialize)
return g
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
func TestGroupedExtremum(t *testing.T) {
setup := func(t *testing.T, op AggregationKind, materialize bool) *MockGraph {
g := NewMockGraph(t)
s := g.AddBase("source", []string{"x", "y"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.Int64), nil)
s := g.AddBase("source", []string{"x", "y"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.Int64))
grp := NewGrouped(s.AsGlobal(), false, []int{0}, []AggrExpr{AggregationOver(op, 1)})
g.SetOp("agg", []string{"x", "ys"}, grp, materialize)
return g
Expand Down
2 changes: 1 addition & 1 deletion go/boost/dataflow/flownode/internal_identity_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestIdentity(t *testing.T) {
setup := func(t *testing.T, materialized bool) *MockGraph {
var fields = []string{"x", "y", "z"}
g := NewMockGraph(t)
s := g.AddBase("source", fields, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar, sqltypes.Int64), nil)
s := g.AddBase("source", fields, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar, sqltypes.Int64))
g.SetOp("identity", fields, NewIdentity(s.AsGlobal()), materialized)
return g
}
Expand Down
4 changes: 2 additions & 2 deletions go/boost/dataflow/flownode/internal_join_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import (
func TestJoin(t *testing.T) {
setup := func(t *testing.T) (*MockGraph, boostpb.IndexPair, boostpb.IndexPair) {
g := NewMockGraph(t)
l := g.AddBase("left", []string{"l0", "l1"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar), nil)
r := g.AddBase("right", []string{"r0", "r1"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar), nil)
l := g.AddBase("left", []string{"l0", "l1"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar))
r := g.AddBase("right", []string{"r0", "r1"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar))
j := NewJoin(l.AsGlobal(), r.AsGlobal(), JoinTypeOuter, [2]int{0, 0}, [][2]int{{0, 0}, {1, -1}, {-1, 1}})
g.SetOp("join", []string{"j0", "j1", "j2"}, j, false)
return g, l, r
Expand Down
1 change: 0 additions & 1 deletion go/boost/dataflow/flownode/internal_topk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ func TestTopk(t *testing.T) {
"source",
[]string{"x", "y", "z"},
boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar, sqltypes.Int64),
nil,
)
g.SetOp(
"topk",
Expand Down
4 changes: 2 additions & 2 deletions go/boost/dataflow/flownode/internal_union_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import (
func TestUnion(t *testing.T) {
setup := func(t *testing.T) (*MockGraph, boostpb.IndexPair, boostpb.IndexPair) {
g := NewMockGraph(t)
l := g.AddBase("left", []string{"l0", "l1"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar), nil)
r := g.AddBase("right", []string{"r0", "r1", "r2"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar, sqltypes.VarChar), nil)
l := g.AddBase("left", []string{"l0", "l1"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar))
r := g.AddBase("right", []string{"r0", "r1", "r2"}, boostpb.TestSchema(sqltypes.Int64, sqltypes.VarChar, sqltypes.VarChar))
emits := map[graph.NodeIdx][]int{
l.AsGlobal(): {0, 1},
r.AsGlobal(): {0, 2},
Expand Down
5 changes: 2 additions & 3 deletions go/boost/dataflow/flownode/mock_graph_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"vitess.io/vitess/go/boost/dataflow/domain/replay"
"vitess.io/vitess/go/boost/dataflow/state"
"vitess.io/vitess/go/boost/graph"
"vitess.io/vitess/go/sqltypes"
)

type MockGraph struct {
Expand Down Expand Up @@ -37,8 +36,8 @@ func NewMockGraph(t testing.TB) *MockGraph {
}
}

func (mg *MockGraph) AddBase(name string, fields []string, schema []boostpb.Type, defaults []sqltypes.Value) boostpb.IndexPair {
i := NewBase(nil, schema, defaults)
func (mg *MockGraph) AddBase(name string, fields []string, schema []boostpb.Type) boostpb.IndexPair {
i := NewBase(name, nil, schema)
global := mg.graph.AddNode(New(name, fields, i))
mg.graph.AddEdge(mg.source, global)

Expand Down
8 changes: 4 additions & 4 deletions go/boost/dataflow/flownode/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type Stats struct {
}

type Node struct {
Name string
name string
index boostpb.IndexPair
domain boostpb.DomainIndex

Expand Down Expand Up @@ -46,7 +46,7 @@ type Internal interface {

func New(name string, fields []string, inner NodeImpl) *Node {
return &Node{
Name: name,
name: name,
domain: boostpb.InvalidDomainIndex,
index: boostpb.EmptyIndexPair(),
fields: fields,
Expand All @@ -64,7 +64,7 @@ func (n *Node) Index() boostpb.IndexPair {
}

func (n *Node) Mirror(inner NodeImpl) *Node {
return New(n.Name, slices.Clone(n.fields), inner)
return New(n.name, slices.Clone(n.fields), inner)
}

func (n *Node) NamedMirror(inner NodeImpl, name string) *Node {
Expand Down Expand Up @@ -162,7 +162,7 @@ func (n *Node) Finalize(g *graph.Graph[*Node]) *Node {
n.ResolveSchema(g)

var final = &Node{
Name: n.Name,
name: n.name,
index: n.index,
domain: n.domain,
fields: n.fields,
Expand Down
7 changes: 7 additions & 0 deletions go/boost/dataflow/flownode/node_impls.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ func (n *Node) AsSource() *Source {

type AnyBase interface {
NodeImpl
Keyspace() string
Table() string
Schema() []boostpb.Type
}

Expand All @@ -30,6 +32,11 @@ func (n *Node) IsAnyBase() bool {
return ok
}

func (n *Node) AsAnyBase() AnyBase {
base, _ := n.impl.(AnyBase)
return base
}

func (n *Node) IsBase() bool {
_, ok := n.impl.(*Base)
return ok
Expand Down
4 changes: 2 additions & 2 deletions go/boost/dataflow/flownode/proto.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (

func (n *Node) ToProto() *boostpb.Node {
pnode := &boostpb.Node{
Name: n.Name,
Name: n.name,
Index: &n.index,
Domain: n.domain,
Fields: n.fields,
Expand Down Expand Up @@ -56,7 +56,7 @@ func (n *Node) ToProto() *boostpb.Node {

func NodeFromProto(v *boostpb.Node) *Node {
node := &Node{
Name: v.Name,
name: v.Name,
index: *v.Index,
domain: v.Domain,
fields: v.Fields,
Expand Down
11 changes: 11 additions & 0 deletions go/boost/dataflow/flownode/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type Reader struct {
// not serialized
writer *backlog.Writer

publicID string
forNode graph.NodeIdx
state []int
parameters []boostpb.ViewParameter
Expand Down Expand Up @@ -192,6 +193,7 @@ func NewReader(forNode graph.NodeIdx) *Reader {

func (r *Reader) ToProto() *boostpb.Node_Reader {
return &boostpb.Node_Reader{
PublicId: r.publicID,
ForNode: r.forNode,
State: r.state,
Parameters: r.parameters,
Expand All @@ -202,9 +204,18 @@ func (r *Reader) ToProto() *boostpb.Node_Reader {
}
}

func (r *Reader) SetPublicID(id string) {
r.publicID = id
}

func (r *Reader) PublicID() string {
return r.publicID
}

func NewReaderFromProto(r *boostpb.Node_Reader) *Reader {
return &Reader{
writer: nil,
publicID: r.PublicId,
forNode: r.ForNode,
state: r.State,
parameters: r.Parameters,
Expand Down
15 changes: 9 additions & 6 deletions go/boost/proto/node.proto
Original file line number Diff line number Diff line change
Expand Up @@ -59,25 +59,28 @@ message Node {
Sharding sharding = 10;

message Base {
repeated int64 primary_key = 1 [(gogoproto.casttype) = "int"];
repeated int64 dropped = 2 [(gogoproto.casttype) = "int"];
string table = 1;
repeated int64 primary_key = 2 [(gogoproto.casttype) = "int"];
repeated int64 dropped = 3 [(gogoproto.casttype) = "int"];
bool unmodified = 4;
repeated Type schema = 5 [(gogoproto.nullable) = false];
};

message ExternalBase {
repeated int64 primary_key = 1 [(gogoproto.casttype) = "int"];
string keyspace = 2;
repeated Type schema = 3 [(gogoproto.nullable) = false];
string table = 3;
repeated Type schema = 4 [(gogoproto.nullable) = false];
};

message Ingress {};
message Egress {};

message Reader {
uint32 for_node = 1 [(gogoproto.casttype) = "GraphNodeIdx"];
repeated int64 state = 2 [(gogoproto.casttype) = "int"];
repeated ViewParameter parameters = 3 [(gogoproto.nullable) = false];
string public_id = 1;
uint32 for_node = 2 [(gogoproto.casttype) = "GraphNodeIdx"];
repeated int64 state = 3 [(gogoproto.casttype) = "int"];
repeated ViewParameter parameters = 4 [(gogoproto.nullable) = false];

repeated OrderedColumn topk_order = 5 [(gogoproto.nullable) = false];
int64 topk_limit = 6 [(gogoproto.casttype) = "int"];
Expand Down
Loading

0 comments on commit 99a2647

Please sign in to comment.