提交 342fd27e 编写于 作者: martianzhang's avatar martianzhang

update vendor

上级 6734ef20
...@@ -14,10 +14,14 @@ ...@@ -14,10 +14,14 @@
package ast package ast
import ( import (
"strings"
"github.com/pingcap/errors" "github.com/pingcap/errors"
"github.com/pingcap/parser/auth" "github.com/pingcap/parser/auth"
. "github.com/pingcap/parser/format" . "github.com/pingcap/parser/format"
"github.com/pingcap/parser/model" "github.com/pingcap/parser/model"
"github.com/pingcap/parser/mysql"
"github.com/pingcap/parser/terror"
"github.com/pingcap/parser/types" "github.com/pingcap/parser/types"
) )
...@@ -862,6 +866,13 @@ func (n *CreateTableStmt) Accept(v Visitor) (Node, bool) { ...@@ -862,6 +866,13 @@ func (n *CreateTableStmt) Accept(v Visitor) (Node, bool) {
} }
n.Select = node.(ResultSetNode) n.Select = node.(ResultSetNode)
} }
if n.Partition != nil {
node, ok := n.Partition.Accept(v)
if !ok {
return n, false
}
n.Partition = node.(*PartitionOptions)
}
return v.Leave(n) return v.Leave(n)
} }
...@@ -1020,6 +1031,7 @@ type CreateViewStmt struct { ...@@ -1020,6 +1031,7 @@ type CreateViewStmt struct {
ViewName *TableName ViewName *TableName
Cols []model.CIStr Cols []model.CIStr
Select StmtNode Select StmtNode
SchemaCols []model.CIStr
Algorithm model.ViewAlgorithm Algorithm model.ViewAlgorithm
Definer *auth.UserIdentity Definer *auth.UserIdentity
Security model.ViewSecurity Security model.ViewSecurity
...@@ -1219,6 +1231,68 @@ func (n *DropIndexStmt) Accept(v Visitor) (Node, bool) { ...@@ -1219,6 +1231,68 @@ func (n *DropIndexStmt) Accept(v Visitor) (Node, bool) {
return v.Leave(n) return v.Leave(n)
} }
// LockTablesStmt is a statement to lock tables.
type LockTablesStmt struct {
ddlNode
TableLocks []TableLock
}
// TableLock contains the table name and lock type.
type TableLock struct {
Table *TableName
Type model.TableLockType
}
// Accept implements Node Accept interface.
func (n *LockTablesStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*LockTablesStmt)
for i := range n.TableLocks {
node, ok := n.TableLocks[i].Table.Accept(v)
if !ok {
return n, false
}
n.TableLocks[i].Table = node.(*TableName)
}
return v.Leave(n)
}
// Restore implements Node interface.
func (n *LockTablesStmt) Restore(ctx *RestoreCtx) error {
ctx.WriteKeyWord("LOCK TABLES ")
for i, tl := range n.TableLocks {
if i != 0 {
ctx.WritePlain(", ")
}
if err := tl.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while add index")
}
ctx.WriteKeyWord(" " + tl.Type.String())
}
return nil
}
// UnlockTablesStmt is a statement to unlock tables.
type UnlockTablesStmt struct {
ddlNode
}
// Accept implements Node Accept interface.
func (n *UnlockTablesStmt) Accept(v Visitor) (Node, bool) {
_, _ = v.Enter(n)
return v.Leave(n)
}
// Restore implements Node interface.
func (n *UnlockTablesStmt) Restore(ctx *RestoreCtx) error {
ctx.WriteKeyWord("UNLOCK TABLES")
return nil
}
// TableOptionType is the type for TableOption // TableOptionType is the type for TableOption
type TableOptionType int type TableOptionType int
...@@ -1244,6 +1318,10 @@ const ( ...@@ -1244,6 +1318,10 @@ const (
TableOptionShardRowID TableOptionShardRowID
TableOptionPreSplitRegion TableOptionPreSplitRegion
TableOptionPackKeys TableOptionPackKeys
TableOptionTablespace
TableOptionNodegroup
TableOptionDataDirectory
TableOptionIndexDirectory
) )
// RowFormat types // RowFormat types
...@@ -1398,6 +1476,21 @@ func (n *TableOption) Restore(ctx *RestoreCtx) error { ...@@ -1398,6 +1476,21 @@ func (n *TableOption) Restore(ctx *RestoreCtx) error {
ctx.WritePlain("= ") ctx.WritePlain("= ")
ctx.WriteKeyWord("DEFAULT") ctx.WriteKeyWord("DEFAULT")
ctx.WritePlain(" /* TableOptionPackKeys is not supported */ ") ctx.WritePlain(" /* TableOptionPackKeys is not supported */ ")
case TableOptionTablespace:
ctx.WriteKeyWord("TABLESPACE ")
ctx.WritePlain("= ")
ctx.WriteName(n.StrValue)
case TableOptionNodegroup:
ctx.WriteKeyWord("NODEGROUP ")
ctx.WritePlainf("= %d", n.UintValue)
case TableOptionDataDirectory:
ctx.WriteKeyWord("DATA DIRECTORY ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
case TableOptionIndexDirectory:
ctx.WriteKeyWord("INDEX DIRECTORY ")
ctx.WritePlain("= ")
ctx.WriteString(n.StrValue)
default: default:
return errors.Errorf("invalid TableOption: %d", n.Tp) return errors.Errorf("invalid TableOption: %d", n.Tp)
} }
...@@ -1482,6 +1575,9 @@ const ( ...@@ -1482,6 +1575,9 @@ const (
AlterTableCoalescePartitions AlterTableCoalescePartitions
AlterTableDropPartition AlterTableDropPartition
AlterTableTruncatePartition AlterTableTruncatePartition
AlterTablePartition
AlterTableEnableKeys
AlterTableDisableKeys
// TODO: Add more actions // TODO: Add more actions
) )
...@@ -1558,6 +1654,8 @@ type AlterTableSpec struct { ...@@ -1558,6 +1654,8 @@ type AlterTableSpec struct {
Comment string Comment string
FromKey model.CIStr FromKey model.CIStr
ToKey model.CIStr ToKey model.CIStr
Partition *PartitionOptions
PartitionNames []model.CIStr
PartDefinitions []*PartitionDefinition PartDefinitions []*PartitionDefinition
Num uint64 Num uint64
} }
...@@ -1710,10 +1808,28 @@ func (n *AlterTableSpec) Restore(ctx *RestoreCtx) error { ...@@ -1710,10 +1808,28 @@ func (n *AlterTableSpec) Restore(ctx *RestoreCtx) error {
ctx.WritePlainf("%d", n.Num) ctx.WritePlainf("%d", n.Num)
case AlterTableDropPartition: case AlterTableDropPartition:
ctx.WriteKeyWord("DROP PARTITION ") ctx.WriteKeyWord("DROP PARTITION ")
ctx.WriteName(n.Name) for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTableTruncatePartition: case AlterTableTruncatePartition:
ctx.WriteKeyWord("TRUNCATE PARTITION ") ctx.WriteKeyWord("TRUNCATE PARTITION ")
ctx.WriteName(n.Name) for i, name := range n.PartitionNames {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WriteName(name.O)
}
case AlterTablePartition:
if err := n.Partition.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AlterTableSpec.Partition")
}
case AlterTableEnableKeys:
ctx.WriteKeyWord("ENABLE KEYS")
case AlterTableDisableKeys:
ctx.WriteKeyWord("DISABLE KEYS")
default: default:
// TODO: not support // TODO: not support
ctx.WritePlainf(" /* AlterTableType(%d) is not supported */ ", n.Tp) ctx.WritePlainf(" /* AlterTableType(%d) is not supported */ ", n.Tp)
...@@ -1782,7 +1898,7 @@ func (n *AlterTableStmt) Restore(ctx *RestoreCtx) error { ...@@ -1782,7 +1898,7 @@ func (n *AlterTableStmt) Restore(ctx *RestoreCtx) error {
return errors.Annotate(err, "An error occurred while restore AlterTableStmt.Table") return errors.Annotate(err, "An error occurred while restore AlterTableStmt.Table")
} }
for i, spec := range n.Specs { for i, spec := range n.Specs {
if i == 0 { if i == 0 || spec.Tp == AlterTablePartition {
ctx.WritePlain(" ") ctx.WritePlain(" ")
} else { } else {
ctx.WritePlain(", ") ctx.WritePlain(", ")
...@@ -1848,94 +1964,474 @@ func (n *TruncateTableStmt) Accept(v Visitor) (Node, bool) { ...@@ -1848,94 +1964,474 @@ func (n *TruncateTableStmt) Accept(v Visitor) (Node, bool) {
return v.Leave(n) return v.Leave(n)
} }
var (
ErrNoParts = terror.ClassDDL.NewStd(mysql.ErrNoParts)
ErrPartitionColumnList = terror.ClassDDL.NewStd(mysql.ErrPartitionColumnList)
ErrPartitionRequiresValues = terror.ClassDDL.NewStd(mysql.ErrPartitionRequiresValues)
ErrPartitionsMustBeDefined = terror.ClassDDL.NewStd(mysql.ErrPartitionsMustBeDefined)
ErrPartitionWrongNoPart = terror.ClassDDL.NewStd(mysql.ErrPartitionWrongNoPart)
ErrPartitionWrongNoSubpart = terror.ClassDDL.NewStd(mysql.ErrPartitionWrongNoSubpart)
ErrPartitionWrongValues = terror.ClassDDL.NewStd(mysql.ErrPartitionWrongValues)
ErrRowSinglePartitionField = terror.ClassDDL.NewStd(mysql.ErrRowSinglePartitionField)
ErrSubpartition = terror.ClassDDL.NewStd(mysql.ErrSubpartition)
ErrSystemVersioningWrongPartitions = terror.ClassDDL.NewStd(mysql.ErrSystemVersioningWrongPartitions)
ErrTooManyValues = terror.ClassDDL.NewStd(mysql.ErrTooManyValues)
ErrWrongPartitionTypeExpectedSystemTime = terror.ClassDDL.NewStd(mysql.ErrWrongPartitionTypeExpectedSystemTime)
)
type SubPartitionDefinition struct {
Name model.CIStr
Options []*TableOption
}
func (spd *SubPartitionDefinition) Restore(ctx *RestoreCtx) error {
ctx.WriteKeyWord("SUBPARTITION ")
ctx.WriteName(spd.Name.O)
for i, opt := range spd.Options {
ctx.WritePlain(" ")
if err := opt.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SubPartitionDefinition.Options[%d]", i)
}
}
return nil
}
type PartitionDefinitionClause interface {
restore(ctx *RestoreCtx) error
acceptInPlace(v Visitor) bool
// Validate checks if the clause is consistent with the given options.
// `pt` can be 0 and `columns` can be -1 to skip checking the clause against
// the partition type or number of columns in the expression list.
Validate(pt model.PartitionType, columns int) error
}
type PartitionDefinitionClauseNone struct{}
func (n *PartitionDefinitionClauseNone) restore(ctx *RestoreCtx) error {
return nil
}
func (n *PartitionDefinitionClauseNone) acceptInPlace(v Visitor) bool {
return true
}
func (n *PartitionDefinitionClauseNone) Validate(pt model.PartitionType, columns int) error {
switch pt {
case 0:
case model.PartitionTypeRange:
return ErrPartitionRequiresValues.GenWithStackByArgs("RANGE", "LESS THAN")
case model.PartitionTypeList:
return ErrPartitionRequiresValues.GenWithStackByArgs("LIST", "IN")
case model.PartitionTypeSystemTime:
return ErrSystemVersioningWrongPartitions
}
return nil
}
type PartitionDefinitionClauseLessThan struct {
Exprs []ExprNode
}
func (n *PartitionDefinitionClauseLessThan) restore(ctx *RestoreCtx) error {
ctx.WriteKeyWord(" VALUES LESS THAN ")
ctx.WritePlain("(")
for i, expr := range n.Exprs {
if i != 0 {
ctx.WritePlain(", ")
}
if err := expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinitionClauseLessThan.Exprs[%d]", i)
}
}
ctx.WritePlain(")")
return nil
}
func (n *PartitionDefinitionClauseLessThan) acceptInPlace(v Visitor) bool {
for i, expr := range n.Exprs {
newExpr, ok := expr.Accept(v)
if !ok {
return false
}
n.Exprs[i] = newExpr.(ExprNode)
}
return true
}
func (n *PartitionDefinitionClauseLessThan) Validate(pt model.PartitionType, columns int) error {
switch pt {
case model.PartitionTypeRange, 0:
default:
return ErrPartitionWrongValues.GenWithStackByArgs("RANGE", "LESS THAN")
}
switch {
case columns == 0 && len(n.Exprs) != 1:
return ErrTooManyValues.GenWithStackByArgs("RANGE")
case columns > 0 && len(n.Exprs) != columns:
return ErrPartitionColumnList
}
return nil
}
type PartitionDefinitionClauseIn struct {
Values [][]ExprNode
}
func (n *PartitionDefinitionClauseIn) restore(ctx *RestoreCtx) error {
// we special-case an empty list of values to mean MariaDB's "DEFAULT" clause.
if len(n.Values) == 0 {
ctx.WriteKeyWord(" DEFAULT")
return nil
}
ctx.WriteKeyWord(" VALUES IN ")
ctx.WritePlain("(")
for i, valList := range n.Values {
if i != 0 {
ctx.WritePlain(", ")
}
if len(valList) == 1 {
if err := valList[0].Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinitionClauseIn.Values[%d][0]", i)
}
} else {
ctx.WritePlain("(")
for j, val := range valList {
if j != 0 {
ctx.WritePlain(", ")
}
if err := val.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinitionClauseIn.Values[%d][%d]", i, j)
}
}
ctx.WritePlain(")")
}
}
ctx.WritePlain(")")
return nil
}
func (n *PartitionDefinitionClauseIn) acceptInPlace(v Visitor) bool {
for _, valList := range n.Values {
for j, val := range valList {
newVal, ok := val.Accept(v)
if !ok {
return false
}
valList[j] = newVal.(ExprNode)
}
}
return true
}
func (n *PartitionDefinitionClauseIn) Validate(pt model.PartitionType, columns int) error {
switch pt {
case model.PartitionTypeList, 0:
default:
return ErrPartitionWrongValues.GenWithStackByArgs("LIST", "IN")
}
if len(n.Values) == 0 {
return nil
}
expectedColCount := len(n.Values[0])
for _, val := range n.Values[1:] {
if len(val) != expectedColCount {
return ErrPartitionColumnList
}
}
switch {
case columns == 0 && expectedColCount != 1:
return ErrRowSinglePartitionField
case columns > 0 && expectedColCount != columns:
return ErrPartitionColumnList
}
return nil
}
type PartitionDefinitionClauseHistory struct {
Current bool
}
func (n *PartitionDefinitionClauseHistory) restore(ctx *RestoreCtx) error {
if n.Current {
ctx.WriteKeyWord(" CURRENT")
} else {
ctx.WriteKeyWord(" HISTORY")
}
return nil
}
func (n *PartitionDefinitionClauseHistory) acceptInPlace(v Visitor) bool {
return true
}
func (n *PartitionDefinitionClauseHistory) Validate(pt model.PartitionType, columns int) error {
switch pt {
case 0, model.PartitionTypeSystemTime:
default:
return ErrWrongPartitionTypeExpectedSystemTime
}
return nil
}
// PartitionDefinition defines a single partition. // PartitionDefinition defines a single partition.
type PartitionDefinition struct { type PartitionDefinition struct {
Name model.CIStr Name model.CIStr
LessThan []ExprNode Clause PartitionDefinitionClause
MaxValue bool Options []*TableOption
Comment string Sub []*SubPartitionDefinition
}
// Comment returns the comment option given to this definition.
// The second return value indicates if the comment option exists.
func (n *PartitionDefinition) Comment() (string, bool) {
for _, opt := range n.Options {
if opt.Tp == TableOptionComment {
return opt.StrValue, true
}
}
return "", false
}
func (n *PartitionDefinition) acceptInPlace(v Visitor) bool {
return n.Clause.acceptInPlace(v)
} }
// Restore implements Node interface. // Restore implements Node interface.
func (n *PartitionDefinition) Restore(ctx *RestoreCtx) error { func (n *PartitionDefinition) Restore(ctx *RestoreCtx) error {
ctx.WriteKeyWord("PARTITION ") ctx.WriteKeyWord("PARTITION ")
ctx.WriteName(n.Name.O) ctx.WriteName(n.Name.O)
if n.LessThan != nil {
ctx.WriteKeyWord(" VALUES LESS THAN ") if err := n.Clause.restore(ctx); err != nil {
ctx.WritePlain("(") return errors.Annotate(err, "An error occurred while restore PartitionDefinition.Clause")
for k, less := range n.LessThan {
if k != 0 {
ctx.WritePlain(", ")
} }
if err := less.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinition.LessThan[%d]", k) for i, opt := range n.Options {
ctx.WritePlain(" ")
if err := opt.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinition.Options[%d]", i)
} }
} }
ctx.WritePlain(")")
if len(n.Sub) > 0 {
ctx.WritePlain(" (")
for i, spd := range n.Sub {
if i != 0 {
ctx.WritePlain(",")
}
if err := spd.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionDefinition.Sub[%d]", i)
} }
if n.Comment != "" {
ctx.WriteKeyWord(" COMMENT ")
ctx.WritePlain("= ")
ctx.WriteString(n.Comment)
} }
ctx.WritePlain(")")
}
return nil return nil
} }
// PartitionOptions specifies the partition options. // PartitionMethod describes how partitions or subpartitions are constructed.
type PartitionOptions struct { type PartitionMethod struct {
// Tp is the type of the partition function
Tp model.PartitionType Tp model.PartitionType
// Linear is a modifier to the HASH and KEY type for choosing a different
// algorithm
Linear bool
// Expr is an expression used as argument of HASH, RANGE, LIST and
// SYSTEM_TIME types
Expr ExprNode Expr ExprNode
// ColumnNames is a list of column names used as argument of KEY,
// RANGE COLUMNS and LIST COLUMNS types
ColumnNames []*ColumnName ColumnNames []*ColumnName
Definitions []*PartitionDefinition // Unit is a time unit used as argument of SYSTEM_TIME type
Unit ValueExpr
// Limit is a row count used as argument of the SYSTEM_TIME type
Limit uint64
// Num is the number of (sub)partitions required by the method.
Num uint64 Num uint64
} }
func (n *PartitionOptions) Restore(ctx *RestoreCtx) error { // Restore implements the Node interface
ctx.WriteKeyWord("PARTITION BY ") func (n *PartitionMethod) Restore(ctx *RestoreCtx) error {
switch n.Tp { if n.Linear {
case model.PartitionTypeRange: ctx.WriteKeyWord("LINEAR ")
ctx.WriteKeyWord("RANGE ")
case model.PartitionTypeHash:
ctx.WriteKeyWord("HASH ")
case model.PartitionTypeList:
return errors.New("TiDB Parser ignore the `PartitionTypeList` type now")
default:
return errors.Errorf("invalid model.PartitionType: %d", n.Tp)
} }
ctx.WriteKeyWord(n.Tp.String())
if n.Expr != nil { switch {
ctx.WritePlain("(") case n.Tp == model.PartitionTypeSystemTime:
if n.Expr != nil && n.Unit != nil {
ctx.WriteKeyWord(" INTERVAL ")
if err := n.Expr.Restore(ctx); err != nil { if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionOptions Expr") return errors.Annotate(err, "An error occurred while restore PartitionMethod.Expr")
} }
ctx.WritePlain(") ")
// Here the Unit string should not be quoted.
// TODO: This is a temporary workaround that should be changed once something like "Keyword Expression" is implemented.
var sb strings.Builder
if err := n.Unit.Restore(NewRestoreCtx(0, &sb)); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionMethod.Unit")
} }
if len(n.ColumnNames) > 0 { ctx.WritePlain(" ")
ctx.WriteKeyWord("COLUMNS") ctx.WriteKeyWord(sb.String())
ctx.WritePlain("(") }
case n.Expr != nil:
ctx.WritePlain(" (")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionMethod.Expr")
}
ctx.WritePlain(")")
default:
if n.Tp == model.PartitionTypeRange || n.Tp == model.PartitionTypeList {
ctx.WriteKeyWord(" COLUMNS")
}
ctx.WritePlain(" (")
for i, col := range n.ColumnNames { for i, col := range n.ColumnNames {
if i > 0 { if i > 0 {
ctx.WritePlain(",") ctx.WritePlain(",")
} }
if err := col.Restore(ctx); err != nil { if err := col.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing PartitionOptions ColumnName: [%v]", i) return errors.Annotatef(err, "An error occurred while splicing PartitionMethod.ColumnName[%d]", i)
}
}
ctx.WritePlain(")")
}
if n.Limit > 0 {
ctx.WriteKeyWord(" LIMIT ")
ctx.WritePlainf("%d", n.Limit)
}
return nil
}
// acceptInPlace is like Node.Accept but does not allow replacing the node itself.
func (n *PartitionMethod) acceptInPlace(v Visitor) bool {
if n.Expr != nil {
expr, ok := n.Expr.Accept(v)
if !ok {
return false
}
n.Expr = expr.(ExprNode)
}
for i, colName := range n.ColumnNames {
newColName, ok := colName.Accept(v)
if !ok {
return false
}
n.ColumnNames[i] = newColName.(*ColumnName)
}
if n.Unit != nil {
unit, ok := n.Unit.Accept(v)
if !ok {
return false
}
n.Unit = unit.(ValueExpr)
}
return true
}
// PartitionOptions specifies the partition options.
type PartitionOptions struct {
node
PartitionMethod
Sub *PartitionMethod
Definitions []*PartitionDefinition
}
// Validate checks if the partition is well-formed.
func (n *PartitionOptions) Validate() error {
// if both a partition list and the partition numbers are specified, their values must match
if n.Num != 0 && len(n.Definitions) != 0 && n.Num != uint64(len(n.Definitions)) {
return ErrPartitionWrongNoPart
}
// now check the subpartition count
if len(n.Definitions) > 0 {
// ensure the subpartition count for every partitions are the same
// then normalize n.Num and n.Sub.Num so equality comparison works.
n.Num = uint64(len(n.Definitions))
subDefCount := len(n.Definitions[0].Sub)
for _, pd := range n.Definitions[1:] {
if len(pd.Sub) != subDefCount {
return ErrPartitionWrongNoSubpart
}
}
if n.Sub != nil {
if n.Sub.Num != 0 && subDefCount != 0 && n.Sub.Num != uint64(subDefCount) {
return ErrPartitionWrongNoSubpart
}
if subDefCount != 0 {
n.Sub.Num = uint64(subDefCount)
}
} else if subDefCount != 0 {
return ErrSubpartition
} }
} }
ctx.WritePlain(") ")
switch n.Tp {
case model.PartitionTypeHash, model.PartitionTypeKey:
if n.Num == 0 {
n.Num = 1
}
case model.PartitionTypeRange, model.PartitionTypeList:
if len(n.Definitions) == 0 {
return ErrPartitionsMustBeDefined.GenWithStackByArgs(n.Tp)
}
case model.PartitionTypeSystemTime:
if len(n.Definitions) < 2 {
return ErrSystemVersioningWrongPartitions
}
} }
if n.Num > 0 {
ctx.WriteKeyWord("PARTITIONS ") for _, pd := range n.Definitions {
// ensure the partition definition types match the methods,
// e.g. RANGE partitions only allows VALUES LESS THAN
if err := pd.Clause.Validate(n.Tp, len(n.ColumnNames)); err != nil {
return err
}
}
return nil
}
func (n *PartitionOptions) Restore(ctx *RestoreCtx) error {
ctx.WriteKeyWord("PARTITION BY ")
if err := n.PartitionMethod.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionOptions.PartitionMethod")
}
if n.Num > 0 && len(n.Definitions) == 0 {
ctx.WriteKeyWord(" PARTITIONS ")
ctx.WritePlainf("%d", n.Num) ctx.WritePlainf("%d", n.Num)
} }
if n.Sub != nil {
ctx.WriteKeyWord(" SUBPARTITION BY ")
if err := n.Sub.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PartitionOptions.Sub")
}
if n.Sub.Num > 0 {
ctx.WriteKeyWord(" SUBPARTITIONS ")
ctx.WritePlainf("%d", n.Sub.Num)
}
}
if len(n.Definitions) > 0 { if len(n.Definitions) > 0 {
ctx.WritePlain("(") ctx.WritePlain(" (")
for i, def := range n.Definitions { for i, def := range n.Definitions {
if i > 0 { if i > 0 {
ctx.WritePlain(",") ctx.WritePlain(",")
} }
if err := def.Restore(ctx); err != nil { if err := def.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing PartitionOptions Definitions: [%v]", i) return errors.Annotatef(err, "An error occurred while restore PartitionOptions.Definitions[%d]", i)
} }
} }
ctx.WritePlain(")") ctx.WritePlain(")")
...@@ -1944,6 +2440,27 @@ func (n *PartitionOptions) Restore(ctx *RestoreCtx) error { ...@@ -1944,6 +2440,27 @@ func (n *PartitionOptions) Restore(ctx *RestoreCtx) error {
return nil return nil
} }
func (n *PartitionOptions) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n)
if skipChildren {
return v.Leave(newNode)
}
n = newNode.(*PartitionOptions)
if !n.PartitionMethod.acceptInPlace(v) {
return n, false
}
if n.Sub != nil && !n.Sub.acceptInPlace(v) {
return n, false
}
for _, def := range n.Definitions {
if !def.acceptInPlace(v) {
return n, false
}
}
return v.Leave(n)
}
// RecoverTableStmt is a statement to recover dropped table. // RecoverTableStmt is a statement to recover dropped table.
type RecoverTableStmt struct { type RecoverTableStmt struct {
ddlNode ddlNode
......
...@@ -31,7 +31,7 @@ var ( ...@@ -31,7 +31,7 @@ var (
_ DMLNode = &SelectStmt{} _ DMLNode = &SelectStmt{}
_ DMLNode = &ShowStmt{} _ DMLNode = &ShowStmt{}
_ DMLNode = &LoadDataStmt{} _ DMLNode = &LoadDataStmt{}
_ DMLNode = &SplitIndexRegionStmt{} _ DMLNode = &SplitRegionStmt{}
_ Node = &Assignment{} _ Node = &Assignment{}
_ Node = &ByItem{} _ Node = &ByItem{}
...@@ -777,6 +777,18 @@ func (n *SelectStmt) Restore(ctx *RestoreCtx) error { ...@@ -777,6 +777,18 @@ func (n *SelectStmt) Restore(ctx *RestoreCtx) error {
ctx.WritePlain(" ") ctx.WritePlain(" ")
} }
if n.SelectStmtOpts.SQLSmallResult {
ctx.WriteKeyWord("SQL_SMALL_RESULT ")
}
if n.SelectStmtOpts.SQLBigResult {
ctx.WriteKeyWord("SQL_BIG_RESULT ")
}
if n.SelectStmtOpts.SQLBufferResult {
ctx.WriteKeyWord("SQL_BUFFER_RESULT ")
}
if !n.SelectStmtOpts.SQLCache { if !n.SelectStmtOpts.SQLCache {
ctx.WriteKeyWord("SQL_NO_CACHE ") ctx.WriteKeyWord("SQL_NO_CACHE ")
} }
...@@ -2404,60 +2416,119 @@ func (n *FrameBound) Accept(v Visitor) (Node, bool) { ...@@ -2404,60 +2416,119 @@ func (n *FrameBound) Accept(v Visitor) (Node, bool) {
return v.Leave(n) return v.Leave(n)
} }
type SplitIndexRegionStmt struct { type SplitRegionStmt struct {
dmlNode dmlNode
Table *TableName Table *TableName
IndexName string IndexName model.CIStr
SplitOpt *SplitOption
}
type SplitOption struct {
Lower []ExprNode
Upper []ExprNode
Num int64
ValueLists [][]ExprNode ValueLists [][]ExprNode
} }
func (n *SplitIndexRegionStmt) Restore(ctx *RestoreCtx) error { func (n *SplitRegionStmt) Restore(ctx *RestoreCtx) error {
ctx.WriteKeyWord("SPLIT TABLE ") ctx.WriteKeyWord("SPLIT TABLE ")
if err := n.Table.Restore(ctx); err != nil { if err := n.Table.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore SplitIndexRegionStmt.Table") return errors.Annotate(err, "An error occurred while restore SplitIndexRegionStmt.Table")
} }
if len(n.IndexName.L) > 0 {
ctx.WriteKeyWord(" INDEX ") ctx.WriteKeyWord(" INDEX ")
ctx.WriteName(n.IndexName) ctx.WriteName(n.IndexName.String())
ctx.WriteKeyWord(" BY ")
for i, row := range n.ValueLists {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain("(")
for j, v := range row {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SplitIndexRegionStmt.ValueLists[%d][%d]", i, j)
} }
} ctx.WritePlain(" ")
ctx.WritePlain(")") err := n.SplitOpt.Restore(ctx)
} return err
return nil
} }
func (n *SplitIndexRegionStmt) Accept(v Visitor) (Node, bool) { func (n *SplitRegionStmt) Accept(v Visitor) (Node, bool) {
newNode, skipChildren := v.Enter(n) newNode, skipChildren := v.Enter(n)
if skipChildren { if skipChildren {
return v.Leave(newNode) return v.Leave(newNode)
} }
n = newNode.(*SplitIndexRegionStmt) n = newNode.(*SplitRegionStmt)
node, ok := n.Table.Accept(v) node, ok := n.Table.Accept(v)
if !ok { if !ok {
return n, false return n, false
} }
n.Table = node.(*TableName) n.Table = node.(*TableName)
for i, list := range n.ValueLists { for i, val := range n.SplitOpt.Lower {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.SplitOpt.Lower[i] = node.(ExprNode)
}
for i, val := range n.SplitOpt.Upper {
node, ok := val.Accept(v)
if !ok {
return n, false
}
n.SplitOpt.Upper[i] = node.(ExprNode)
}
for i, list := range n.SplitOpt.ValueLists {
for j, val := range list { for j, val := range list {
node, ok := val.Accept(v) node, ok := val.Accept(v)
if !ok { if !ok {
return n, false return n, false
} }
n.ValueLists[i][j] = node.(ExprNode) n.SplitOpt.ValueLists[i][j] = node.(ExprNode)
} }
} }
return v.Leave(n) return v.Leave(n)
} }
func (n *SplitOption) Restore(ctx *RestoreCtx) error {
if len(n.ValueLists) == 0 {
ctx.WriteKeyWord("BETWEEN ")
ctx.WritePlain("(")
for j, v := range n.Lower {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SplitOption Lower")
}
}
ctx.WritePlain(")")
ctx.WriteKeyWord(" AND ")
ctx.WritePlain("(")
for j, v := range n.Upper {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SplitOption Upper")
}
}
ctx.WritePlain(")")
ctx.WriteKeyWord(" REGIONS")
ctx.WritePlainf(" %d", n.Num)
return nil
}
ctx.WriteKeyWord("BY ")
for i, row := range n.ValueLists {
if i != 0 {
ctx.WritePlain(",")
}
ctx.WritePlain("(")
for j, v := range row {
if j != 0 {
ctx.WritePlain(",")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore SplitOption.ValueLists[%d][%d]", i, j)
}
}
ctx.WritePlain(")")
}
return nil
}
...@@ -1379,6 +1379,7 @@ const ( ...@@ -1379,6 +1379,7 @@ const (
AdminChecksumTable AdminChecksumTable
AdminShowSlow AdminShowSlow
AdminShowNextRowID AdminShowNextRowID
AdminReloadExprPushdownBlacklist
) )
// HandleRange represents a range where handle value >= Begin and < End. // HandleRange represents a range where handle value >= Begin and < End.
...@@ -1547,6 +1548,8 @@ func (n *AdminStmt) Restore(ctx *RestoreCtx) error { ...@@ -1547,6 +1548,8 @@ func (n *AdminStmt) Restore(ctx *RestoreCtx) error {
if err := n.ShowSlow.Restore(ctx); err != nil { if err := n.ShowSlow.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore AdminStmt.ShowSlow") return errors.Annotate(err, "An error occurred while restore AdminStmt.ShowSlow")
} }
case AdminReloadExprPushdownBlacklist:
ctx.WriteKeyWord("RELOAD EXPR_PUSHDOWN_BLACKLIST")
default: default:
return errors.New("Unsupported AdminStmt type") return errors.New("Unsupported AdminStmt type")
} }
...@@ -1975,7 +1978,10 @@ func (i Ident) String() string { ...@@ -1975,7 +1978,10 @@ func (i Ident) String() string {
// SelectStmtOpts wrap around select hints and switches // SelectStmtOpts wrap around select hints and switches
type SelectStmtOpts struct { type SelectStmtOpts struct {
Distinct bool Distinct bool
SQLBigResult bool
SQLBufferResult bool
SQLCache bool SQLCache bool
SQLSmallResult bool
CalcFoundRows bool CalcFoundRows bool
StraightJoin bool StraightJoin bool
Priority mysql.PriorityEnum Priority mysql.PriorityEnum
......
...@@ -58,6 +58,7 @@ type Scanner struct { ...@@ -58,6 +58,7 @@ type Scanner struct {
} }
type specialCommentScanner interface { type specialCommentScanner interface {
stmtTexter
scan() (tok int, pos Pos, lit string) scan() (tok int, pos Pos, lit string)
} }
...@@ -85,11 +86,18 @@ func (s *optimizerHintScanner) scan() (tok int, pos Pos, lit string) { ...@@ -85,11 +86,18 @@ func (s *optimizerHintScanner) scan() (tok int, pos Pos, lit string) {
pos.Line += s.Pos.Line pos.Line += s.Pos.Line
pos.Col += s.Pos.Col pos.Col += s.Pos.Col
pos.Offset += s.Pos.Offset pos.Offset += s.Pos.Offset
if tok == 0 { switch tok {
case 0:
if !s.end { if !s.end {
tok = hintEnd tok = hintEnd
s.end = true s.end = true
} }
case invalid:
// an optimizer hint is allowed to contain invalid characters, the
// remaining hints are just ignored.
// force advance the lexer even when encountering an invalid character
// to prevent infinite parser loop. (see issue #336)
s.r.inc()
} }
return return
} }
...@@ -110,6 +118,10 @@ func (s *Scanner) reset(sql string) { ...@@ -110,6 +118,10 @@ func (s *Scanner) reset(sql string) {
} }
func (s *Scanner) stmtText() string { func (s *Scanner) stmtText() string {
if s.specialComment != nil {
return s.specialComment.stmtText()
}
endPos := s.r.pos().Offset endPos := s.r.pos().Offset
if s.r.s[endPos-1] == '\n' { if s.r.s[endPos-1] == '\n' {
endPos = endPos - 1 // trim new line endPos = endPos - 1 // trim new line
...@@ -220,6 +232,15 @@ func (s *Scanner) EnableWindowFunc(val bool) { ...@@ -220,6 +232,15 @@ func (s *Scanner) EnableWindowFunc(val bool) {
s.supportWindowFunc = val s.supportWindowFunc = val
} }
// InheritScanner returns a new scanner object which inherits configurations from the parent scanner.
func (s *Scanner) InheritScanner(sql string) *Scanner {
return &Scanner{
r: reader{s: sql},
sqlMode: s.sqlMode,
supportWindowFunc: s.supportWindowFunc,
}
}
// NewScanner returns a new scanner object. // NewScanner returns a new scanner object.
func NewScanner(s string) *Scanner { func NewScanner(s string) *Scanner {
return &Scanner{r: reader{s: s}} return &Scanner{r: reader{s: s}}
...@@ -396,7 +417,7 @@ func startWithSlash(s *Scanner) (tok int, pos Pos, lit string) { ...@@ -396,7 +417,7 @@ func startWithSlash(s *Scanner) (tok int, pos Pos, lit string) {
end := len(comment) - 2 end := len(comment) - 2
sql := comment[begin:end] sql := comment[begin:end]
s.specialComment = &optimizerHintScanner{ s.specialComment = &optimizerHintScanner{
Scanner: NewScanner(sql), Scanner: s.InheritScanner(sql),
Pos: Pos{ Pos: Pos{
pos.Line, pos.Line,
pos.Col, pos.Col,
...@@ -413,7 +434,7 @@ func startWithSlash(s *Scanner) (tok int, pos Pos, lit string) { ...@@ -413,7 +434,7 @@ func startWithSlash(s *Scanner) (tok int, pos Pos, lit string) {
if strings.HasPrefix(comment, "/*!") { if strings.HasPrefix(comment, "/*!") {
sql := specCodePattern.ReplaceAllStringFunc(comment, TrimComment) sql := specCodePattern.ReplaceAllStringFunc(comment, TrimComment)
s.specialComment = &mysqlSpecificCodeScanner{ s.specialComment = &mysqlSpecificCodeScanner{
Scanner: NewScanner(sql), Scanner: s.InheritScanner(sql),
Pos: Pos{ Pos: Pos{
pos.Line, pos.Line,
pos.Col, pos.Col,
......
...@@ -234,6 +234,7 @@ var tokenMap = map[string]int{ ...@@ -234,6 +234,7 @@ var tokenMap = map[string]int{
"DELETE": deleteKwd, "DELETE": deleteKwd,
"DESC": desc, "DESC": desc,
"DESCRIBE": describe, "DESCRIBE": describe,
"DIRECTORY": directory,
"DISABLE": disable, "DISABLE": disable,
"DISTINCT": distinct, "DISTINCT": distinct,
"DISTINCTROW": distinct, "DISTINCTROW": distinct,
...@@ -289,6 +290,7 @@ var tokenMap = map[string]int{ ...@@ -289,6 +290,7 @@ var tokenMap = map[string]int{
"HASH": hash, "HASH": hash,
"HAVING": having, "HAVING": having,
"HIGH_PRIORITY": highPriority, "HIGH_PRIORITY": highPriority,
"HISTORY": history,
"HOUR": hour, "HOUR": hour,
"HOUR_MICROSECOND": hourMicrosecond, "HOUR_MICROSECOND": hourMicrosecond,
"HOUR_MINUTE": hourMinute, "HOUR_MINUTE": hourMinute,
...@@ -338,6 +340,7 @@ var tokenMap = map[string]int{ ...@@ -338,6 +340,7 @@ var tokenMap = map[string]int{
"LIMIT": limit, "LIMIT": limit,
"LINES": lines, "LINES": lines,
"LINEAR": linear, "LINEAR": linear,
"LIST": list,
"LOAD": load, "LOAD": load,
"LOCAL": local, "LOCAL": local,
"LOCALTIME": localTime, "LOCALTIME": localTime,
...@@ -380,6 +383,7 @@ var tokenMap = map[string]int{ ...@@ -380,6 +383,7 @@ var tokenMap = map[string]int{
"NO_WRITE_TO_BINLOG": noWriteToBinLog, "NO_WRITE_TO_BINLOG": noWriteToBinLog,
"NODE_ID": nodeID, "NODE_ID": nodeID,
"NODE_STATE": nodeState, "NODE_STATE": nodeState,
"NODEGROUP": nodegroup,
"NONE": none, "NONE": none,
"NOT": not, "NOT": not,
"NOW": now, "NOW": now,
...@@ -429,6 +433,7 @@ var tokenMap = map[string]int{ ...@@ -429,6 +433,7 @@ var tokenMap = map[string]int{
"REDUNDANT": redundant, "REDUNDANT": redundant,
"REFERENCES": references, "REFERENCES": references,
"REGEXP": regexpKwd, "REGEXP": regexpKwd,
"REGIONS": regions,
"RELOAD": reload, "RELOAD": reload,
"RENAME": rename, "RENAME": rename,
"REPEAT": repeat, "REPEAT": repeat,
...@@ -469,9 +474,12 @@ var tokenMap = map[string]int{ ...@@ -469,9 +474,12 @@ var tokenMap = map[string]int{
"SOME": some, "SOME": some,
"SPLIT": split, "SPLIT": split,
"SQL": sql, "SQL": sql,
"SQL_BIG_RESULT": sqlBigResult,
"SQL_BUFFER_RESULT": sqlBufferResult,
"SQL_CACHE": sqlCache, "SQL_CACHE": sqlCache,
"SQL_CALC_FOUND_ROWS": sqlCalcFoundRows, "SQL_CALC_FOUND_ROWS": sqlCalcFoundRows,
"SQL_NO_CACHE": sqlNoCache, "SQL_NO_CACHE": sqlNoCache,
"SQL_SMALL_RESULT": sqlSmallResult,
"SOURCE": source, "SOURCE": source,
"SSL": ssl, "SSL": ssl,
"START": start, "START": start,
...@@ -485,6 +493,7 @@ var tokenMap = map[string]int{ ...@@ -485,6 +493,7 @@ var tokenMap = map[string]int{
"STATUS": status, "STATUS": status,
"SWAPS": swaps, "SWAPS": swaps,
"SWITCHES": switchesSym, "SWITCHES": switchesSym,
"SYSTEM_TIME": systemTime,
"OPEN": open, "OPEN": open,
"STD": stddevPop, "STD": stddevPop,
"STDDEV": stddevPop, "STDDEV": stddevPop,
...@@ -579,6 +588,7 @@ var tokenMap = map[string]int{ ...@@ -579,6 +588,7 @@ var tokenMap = map[string]int{
"ZEROFILL": zerofill, "ZEROFILL": zerofill,
"BINDING": binding, "BINDING": binding,
"BINDINGS": bindings, "BINDINGS": bindings,
"EXPR_PUSHDOWN_BLACKLIST": exprPushdownBlacklist,
} }
// See https://dev.mysql.com/doc/refman/5.7/en/function-resolution.html for details // See https://dev.mysql.com/doc/refman/5.7/en/function-resolution.html for details
......
...@@ -56,6 +56,8 @@ const ( ...@@ -56,6 +56,8 @@ const (
ActionDropView ActionType = 24 ActionDropView ActionType = 24
ActionRecoverTable ActionType = 25 ActionRecoverTable ActionType = 25
ActionModifySchemaCharsetAndCollate ActionType = 26 ActionModifySchemaCharsetAndCollate ActionType = 26
ActionLockTable ActionType = 27
ActionUnlockTable ActionType = 28
) )
// AddIndexStr is a string related to the operation of "add index". // AddIndexStr is a string related to the operation of "add index".
...@@ -88,6 +90,8 @@ var actionMap = map[ActionType]string{ ...@@ -88,6 +90,8 @@ var actionMap = map[ActionType]string{
ActionDropView: "drop view", ActionDropView: "drop view",
ActionRecoverTable: "recover table", ActionRecoverTable: "recover table",
ActionModifySchemaCharsetAndCollate: "modify schema charset and collate", ActionModifySchemaCharsetAndCollate: "modify schema charset and collate",
ActionLockTable: "lock table",
ActionUnlockTable: "unlock table",
} }
// String return current ddl action in string // String return current ddl action in string
......
...@@ -40,4 +40,6 @@ const ( ...@@ -40,4 +40,6 @@ const (
FlagIgnoreZeroInDate = 1 << 7 FlagIgnoreZeroInDate = 1 << 7
// FlagDividedByZeroAsWarning indicates if DividedByZero should be returned as warning. // FlagDividedByZeroAsWarning indicates if DividedByZero should be returned as warning.
FlagDividedByZeroAsWarning = 1 << 8 FlagDividedByZeroAsWarning = 1 << 8
// FlagInUnionStmt indicates if this is a UNION statement.
FlagInUnionStmt = 1 << 9
) )
...@@ -15,6 +15,7 @@ package model ...@@ -15,6 +15,7 @@ package model
import ( import (
"encoding/json" "encoding/json"
"strconv"
"strings" "strings"
"time" "time"
...@@ -230,11 +231,98 @@ type TableInfo struct { ...@@ -230,11 +231,98 @@ type TableInfo struct {
Compression string `json:"compression"` Compression string `json:"compression"`
View *ViewInfo `json:"view"` View *ViewInfo `json:"view"`
// Lock represent the table lock info.
Lock *TableLockInfo `json:"Lock"`
// Version means the version of the table info. // Version means the version of the table info.
Version uint16 `json:"version"` Version uint16 `json:"version"`
} }
// TableLockInfo provides meta data describing a table lock.
type TableLockInfo struct {
Tp TableLockType
// Use array because there may be multiple sessions holding the same read lock.
Sessions []SessionInfo
State TableLockState
// TS is used to record the timestamp this table lock been locked.
TS uint64
}
// SessionInfo contain the session ID and the server ID.
type SessionInfo struct {
ServerID string
SessionID uint64
}
func (s SessionInfo) String() string {
return "server: " + s.ServerID + "_session: " + strconv.FormatUint(s.SessionID, 10)
}
// TableLockTpInfo is composed by schema ID, table ID and table lock type.
type TableLockTpInfo struct {
SchemaID int64
TableID int64
Tp TableLockType
}
// TableLockState is the state for table lock.
type TableLockState byte
const (
// TableLockStateNone means this table lock is absent.
TableLockStateNone TableLockState = iota
// TableLockStatePreLock means this table lock is pre-lock state. Other session doesn't hold this lock should't do corresponding operation according to the lock type.
TableLockStatePreLock
// TableLockStatePublic means this table lock is public state.
TableLockStatePublic
)
// String implements fmt.Stringer interface.
func (t TableLockState) String() string {
switch t {
case TableLockStatePreLock:
return "pre-lock"
case TableLockStatePublic:
return "public"
default:
return "none"
}
}
// TableLockType is the type of the table lock.
type TableLockType byte
const (
TableLockNone TableLockType = iota
// TableLockRead means the session with this lock can read the table (but not write it).
// Multiple sessions can acquire a READ lock for the table at the same time.
// Other sessions can read the table without explicitly acquiring a READ lock.
TableLockRead
// TableLockReadLocal is not supported.
TableLockReadLocal
// TableLockWrite means only the session with this lock has write/read permission.
// Only the session that holds the lock can access the table. No other session can access it until the lock is released.
TableLockWrite
// TableLockWriteLocal means the session with this lock has write/read permission, and the other session still has read permission.
TableLockWriteLocal
)
func (t TableLockType) String() string {
switch t {
case TableLockNone:
return "NONE"
case TableLockRead:
return "READ"
case TableLockReadLocal:
return "READ LOCAL"
case TableLockWriteLocal:
return "WRITE LOCAL"
case TableLockWrite:
return "WRITE"
}
return ""
}
// GetPartitionInfo returns the partition information. // GetPartitionInfo returns the partition information.
func (t *TableInfo) GetPartitionInfo() *PartitionInfo { func (t *TableInfo) GetPartitionInfo() *PartitionInfo {
if t.Partition != nil && t.Partition.Enable { if t.Partition != nil && t.Partition.Enable {
...@@ -345,6 +433,11 @@ func (t *TableInfo) FindIndexByName(idxName string) *IndexInfo { ...@@ -345,6 +433,11 @@ func (t *TableInfo) FindIndexByName(idxName string) *IndexInfo {
return nil return nil
} }
// IsLocked checks whether the table was locked.
func (t *TableInfo) IsLocked() bool {
return t.Lock != nil && len(t.Lock.Sessions) > 0
}
// NewExtraHandleColInfo mocks a column info for extra handle column. // NewExtraHandleColInfo mocks a column info for extra handle column.
func NewExtraHandleColInfo() *ColumnInfo { func NewExtraHandleColInfo() *ColumnInfo {
colInfo := &ColumnInfo{ colInfo := &ColumnInfo{
...@@ -453,8 +546,10 @@ type PartitionType int ...@@ -453,8 +546,10 @@ type PartitionType int
// Partition types. // Partition types.
const ( const (
PartitionTypeRange PartitionType = 1 PartitionTypeRange PartitionType = 1
PartitionTypeHash PartitionType = 2 PartitionTypeHash = 2
PartitionTypeList PartitionType = 3 PartitionTypeList = 3
PartitionTypeKey = 4
PartitionTypeSystemTime = 5
) )
func (p PartitionType) String() string { func (p PartitionType) String() string {
...@@ -465,6 +560,10 @@ func (p PartitionType) String() string { ...@@ -465,6 +560,10 @@ func (p PartitionType) String() string {
return "HASH" return "HASH"
case PartitionTypeList: case PartitionTypeList:
return "LIST" return "LIST"
case PartitionTypeKey:
return "KEY"
case PartitionTypeSystemTime:
return "SYSTEM_TIME"
default: default:
return "" return ""
} }
......
...@@ -882,6 +882,7 @@ const ( ...@@ -882,6 +882,7 @@ const (
ErrMustChangePasswordLogin = 1862 ErrMustChangePasswordLogin = 1862
ErrRowInWrongPartition = 1863 ErrRowInWrongPartition = 1863
ErrErrorLast = 1863 ErrErrorLast = 1863
ErrMaxExecTimeExceeded = 1907
ErrInvalidJSONData = 3069 ErrInvalidJSONData = 3069
ErrGeneratedColumnFunctionIsNotAllowed = 3102 ErrGeneratedColumnFunctionIsNotAllowed = 3102
ErrBadGeneratedColumn = 3105 ErrBadGeneratedColumn = 3105
...@@ -895,6 +896,7 @@ const ( ...@@ -895,6 +896,7 @@ const (
ErrInvalidJSONPathWildcard = 3149 ErrInvalidJSONPathWildcard = 3149
ErrInvalidJSONContainsPathType = 3150 ErrInvalidJSONContainsPathType = 3150
ErrJSONUsedAsKey = 3152 ErrJSONUsedAsKey = 3152
ErrInvalidJSONPathArrayCell = 3165
ErrBadUser = 3162 ErrBadUser = 3162
ErrRoleNotGranted = 3530 ErrRoleNotGranted = 3530
ErrWindowNoSuchWindow = 3579 ErrWindowNoSuchWindow = 3579
...@@ -919,6 +921,11 @@ const ( ...@@ -919,6 +921,11 @@ const (
ErrWindowExplainJson = 3598 ErrWindowExplainJson = 3598
ErrWindowFunctionIgnoresFrame = 3599 ErrWindowFunctionIgnoresFrame = 3599
// MariaDB errors.
ErrOnlyOneDefaultPartionAllowed = 4030
ErrWrongPartitionTypeExpectedSystemTime = 4113
ErrSystemVersioningWrongPartitions = 4128
// TiDB self-defined errors. // TiDB self-defined errors.
ErrMemExceedThreshold = 8001 ErrMemExceedThreshold = 8001
ErrForUpdateCantRetry = 8002 ErrForUpdateCantRetry = 8002
...@@ -934,6 +941,7 @@ const ( ...@@ -934,6 +941,7 @@ const (
ErrRequireVersionCheckFail = 8107 ErrRequireVersionCheckFail = 8107
ErrUnsupportedReloadPlugin = 8018 ErrUnsupportedReloadPlugin = 8018
ErrUnsupportedReloadPluginVar = 8019 ErrUnsupportedReloadPluginVar = 8019
ErrTableLocked = 8020
// TiKV/PD errors. // TiKV/PD errors.
ErrPDServerTimeout = 9001 ErrPDServerTimeout = 9001
......
...@@ -892,6 +892,7 @@ var MySQLErrName = map[uint16]string{ ...@@ -892,6 +892,7 @@ var MySQLErrName = map[uint16]string{
ErrInvalidJSONPathWildcard: "In this situation, path expressions may not contain the * and ** tokens.", ErrInvalidJSONPathWildcard: "In this situation, path expressions may not contain the * and ** tokens.",
ErrInvalidJSONContainsPathType: "The second argument can only be either 'one' or 'all'.", ErrInvalidJSONContainsPathType: "The second argument can only be either 'one' or 'all'.",
ErrJSONUsedAsKey: "JSON column '%-.192s' cannot be used in key specification.", ErrJSONUsedAsKey: "JSON column '%-.192s' cannot be used in key specification.",
ErrInvalidJSONPathArrayCell: "A path expression is not a path to a cell in an array.",
ErrWindowNoSuchWindow: "Window name '%s' is not defined.", ErrWindowNoSuchWindow: "Window name '%s' is not defined.",
ErrWindowCircularityInWindowGraph: "There is a circularity in the window dependency graph.", ErrWindowCircularityInWindowGraph: "There is a circularity in the window dependency graph.",
ErrWindowNoChildPartitioning: "A window which depends on another cannot define partitioning.", ErrWindowNoChildPartitioning: "A window which depends on another cannot define partitioning.",
...@@ -914,6 +915,12 @@ var MySQLErrName = map[uint16]string{ ...@@ -914,6 +915,12 @@ var MySQLErrName = map[uint16]string{
ErrWindowExplainJson: "To get information about window functions use EXPLAIN FORMAT=JSON", ErrWindowExplainJson: "To get information about window functions use EXPLAIN FORMAT=JSON",
ErrWindowFunctionIgnoresFrame: "Window function '%s' ignores the frame clause of window '%s' and aggregates over the whole partition", ErrWindowFunctionIgnoresFrame: "Window function '%s' ignores the frame clause of window '%s' and aggregates over the whole partition",
ErrRoleNotGranted: "%s is is not granted to %s", ErrRoleNotGranted: "%s is is not granted to %s",
ErrMaxExecTimeExceeded: "Query execution was interrupted, max_execution_time exceeded.",
// MariaDB errors.
ErrOnlyOneDefaultPartionAllowed: "Only one DEFAULT partition allowed",
ErrWrongPartitionTypeExpectedSystemTime: "Wrong partitioning type, expected type: `SYSTEM_TIME`",
ErrSystemVersioningWrongPartitions: "Wrong Partitions: must have at least one HISTORY and exactly one last CURRENT",
// TiDB errors. // TiDB errors.
ErrMemExceedThreshold: "%s holds %dB memory, exceeds threshold %dB.%s", ErrMemExceedThreshold: "%s holds %dB memory, exceeds threshold %dB.%s",
...@@ -930,6 +937,7 @@ var MySQLErrName = map[uint16]string{ ...@@ -930,6 +937,7 @@ var MySQLErrName = map[uint16]string{
ErrRequireVersionCheckFail: "Plugin %s require %s be %v but got %v", ErrRequireVersionCheckFail: "Plugin %s require %s be %v but got %v",
ErrUnsupportedReloadPlugin: "Plugin %s isn't loaded so cannot be reloaded", ErrUnsupportedReloadPlugin: "Plugin %s isn't loaded so cannot be reloaded",
ErrUnsupportedReloadPluginVar: "Reload plugin with different sysVar is unsupported %v", ErrUnsupportedReloadPluginVar: "Reload plugin with different sysVar is unsupported %v",
ErrTableLocked: "Table '%s' was locked in %s by %v",
// TiKV/PD errors. // TiKV/PD errors.
ErrPDServerTimeout: "PD server timeout", ErrPDServerTimeout: "PD server timeout",
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -227,7 +227,9 @@ import ( ...@@ -227,7 +227,9 @@ import (
show "SHOW" show "SHOW"
smallIntType "SMALLINT" smallIntType "SMALLINT"
sql "SQL" sql "SQL"
sqlBigResult "SQL_BIG_RESULT"
sqlCalcFoundRows "SQL_CALC_FOUND_ROWS" sqlCalcFoundRows "SQL_CALC_FOUND_ROWS"
sqlSmallResult "SQL_SMALL_RESULT"
ssl "SSL" ssl "SSL"
starting "STARTING" starting "STARTING"
straightJoin "STRAIGHT_JOIN" straightJoin "STRAIGHT_JOIN"
...@@ -314,6 +316,7 @@ import ( ...@@ -314,6 +316,7 @@ import (
deallocate "DEALLOCATE" deallocate "DEALLOCATE"
definer "DEFINER" definer "DEFINER"
delayKeyWrite "DELAY_KEY_WRITE" delayKeyWrite "DELAY_KEY_WRITE"
directory "DIRECTORY"
disable "DISABLE" disable "DISABLE"
do "DO" do "DO"
duplicate "DUPLICATE" duplicate "DUPLICATE"
...@@ -340,6 +343,7 @@ import ( ...@@ -340,6 +343,7 @@ import (
function "FUNCTION" function "FUNCTION"
grants "GRANTS" grants "GRANTS"
hash "HASH" hash "HASH"
history "HISTORY"
hour "HOUR" hour "HOUR"
identified "IDENTIFIED" identified "IDENTIFIED"
isolation "ISOLATION" isolation "ISOLATION"
...@@ -355,6 +359,7 @@ import ( ...@@ -355,6 +359,7 @@ import (
last "LAST" last "LAST"
less "LESS" less "LESS"
level "LEVEL" level "LEVEL"
list "LIST"
master "MASTER" master "MASTER"
microsecond "MICROSECOND" microsecond "MICROSECOND"
minute "MINUTE" minute "MINUTE"
...@@ -373,6 +378,7 @@ import ( ...@@ -373,6 +378,7 @@ import (
national "NATIONAL" national "NATIONAL"
never "NEVER" never "NEVER"
no "NO" no "NO"
nodegroup "NODEGROUP"
none "NONE" none "NONE"
nulls "NULLS" nulls "NULLS"
offset "OFFSET" offset "OFFSET"
...@@ -416,6 +422,7 @@ import ( ...@@ -416,6 +422,7 @@ import (
slave "SLAVE" slave "SLAVE"
slow "SLOW" slow "SLOW"
snapshot "SNAPSHOT" snapshot "SNAPSHOT"
sqlBufferResult "SQL_BUFFER_RESULT"
sqlCache "SQL_CACHE" sqlCache "SQL_CACHE"
sqlNoCache "SQL_NO_CACHE" sqlNoCache "SQL_NO_CACHE"
start "START" start "START"
...@@ -423,6 +430,7 @@ import ( ...@@ -423,6 +430,7 @@ import (
status "STATUS" status "STATUS"
swaps "SWAPS" swaps "SWAPS"
switchesSym "SWITCHES" switchesSym "SWITCHES"
systemTime "SYSTEM_TIME"
open "OPEN" open "OPEN"
source "SOURCE" source "SOURCE"
subject "SUBJECT" subject "SUBJECT"
...@@ -506,6 +514,7 @@ import ( ...@@ -506,6 +514,7 @@ import (
variance "VARIANCE" variance "VARIANCE"
varPop "VAR_POP" varPop "VAR_POP"
varSamp "VAR_SAMP" varSamp "VAR_SAMP"
exprPushdownBlacklist "EXPR_PUSHDOWN_BLACKLIST"
/* The following tokens belong to TiDBKeyword. Notice: make sure these tokens are contained in TiDBKeyword. */ /* The following tokens belong to TiDBKeyword. Notice: make sure these tokens are contained in TiDBKeyword. */
admin "ADMIN" admin "ADMIN"
...@@ -530,6 +539,7 @@ import ( ...@@ -530,6 +539,7 @@ import (
tidbSMJ "TIDB_SMJ" tidbSMJ "TIDB_SMJ"
tidbINLJ "TIDB_INLJ" tidbINLJ "TIDB_INLJ"
split "SPLIT" split "SPLIT"
regions "REGIONS"
builtinAddDate builtinAddDate
builtinBitAnd builtinBitAnd
...@@ -654,7 +664,7 @@ import ( ...@@ -654,7 +664,7 @@ import (
RevokeStmt "Revoke statement" RevokeStmt "Revoke statement"
RevokeRoleStmt "Revoke role statement" RevokeRoleStmt "Revoke role statement"
RollbackStmt "ROLLBACK statement" RollbackStmt "ROLLBACK statement"
SplitIndexRegionStmt "Split index region statement" SplitRegionStmt "Split index region statement"
SetStmt "Set variable statement" SetStmt "Set variable statement"
ChangeStmt "Change statement" ChangeStmt "Change statement"
SetRoleStmt "Set active role statement" SetRoleStmt "Set active role statement"
...@@ -672,9 +682,9 @@ import ( ...@@ -672,9 +682,9 @@ import (
%type <item> %type <item>
AdminShowSlow "Admin Show Slow statement" AdminShowSlow "Admin Show Slow statement"
AlterAlgorithm "Alter table algorithm" AlterAlgorithm "Alter table algorithm"
AlterTableOptionListOpt "Alter table option list opt"
AlterTableSpec "Alter table specification" AlterTableSpec "Alter table specification"
AlterTableSpecList "Alter table specification list" AlterTableSpecList "Alter table specification list"
AlterTableSpecListOpt "Alter table specification list optional"
AnyOrAll "Any or All for subquery" AnyOrAll "Any or All for subquery"
Assignment "assignment" Assignment "assignment"
AssignmentList "assignment list" AssignmentList "assignment list"
...@@ -794,12 +804,13 @@ import ( ...@@ -794,12 +804,13 @@ import (
PartitionDefinition "Partition definition" PartitionDefinition "Partition definition"
PartitionDefinitionList "Partition definition list" PartitionDefinitionList "Partition definition list"
PartitionDefinitionListOpt "Partition definition list option" PartitionDefinitionListOpt "Partition definition list option"
PartitionKeyAlgorithmOpt "ALGORITHM = n option for KEY partition"
PartitionMethod "Partition method"
PartitionOpt "Partition option" PartitionOpt "Partition option"
PartitionNameList "Partition name list" PartitionNameList "Partition name list"
PartitionNameListOpt "table partition names list optional" PartitionNameListOpt "table partition names list optional"
PartitionNumOpt "PARTITION NUM option" PartitionNumOpt "PARTITION NUM option"
PartDefValuesOpt "VALUES {LESS THAN {(expr | value_list) | MAXVALUE} | IN {value_list}" PartDefValuesOpt "VALUES {LESS THAN {(expr | value_list) | MAXVALUE} | IN {value_list}"
PartDefOptionsOpt "PartDefOptionList option"
PartDefOptionList "PartDefOption list" PartDefOptionList "PartDefOption list"
PartDefOption "COMMENT [=] xxx | TABLESPACE [=] tablespace_name | ENGINE [=] xxx" PartDefOption "COMMENT [=] xxx | TABLESPACE [=] tablespace_name | ENGINE [=] xxx"
PasswordExpire "Single password option for create user statement" PasswordExpire "Single password option for create user statement"
...@@ -830,7 +841,10 @@ import ( ...@@ -830,7 +841,10 @@ import (
RowValue "Row value" RowValue "Row value"
SelectLockOpt "FOR UPDATE or LOCK IN SHARE MODE," SelectLockOpt "FOR UPDATE or LOCK IN SHARE MODE,"
SelectStmtCalcFoundRows "SELECT statement optional SQL_CALC_FOUND_ROWS" SelectStmtCalcFoundRows "SELECT statement optional SQL_CALC_FOUND_ROWS"
SelectStmtSQLBigResult "SELECT statement optional SQL_BIG_RESULT"
SelectStmtSQLBufferResult "SELECT statement optional SQL_BUFFER_RESULT"
SelectStmtSQLCache "SELECT statement optional SQL_CAHCE/SQL_NO_CACHE" SelectStmtSQLCache "SELECT statement optional SQL_CAHCE/SQL_NO_CACHE"
SelectStmtSQLSmallResult "SELECT statement optional SQL_SMALL_RESULT"
SelectStmtStraightJoin "SELECT statement optional STRAIGHT_JOIN" SelectStmtStraightJoin "SELECT statement optional STRAIGHT_JOIN"
SelectStmtFieldList "SELECT statement field list" SelectStmtFieldList "SELECT statement field list"
SelectStmtLimit "SELECT statement optional LIMIT clause" SelectStmtLimit "SELECT statement optional LIMIT clause"
...@@ -849,11 +863,16 @@ import ( ...@@ -849,11 +863,16 @@ import (
ShowProfileTypesOpt "Show profile types option" ShowProfileTypesOpt "Show profile types option"
ShowProfileType "Show profile type" ShowProfileType "Show profile type"
ShowProfileTypes "Show profile types" ShowProfileTypes "Show profile types"
SplitOption "Split Option"
Starting "Starting by" Starting "Starting by"
StatementList "statement list" StatementList "statement list"
StatsPersistentVal "stats_persistent value" StatsPersistentVal "stats_persistent value"
StringName "string literal or identifier" StringName "string literal or identifier"
StringList "string list" StringList "string list"
SubPartDefinition "SubPartition definition"
SubPartDefinitionList "SubPartition definition list"
SubPartDefinitionListOpt "SubPartition definition list optional"
SubPartitionMethod "SubPartition method"
SubPartitionOpt "SubPartition option" SubPartitionOpt "SubPartition option"
SubPartitionNumOpt "SubPartition NUM option" SubPartitionNumOpt "SubPartition NUM option"
Symbol "Constraint Symbol" Symbol "Constraint Symbol"
...@@ -874,6 +893,7 @@ import ( ...@@ -874,6 +893,7 @@ import (
TableRefs "table references" TableRefs "table references"
TableToTable "rename table to table" TableToTable "rename table to table"
TableToTableList "rename table to table by list" TableToTableList "rename table to table by list"
LockType "Table locks type"
TransactionChar "Transaction characteristic" TransactionChar "Transaction characteristic"
TransactionChars "Transaction characteristic list" TransactionChars "Transaction characteristic list"
...@@ -996,7 +1016,6 @@ import ( ...@@ -996,7 +1016,6 @@ import (
NationalOpt "National option" NationalOpt "National option"
CharsetKw "charset or charater set" CharsetKw "charset or charater set"
CommaOpt "optional comma" CommaOpt "optional comma"
LockType "Table locks type"
logAnd "logical and operator" logAnd "logical and operator"
logOr "logical or operator" logOr "logical or operator"
LinearOpt "linear or empty" LinearOpt "linear or empty"
...@@ -1017,6 +1036,9 @@ import ( ...@@ -1017,6 +1036,9 @@ import (
%precedence empty %precedence empty
%precedence sqlBufferResult
%precedence sqlBigResult
%precedence sqlSmallResult
%precedence sqlCache sqlNoCache %precedence sqlCache sqlNoCache
%precedence lowerThanIntervalKeyword %precedence lowerThanIntervalKeyword
%precedence interval %precedence interval
...@@ -1055,6 +1077,7 @@ import ( ...@@ -1055,6 +1077,7 @@ import (
%right not not2 %right not not2
%right collate %right collate
%left splitOptionPriv
%precedence '(' %precedence '('
%precedence quick %precedence quick
%precedence escape %precedence escape
...@@ -1073,11 +1096,18 @@ Start: ...@@ -1073,11 +1096,18 @@ Start:
* See https://dev.mysql.com/doc/refman/5.7/en/alter-table.html * See https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
*******************************************************************************************/ *******************************************************************************************/
AlterTableStmt: AlterTableStmt:
"ALTER" IgnoreOptional "TABLE" TableName AlterTableSpecList "ALTER" IgnoreOptional "TABLE" TableName AlterTableSpecListOpt PartitionOpt
{ {
specs := $5.([]*ast.AlterTableSpec)
if $6 != nil {
specs = append(specs, &ast.AlterTableSpec{
Tp: ast.AlterTablePartition,
Partition: $6.(*ast.PartitionOptions),
})
}
$$ = &ast.AlterTableStmt{ $$ = &ast.AlterTableStmt{
Table: $4.(*ast.TableName), Table: $4.(*ast.TableName),
Specs: $5.([]*ast.AlterTableSpec), Specs: specs,
} }
} }
| "ALTER" IgnoreOptional "TABLE" TableName "ANALYZE" "PARTITION" PartitionNameList MaxNumBuckets | "ALTER" IgnoreOptional "TABLE" TableName "ANALYZE" "PARTITION" PartitionNameList MaxNumBuckets
...@@ -1096,7 +1126,7 @@ AlterTableStmt: ...@@ -1096,7 +1126,7 @@ AlterTableStmt:
} }
AlterTableSpec: AlterTableSpec:
AlterTableOptionListOpt TableOptionList %prec higherThanComma
{ {
$$ = &ast.AlterTableSpec{ $$ = &ast.AlterTableSpec{
Tp: ast.AlterTableOption, Tp: ast.AlterTableOption,
...@@ -1173,18 +1203,18 @@ AlterTableSpec: ...@@ -1173,18 +1203,18 @@ AlterTableSpec:
{ {
$$ = &ast.AlterTableSpec{Tp: ast.AlterTableDropPrimaryKey} $$ = &ast.AlterTableSpec{Tp: ast.AlterTableDropPrimaryKey}
} }
| "DROP" "PARTITION" Identifier | "DROP" "PARTITION" PartitionNameList %prec lowerThanComma
{ {
$$ = &ast.AlterTableSpec{ $$ = &ast.AlterTableSpec{
Tp: ast.AlterTableDropPartition, Tp: ast.AlterTableDropPartition,
Name: $3, PartitionNames: $3.([]model.CIStr),
} }
} }
| "TRUNCATE" "PARTITION" Identifier | "TRUNCATE" "PARTITION" PartitionNameList %prec lowerThanComma
{ {
$$ = &ast.AlterTableSpec{ $$ = &ast.AlterTableSpec{
Tp: ast.AlterTableTruncatePartition, Tp: ast.AlterTableTruncatePartition,
Name: $3, PartitionNames: $3.([]model.CIStr),
} }
} }
| "DROP" KeyOrIndex Identifier | "DROP" KeyOrIndex Identifier
...@@ -1203,11 +1233,15 @@ AlterTableSpec: ...@@ -1203,11 +1233,15 @@ AlterTableSpec:
} }
| "DISABLE" "KEYS" | "DISABLE" "KEYS"
{ {
$$ = &ast.AlterTableSpec{} $$ = &ast.AlterTableSpec{
Tp: ast.AlterTableDisableKeys,
}
} }
| "ENABLE" "KEYS" | "ENABLE" "KEYS"
{ {
$$ = &ast.AlterTableSpec{} $$ = &ast.AlterTableSpec{
Tp: ast.AlterTableEnableKeys,
}
} }
| "MODIFY" ColumnKeywordOpt ColumnDef ColumnPosition | "MODIFY" ColumnKeywordOpt ColumnDef ColumnPosition
{ {
...@@ -1369,6 +1403,16 @@ ColumnPosition: ...@@ -1369,6 +1403,16 @@ ColumnPosition:
} }
} }
AlterTableSpecListOpt:
/* empty */
{
$$ = make([]*ast.AlterTableSpec, 0, 1)
}
| AlterTableSpecList
{
$$ = $1
}
AlterTableSpecList: AlterTableSpecList:
AlterTableSpec AlterTableSpec
{ {
...@@ -1480,13 +1524,37 @@ RecoverTableStmt: ...@@ -1480,13 +1524,37 @@ RecoverTableStmt:
* SPLIT TABLE table_name INDEX index_name BY (val1...),(val2...)... * SPLIT TABLE table_name INDEX index_name BY (val1...),(val2...)...
* *
*******************************************************************/ *******************************************************************/
SplitIndexRegionStmt: SplitRegionStmt:
"SPLIT" "TABLE" TableName "INDEX" IndexName "BY" ValuesList "SPLIT" "TABLE" TableName SplitOption
{ {
$$ = &ast.SplitIndexRegionStmt{ $$ = &ast.SplitRegionStmt{
Table: $3.(*ast.TableName), Table: $3.(*ast.TableName),
IndexName: $5.(string), SplitOpt: $4.(*ast.SplitOption),
ValueLists: $7.([][]ast.ExprNode), }
}
| "SPLIT" "TABLE" TableName "INDEX" Identifier SplitOption
{
$$ = &ast.SplitRegionStmt{
Table: $3.(*ast.TableName),
IndexName: model.NewCIStr($5),
SplitOpt: $6.(*ast.SplitOption),
}
}
SplitOption:
"BETWEEN" RowValue "AND" RowValue "REGIONS" NUM
{
$$ = &ast.SplitOption{
Lower: $2.([]ast.ExprNode),
Upper: $4.([]ast.ExprNode),
Num: $6.(int64),
}
}
| "BY" ValuesList
{
$$ = &ast.SplitOption{
ValueLists: $2.([][]ast.ExprNode),
} }
} }
...@@ -2178,50 +2246,100 @@ PartitionOpt: ...@@ -2178,50 +2246,100 @@ PartitionOpt:
{ {
$$ = nil $$ = nil
} }
| "PARTITION" "BY" "KEY" '(' ColumnNameList ')' PartitionNumOpt PartitionDefinitionListOpt | "PARTITION" "BY" PartitionMethod PartitionNumOpt SubPartitionOpt PartitionDefinitionListOpt
{ {
$$ = nil method := $3.(*ast.PartitionMethod)
method.Num = $4.(uint64)
sub, _ := $5.(*ast.PartitionMethod)
defs, _ := $6.([]*ast.PartitionDefinition)
opt := &ast.PartitionOptions{
PartitionMethod: *method,
Sub: sub,
Definitions: defs,
}
if err := opt.Validate(); err != nil {
yylex.AppendError(err)
return 1
}
$$ = opt
} }
| "PARTITION" "BY" LinearOpt "HASH" '(' Expression ')' PartitionNumOpt
SubPartitionMethod:
LinearOpt "KEY" PartitionKeyAlgorithmOpt '(' ColumnNameListOpt ')'
{ {
tmp := &ast.PartitionOptions{ $$ = &ast.PartitionMethod{
Tp: model.PartitionTypeHash, Tp: model.PartitionTypeKey,
Expr: $6.(ast.ExprNode), Linear: len($1) != 0,
// If you do not include a PARTITIONS clause, the number of partitions defaults to 1 ColumnNames: $5.([]*ast.ColumnName),
Num: 1,
} }
if $8 != nil {
tmp.Num = getUint64FromNUM($8)
} }
if $3 != "" { | LinearOpt "HASH" '(' Expression ')'
yylex.Errorf("linear is not supported, ignore partition") {
parser.lastErrorAsWarn() $$ = &ast.PartitionMethod{
tmp = nil Tp: model.PartitionTypeHash,
Linear: len($1) != 0,
Expr: $4.(ast.ExprNode),
} }
$$ = tmp
} }
| "PARTITION" "BY" "RANGE" '(' Expression ')' PartitionNumOpt SubPartitionOpt PartitionDefinitionListOpt
PartitionKeyAlgorithmOpt:
/* empty */
{}
| "ALGORITHM" '=' NUM
{}
PartitionMethod:
SubPartitionMethod
{ {
var defs []*ast.PartitionDefinition $$ = $1
if $9 != nil {
defs = $9.([]*ast.PartitionDefinition)
} }
$$ = &ast.PartitionOptions{ | "RANGE" '(' Expression ')'
{
$$ = &ast.PartitionMethod{
Tp: model.PartitionTypeRange, Tp: model.PartitionTypeRange,
Expr: $5.(ast.ExprNode), Expr: $3.(ast.ExprNode),
Definitions: defs,
} }
} }
| "PARTITION" "BY" "RANGE" "COLUMNS" '(' ColumnNameList ')' PartitionNumOpt SubPartitionOpt PartitionDefinitionListOpt | "RANGE" "COLUMNS" '(' ColumnNameList ')'
{ {
var defs []*ast.PartitionDefinition $$ = &ast.PartitionMethod{
if $10 != nil {
defs = $10.([]*ast.PartitionDefinition)
}
$$ = &ast.PartitionOptions{
Tp: model.PartitionTypeRange, Tp: model.PartitionTypeRange,
ColumnNames: $6.([]*ast.ColumnName), ColumnNames: $4.([]*ast.ColumnName),
Definitions: defs, }
}
| "LIST" '(' Expression ')'
{
$$ = &ast.PartitionMethod{
Tp: model.PartitionTypeList,
Expr: $3.(ast.ExprNode),
}
}
| "LIST" "COLUMNS" '(' ColumnNameList ')'
{
$$ = &ast.PartitionMethod{
Tp: model.PartitionTypeList,
ColumnNames: $4.([]*ast.ColumnName),
}
}
| "SYSTEM_TIME" "INTERVAL" Expression TimeUnit
{
$$ = &ast.PartitionMethod{
Tp: model.PartitionTypeSystemTime,
Expr: $3.(ast.ExprNode),
Unit: ast.NewValueExpr($4),
}
}
| "SYSTEM_TIME" "LIMIT" LengthNum
{
$$ = &ast.PartitionMethod{
Tp: model.PartitionTypeSystemTime,
Limit: $3.(uint64),
}
}
| "SYSTEM_TIME"
{
$$ = &ast.PartitionMethod{
Tp: model.PartitionTypeSystemTime,
} }
} }
...@@ -2235,24 +2353,42 @@ LinearOpt: ...@@ -2235,24 +2353,42 @@ LinearOpt:
} }
SubPartitionOpt: SubPartitionOpt:
{} {
| "SUBPARTITION" "BY" "HASH" '(' Expression ')' SubPartitionNumOpt $$ = nil
{} }
| "SUBPARTITION" "BY" "KEY" '(' ColumnNameList ')' SubPartitionNumOpt | "SUBPARTITION" "BY" SubPartitionMethod SubPartitionNumOpt
{} {
method := $3.(*ast.PartitionMethod)
method.Num = $4.(uint64)
$$ = method
}
SubPartitionNumOpt: SubPartitionNumOpt:
{} {
| "SUBPARTITIONS" NUM $$ = uint64(0)
{} }
| "SUBPARTITIONS" LengthNum
{
res := $2.(uint64)
if res == 0 {
yylex.AppendError(ast.ErrNoParts.GenWithStackByArgs("subpartitions"))
return 1
}
$$ = res
}
PartitionNumOpt: PartitionNumOpt:
{ {
$$ = nil $$ = uint64(0)
} }
| "PARTITIONS" NUM | "PARTITIONS" LengthNum
{ {
$$ = $2 res := $2.(uint64)
if res == 0 {
yylex.AppendError(ast.ErrNoParts.GenWithStackByArgs("partitions"))
return 1
}
$$ = res
} }
PartitionDefinitionListOpt: PartitionDefinitionListOpt:
...@@ -2276,74 +2412,131 @@ PartitionDefinitionList: ...@@ -2276,74 +2412,131 @@ PartitionDefinitionList:
} }
PartitionDefinition: PartitionDefinition:
"PARTITION" Identifier PartDefValuesOpt PartDefOptionsOpt "PARTITION" Identifier PartDefValuesOpt PartDefOptionList SubPartDefinitionListOpt
{ {
partDef := &ast.PartitionDefinition{ $$ = &ast.PartitionDefinition{
Name: model.NewCIStr($2), Name: model.NewCIStr($2),
Clause: $3.(ast.PartitionDefinitionClause),
Options: $4.([]*ast.TableOption),
Sub: $5.([]*ast.SubPartitionDefinition),
} }
switch $3.(type) {
case []ast.ExprNode:
partDef.LessThan = $3.([]ast.ExprNode)
case ast.ExprNode:
partDef.LessThan = make([]ast.ExprNode, 1)
partDef.LessThan[0] = $3.(ast.ExprNode)
} }
if comment, ok := $4.(string); ok { SubPartDefinitionListOpt:
partDef.Comment = comment /*empty*/
{
$$ = make([]*ast.SubPartitionDefinition, 0)
} }
$$ = partDef | '(' SubPartDefinitionList ')'
{
$$ = $2
} }
PartDefOptionsOpt: SubPartDefinitionList:
SubPartDefinition
{ {
$$ = nil $$ = []*ast.SubPartitionDefinition{$1.(*ast.SubPartitionDefinition)}
} }
| PartDefOptionList | SubPartDefinitionList ',' SubPartDefinition
{ {
$$ = $1 list := $1.([]*ast.SubPartitionDefinition)
$$ = append(list, $3.(*ast.SubPartitionDefinition))
}
SubPartDefinition:
"SUBPARTITION" Identifier PartDefOptionList
{
$$ = &ast.SubPartitionDefinition{
Name: model.NewCIStr($2),
Options: $3.([]*ast.TableOption),
}
} }
PartDefOptionList: PartDefOptionList:
PartDefOption /*empty*/
{ {
$$ = $1 $$ = make([]*ast.TableOption, 0)
} }
| PartDefOptionList PartDefOption | PartDefOptionList PartDefOption
{ {
if $1 != nil { list := $1.([]*ast.TableOption)
$$ = $1 $$ = append(list, $2.(*ast.TableOption))
} else {
$$ = $2
}
} }
PartDefOption: PartDefOption:
"COMMENT" EqOpt stringLit "COMMENT" EqOpt stringLit
{ {
$$ = $3 $$ = &ast.TableOption{Tp: ast.TableOptionComment, StrValue: $3}
} }
| "ENGINE" EqOpt Identifier | "ENGINE" EqOpt StringName
{ {
$$ = nil $$ = &ast.TableOption{Tp: ast.TableOptionEngine, StrValue: $3.(string)}
}
| "DATA" "DIRECTORY" EqOpt stringLit
{
$$ = &ast.TableOption{Tp: ast.TableOptionDataDirectory, StrValue: $4}
}
| "INDEX" "DIRECTORY" EqOpt stringLit
{
$$ = &ast.TableOption{Tp: ast.TableOptionIndexDirectory, StrValue: $4}
}
| "MAX_ROWS" EqOpt LengthNum
{
$$ = &ast.TableOption{Tp: ast.TableOptionMaxRows, UintValue: $3.(uint64)}
}
| "MIN_ROWS" EqOpt LengthNum
{
$$ = &ast.TableOption{Tp: ast.TableOptionMinRows, UintValue: $3.(uint64)}
} }
| "TABLESPACE" EqOpt Identifier | "TABLESPACE" EqOpt Identifier
{ {
$$ = nil $$ = &ast.TableOption{Tp: ast.TableOptionTablespace, StrValue: $3}
}
| "NODEGROUP" EqOpt LengthNum
{
$$ = &ast.TableOption{Tp: ast.TableOptionNodegroup, UintValue: $3.(uint64)}
} }
PartDefValuesOpt: PartDefValuesOpt:
{ {
$$ = nil $$ = &ast.PartitionDefinitionClauseNone{}
} }
| "VALUES" "LESS" "THAN" "MAXVALUE" | "VALUES" "LESS" "THAN" "MAXVALUE"
{ {
$$ = &ast.MaxValueExpr{} $$ = &ast.PartitionDefinitionClauseLessThan{
Exprs: []ast.ExprNode{&ast.MaxValueExpr{}},
}
} }
| "VALUES" "LESS" "THAN" '(' MaxValueOrExpressionList ')' | "VALUES" "LESS" "THAN" '(' MaxValueOrExpressionList ')'
{ {
$$ = $5 $$ = &ast.PartitionDefinitionClauseLessThan{
Exprs: $5.([]ast.ExprNode),
}
}
| "DEFAULT"
{
$$ = &ast.PartitionDefinitionClauseIn{}
}
| "VALUES" "IN" '(' ExpressionList ')'
{
exprs := $4.([]ast.ExprNode)
values := make([][]ast.ExprNode, 0, len(exprs))
for _, expr := range exprs {
if row, ok := expr.(*ast.RowExpr); ok {
values = append(values, row.Values)
} else {
values = append(values, []ast.ExprNode{expr})
}
}
$$ = &ast.PartitionDefinitionClauseIn{Values: values}
}
| "HISTORY"
{
$$ = &ast.PartitionDefinitionClauseHistory{Current: false}
}
| "CURRENT"
{
$$ = &ast.PartitionDefinitionClauseHistory{Current: true}
} }
DuplicateOpt: DuplicateOpt:
...@@ -3317,21 +3510,20 @@ UnReservedKeyword: ...@@ -3317,21 +3510,20 @@ UnReservedKeyword:
| "NONE" | "NULLS" | "SUPER" | "EXCLUSIVE" | "STATS_PERSISTENT" | "ROW_COUNT" | "COALESCE" | "MONTH" | "PROCESS" | "PROFILE" | "PROFILES" | "NONE" | "NULLS" | "SUPER" | "EXCLUSIVE" | "STATS_PERSISTENT" | "ROW_COUNT" | "COALESCE" | "MONTH" | "PROCESS" | "PROFILE" | "PROFILES"
| "MICROSECOND" | "MINUTE" | "PLUGINS" | "PRECEDING" | "QUERY" | "QUERIES" | "SECOND" | "SEPARATOR" | "SHARE" | "SHARED" | "SLOW" | "MAX_CONNECTIONS_PER_HOUR" | "MAX_QUERIES_PER_HOUR" | "MAX_UPDATES_PER_HOUR" | "MICROSECOND" | "MINUTE" | "PLUGINS" | "PRECEDING" | "QUERY" | "QUERIES" | "SECOND" | "SEPARATOR" | "SHARE" | "SHARED" | "SLOW" | "MAX_CONNECTIONS_PER_HOUR" | "MAX_QUERIES_PER_HOUR" | "MAX_UPDATES_PER_HOUR"
| "MAX_USER_CONNECTIONS" | "REPLICATION" | "CLIENT" | "SLAVE" | "RELOAD" | "TEMPORARY" | "ROUTINE" | "EVENT" | "ALGORITHM" | "DEFINER" | "INVOKER" | "MERGE" | "TEMPTABLE" | "UNDEFINED" | "SECURITY" | "CASCADED" | "MAX_USER_CONNECTIONS" | "REPLICATION" | "CLIENT" | "SLAVE" | "RELOAD" | "TEMPORARY" | "ROUTINE" | "EVENT" | "ALGORITHM" | "DEFINER" | "INVOKER" | "MERGE" | "TEMPTABLE" | "UNDEFINED" | "SECURITY" | "CASCADED"
| "RECOVER" | "CIPHER" | "SUBJECT" | "ISSUER" | "X509" | "NEVER" | "EXPIRE" | "ACCOUNT" | "INCREMENTAL" | "CPU" | "MEMORY" | "BLOCK" | "IO" | "CONTEXT" | "SWITCHES" | "PAGE" | "FAULTS" | "IPC" | "SWAPS" | "SOURCE" | "TRADITIONAL" | "RECOVER" | "CIPHER" | "SUBJECT" | "ISSUER" | "X509" | "NEVER" | "EXPIRE" | "ACCOUNT" | "INCREMENTAL" | "CPU" | "MEMORY" | "BLOCK" | "IO" | "CONTEXT" | "SWITCHES" | "PAGE" | "FAULTS" | "IPC" | "SWAPS" | "SOURCE"
| "TRADITIONAL" | "SQL_BUFFER_RESULT" | "DIRECTORY" | "HISTORY" | "LIST" | "NODEGROUP" | "SYSTEM_TIME"
TiDBKeyword: TiDBKeyword:
"ADMIN" | "BUCKETS" | "CANCEL" | "DDL" | "DRAINER" | "JOBS" | "JOB" | "NODE_ID" | "NODE_STATE" | "PUMP" | "STATS" | "STATS_META" | "STATS_HISTOGRAMS" | "STATS_BUCKETS" | "STATS_HEALTHY" | "TIDB" | "TIDB_HJ" "ADMIN" | "BUCKETS" | "CANCEL" | "DDL" | "DRAINER" | "JOBS" | "JOB" | "NODE_ID" | "NODE_STATE" | "PUMP" | "STATS" | "STATS_META" | "STATS_HISTOGRAMS" | "STATS_BUCKETS" | "STATS_HEALTHY" | "TIDB" | "TIDB_HJ"
| "TIDB_SMJ" | "TIDB_INLJ" | "SPLIT" | "OPTIMISTIC" | "PESSIMISTIC" | "TIDB_SMJ" | "TIDB_INLJ" | "SPLIT" | "OPTIMISTIC" | "PESSIMISTIC" | "REGIONS"
NotKeywordToken: NotKeywordToken:
"ADDDATE" | "BIT_AND" | "BIT_OR" | "BIT_XOR" | "CAST" | "COPY" | "COUNT" | "CURTIME" | "DATE_ADD" | "DATE_SUB" | "EXTRACT" | "GET_FORMAT" | "GROUP_CONCAT" "ADDDATE" | "BIT_AND" | "BIT_OR" | "BIT_XOR" | "CAST" | "COPY" | "COUNT" | "CURTIME" | "DATE_ADD" | "DATE_SUB" | "EXTRACT" | "GET_FORMAT" | "GROUP_CONCAT"
| "INPLACE" | "INSTANT" | "INTERNAL" |"MIN" | "MAX" | "MAX_EXECUTION_TIME" | "NOW" | "RECENT" | "POSITION" | "SUBDATE" | "SUBSTRING" | "SUM" | "INPLACE" | "INSTANT" | "INTERNAL" |"MIN" | "MAX" | "MAX_EXECUTION_TIME" | "NOW" | "RECENT" | "POSITION" | "SUBDATE" | "SUBSTRING" | "SUM"
| "STD" | "STDDEV" | "STDDEV_POP" | "STDDEV_SAMP" | "VARIANCE" | "VAR_POP" | "VAR_SAMP" | "STD" | "STDDEV" | "STDDEV_POP" | "STDDEV_SAMP" | "VARIANCE" | "VAR_POP" | "VAR_SAMP"
| "TIMESTAMPADD" | "TIMESTAMPDIFF" | "TOKUDB_DEFAULT" | "TOKUDB_FAST" | "TOKUDB_LZMA" | "TOKUDB_QUICKLZ" | "TOKUDB_SNAPPY" | "TOKUDB_SMALL" | "TOKUDB_UNCOMPRESSED" | "TOKUDB_ZLIB" | "TOP" | "TRIM" | "NEXT_ROW_ID" | "TIMESTAMPADD" | "TIMESTAMPDIFF" | "TOKUDB_DEFAULT" | "TOKUDB_FAST" | "TOKUDB_LZMA" | "TOKUDB_QUICKLZ" | "TOKUDB_SNAPPY" | "TOKUDB_SMALL" | "TOKUDB_UNCOMPRESSED" | "TOKUDB_ZLIB" | "TOP" | "TRIM" | "NEXT_ROW_ID"
| "EXPR_PUSHDOWN_BLACKLIST"
/************************************************************************************ /************************************************************************************
* *
...@@ -5503,7 +5695,7 @@ SelectStmtLimit: ...@@ -5503,7 +5695,7 @@ SelectStmtLimit:
SelectStmtOpts: SelectStmtOpts:
TableOptimizerHints DefaultFalseDistinctOpt PriorityOpt SelectStmtSQLCache SelectStmtCalcFoundRows SelectStmtStraightJoin TableOptimizerHints DefaultFalseDistinctOpt PriorityOpt SelectStmtSQLSmallResult SelectStmtSQLBigResult SelectStmtSQLBufferResult SelectStmtSQLCache SelectStmtCalcFoundRows SelectStmtStraightJoin
{ {
opt := &ast.SelectStmtOpts{} opt := &ast.SelectStmtOpts{}
if $1 != nil { if $1 != nil {
...@@ -5516,13 +5708,22 @@ SelectStmtOpts: ...@@ -5516,13 +5708,22 @@ SelectStmtOpts:
opt.Priority = $3.(mysql.PriorityEnum) opt.Priority = $3.(mysql.PriorityEnum)
} }
if $4 != nil { if $4 != nil {
opt.SQLCache = $4.(bool) opt.SQLSmallResult = $4.(bool)
} }
if $5 != nil { if $5 != nil {
opt.CalcFoundRows = $5.(bool) opt.SQLBigResult = $5.(bool)
} }
if $6 != nil { if $6 != nil {
opt.StraightJoin = $6.(bool) opt.SQLBufferResult = $6.(bool)
}
if $7 != nil {
opt.SQLCache = $7.(bool)
}
if $8 != nil {
opt.CalcFoundRows = $8.(bool)
}
if $9 != nil {
opt.StraightJoin = $9.(bool)
} }
$$ = opt $$ = opt
...@@ -5590,6 +5791,24 @@ SelectStmtCalcFoundRows: ...@@ -5590,6 +5791,24 @@ SelectStmtCalcFoundRows:
{ {
$$ = true $$ = true
} }
SelectStmtSQLBigResult:
%prec empty
{
$$ = false
}
| "SQL_BIG_RESULT"
{
$$ = true
}
SelectStmtSQLBufferResult:
%prec empty
{
$$ = false
}
| "SQL_BUFFER_RESULT"
{
$$ = true
}
SelectStmtSQLCache: SelectStmtSQLCache:
%prec empty %prec empty
{ {
...@@ -5603,6 +5822,15 @@ SelectStmtSQLCache: ...@@ -5603,6 +5822,15 @@ SelectStmtSQLCache:
{ {
$$ = false $$ = false
} }
SelectStmtSQLSmallResult:
%prec empty
{
$$ = false
}
| "SQL_SMALL_RESULT"
{
$$ = true
}
SelectStmtStraightJoin: SelectStmtStraightJoin:
%prec empty %prec empty
{ {
...@@ -5954,24 +6182,27 @@ SetExpr: ...@@ -5954,24 +6182,27 @@ SetExpr:
} }
| ExprOrDefault | ExprOrDefault
EqOrAssignmentEq:
eq | assignmentEq
VariableAssignment: VariableAssignment:
Identifier eq SetExpr Identifier EqOrAssignmentEq SetExpr
{ {
$$ = &ast.VariableAssignment{Name: $1, Value: $3, IsSystem: true} $$ = &ast.VariableAssignment{Name: $1, Value: $3, IsSystem: true}
} }
| "GLOBAL" Identifier eq SetExpr | "GLOBAL" Identifier EqOrAssignmentEq SetExpr
{ {
$$ = &ast.VariableAssignment{Name: $2, Value: $4, IsGlobal: true, IsSystem: true} $$ = &ast.VariableAssignment{Name: $2, Value: $4, IsGlobal: true, IsSystem: true}
} }
| "SESSION" Identifier eq SetExpr | "SESSION" Identifier EqOrAssignmentEq SetExpr
{ {
$$ = &ast.VariableAssignment{Name: $2, Value: $4, IsSystem: true} $$ = &ast.VariableAssignment{Name: $2, Value: $4, IsSystem: true}
} }
| "LOCAL" Identifier eq Expression | "LOCAL" Identifier EqOrAssignmentEq Expression
{ {
$$ = &ast.VariableAssignment{Name: $2, Value: $4, IsSystem: true} $$ = &ast.VariableAssignment{Name: $2, Value: $4, IsSystem: true}
} }
| doubleAtIdentifier eq SetExpr | doubleAtIdentifier EqOrAssignmentEq SetExpr
{ {
v := strings.ToLower($1) v := strings.ToLower($1)
var isGlobal bool var isGlobal bool
...@@ -5987,13 +6218,7 @@ VariableAssignment: ...@@ -5987,13 +6218,7 @@ VariableAssignment:
} }
$$ = &ast.VariableAssignment{Name: v, Value: $3, IsGlobal: isGlobal, IsSystem: true} $$ = &ast.VariableAssignment{Name: v, Value: $3, IsGlobal: isGlobal, IsSystem: true}
} }
| singleAtIdentifier eq Expression | singleAtIdentifier EqOrAssignmentEq Expression
{
v := $1
v = strings.TrimPrefix(v, "@")
$$ = &ast.VariableAssignment{Name: v, Value: $3}
}
| singleAtIdentifier assignmentEq Expression
{ {
v := $1 v := $1
v = strings.TrimPrefix(v, "@") v = strings.TrimPrefix(v, "@")
...@@ -6272,6 +6497,12 @@ AdminStmt: ...@@ -6272,6 +6497,12 @@ AdminStmt:
ShowSlow: $4.(*ast.ShowSlow), ShowSlow: $4.(*ast.ShowSlow),
} }
} }
| "ADMIN" "RELOAD" "EXPR_PUSHDOWN_BLACKLIST"
{
$$ = &ast.AdminStmt{
Tp: ast.AdminReloadExprPushdownBlacklist,
}
}
AdminShowSlow: AdminShowSlow:
"RECENT" NUM "RECENT" NUM
...@@ -6933,7 +7164,7 @@ Statement: ...@@ -6933,7 +7164,7 @@ Statement:
| SetStmt | SetStmt
| SetRoleStmt | SetRoleStmt
| SetDefaultRoleStmt | SetDefaultRoleStmt
| SplitIndexRegionStmt | SplitRegionStmt
| ShowStmt | ShowStmt
| SubSelect | SubSelect
{ {
...@@ -7060,13 +7291,9 @@ TableElementListOpt: ...@@ -7060,13 +7291,9 @@ TableElementListOpt:
} }
TableOption: TableOption:
"ENGINE" StringName PartDefOption
{
$$ = &ast.TableOption{Tp: ast.TableOptionEngine, StrValue: $2.(string)}
}
| "ENGINE" eq StringName
{ {
$$ = &ast.TableOption{Tp: ast.TableOptionEngine, StrValue: $3.(string)} $$ = $1
} }
| DefaultKwdOpt CharsetKw EqOpt CharsetName | DefaultKwdOpt CharsetKw EqOpt CharsetName
{ {
...@@ -7080,10 +7307,6 @@ TableOption: ...@@ -7080,10 +7307,6 @@ TableOption:
{ {
$$ = &ast.TableOption{Tp: ast.TableOptionAutoIncrement, UintValue: $3.(uint64)} $$ = &ast.TableOption{Tp: ast.TableOptionAutoIncrement, UintValue: $3.(uint64)}
} }
| "COMMENT" EqOpt stringLit
{
$$ = &ast.TableOption{Tp: ast.TableOptionComment, StrValue: $3}
}
| "AVG_ROW_LENGTH" EqOpt LengthNum | "AVG_ROW_LENGTH" EqOpt LengthNum
{ {
$$ = &ast.TableOption{Tp: ast.TableOptionAvgRowLength, UintValue: $3.(uint64)} $$ = &ast.TableOption{Tp: ast.TableOptionAvgRowLength, UintValue: $3.(uint64)}
...@@ -7108,14 +7331,6 @@ TableOption: ...@@ -7108,14 +7331,6 @@ TableOption:
{ {
$$ = &ast.TableOption{Tp: ast.TableOptionKeyBlockSize, UintValue: $3.(uint64)} $$ = &ast.TableOption{Tp: ast.TableOptionKeyBlockSize, UintValue: $3.(uint64)}
} }
| "MAX_ROWS" EqOpt LengthNum
{
$$ = &ast.TableOption{Tp: ast.TableOptionMaxRows, UintValue: $3.(uint64)}
}
| "MIN_ROWS" EqOpt LengthNum
{
$$ = &ast.TableOption{Tp: ast.TableOptionMinRows, UintValue: $3.(uint64)}
}
| "DELAY_KEY_WRITE" EqOpt LengthNum | "DELAY_KEY_WRITE" EqOpt LengthNum
{ {
$$ = &ast.TableOption{Tp: ast.TableOptionDelayKeyWrite, UintValue: $3.(uint64)} $$ = &ast.TableOption{Tp: ast.TableOptionDelayKeyWrite, UintValue: $3.(uint64)}
...@@ -7148,12 +7363,6 @@ StatsPersistentVal: ...@@ -7148,12 +7363,6 @@ StatsPersistentVal:
| LengthNum | LengthNum
{} {}
AlterTableOptionListOpt:
{
$$ = []*ast.TableOption{}
}
| TableOptionList %prec higherThanComma
CreateTableOptionListOpt: CreateTableOptionListOpt:
/* empty */ %prec lowerThanCreateTableSelect /* empty */ %prec lowerThanCreateTableSelect
{ {
...@@ -7310,10 +7519,11 @@ NumericType: ...@@ -7310,10 +7519,11 @@ NumericType:
fopt := $2.(*ast.FloatOpt) fopt := $2.(*ast.FloatOpt)
x := types.NewFieldType($1.(byte)) x := types.NewFieldType($1.(byte))
x.Flen = fopt.Flen x.Flen = fopt.Flen
if x.Tp == mysql.TypeFloat { if x.Tp == mysql.TypeFloat && fopt.Decimal == types.UnspecifiedLength && x.Flen <= 53 {
if x.Flen > 24 { if x.Flen > 24 {
x.Tp = mysql.TypeDouble x.Tp = mysql.TypeDouble
} }
x.Flen = types.UnspecifiedLength
} }
x.Decimal = fopt.Decimal x.Decimal = fopt.Decimal
for _, o := range $3.([]*ast.TypeOpt) { for _, o := range $3.([]*ast.TypeOpt) {
...@@ -8724,11 +8934,18 @@ LoadDataSetItem: ...@@ -8724,11 +8934,18 @@ LoadDataSetItem:
*********************************************************************/ *********************************************************************/
UnlockTablesStmt: UnlockTablesStmt:
"UNLOCK" TablesTerminalSym {} "UNLOCK" TablesTerminalSym
{
$$ = &ast.UnlockTablesStmt{}
}
LockTablesStmt: LockTablesStmt:
"LOCK" TablesTerminalSym TableLockList "LOCK" TablesTerminalSym TableLockList
{} {
$$ = &ast.LockTablesStmt{
TableLocks: $3.([]ast.TableLock),
}
}
TablesTerminalSym: TablesTerminalSym:
"TABLES" "TABLES"
...@@ -8736,15 +8953,40 @@ TablesTerminalSym: ...@@ -8736,15 +8953,40 @@ TablesTerminalSym:
TableLock: TableLock:
TableName LockType TableName LockType
{
$$ = ast.TableLock{
Table: $1.(*ast.TableName),
Type: $2.(model.TableLockType),
}
}
LockType: LockType:
"READ" "READ"
{
$$ = model.TableLockRead
}
| "READ" "LOCAL" | "READ" "LOCAL"
{
$$ = model.TableLockReadLocal
}
| "WRITE" | "WRITE"
{
$$ = model.TableLockWrite
}
| "WRITE" "LOCAL"
{
$$ = model.TableLockWriteLocal
}
TableLockList: TableLockList:
TableLock TableLock
{
$$ = []ast.TableLock{$1.(ast.TableLock)}
}
| TableLockList ',' TableLock | TableLockList ',' TableLock
{
$$ = append($1.([]ast.TableLock), $3.(ast.TableLock))
}
/******************************************************************** /********************************************************************
......
...@@ -148,6 +148,11 @@ func (ec ErrClass) New(code ErrCode, message string) *Error { ...@@ -148,6 +148,11 @@ func (ec ErrClass) New(code ErrCode, message string) *Error {
} }
} }
// NewStd calls New using the standard message for the error code
func (ec ErrClass) NewStd(code ErrCode) *Error {
return ec.New(code, mysql.MySQLErrName[uint16(code)])
}
// Error implements error interface and adds integer Class and Code, so // Error implements error interface and adds integer Class and Code, so
// errors with different message can be compared. // errors with different message can be compared.
type Error struct { type Error struct {
......
...@@ -201,8 +201,13 @@ func (ft *FieldType) String() string { ...@@ -201,8 +201,13 @@ func (ft *FieldType) String() string {
func (ft *FieldType) Restore(ctx *format.RestoreCtx) error { func (ft *FieldType) Restore(ctx *format.RestoreCtx) error {
ctx.WriteKeyWord(TypeToStr(ft.Tp, ft.Charset)) ctx.WriteKeyWord(TypeToStr(ft.Tp, ft.Charset))
precision := ft.Flen
scale := ft.Decimal
switch ft.Tp { switch ft.Tp {
case mysql.TypeEnum, mysql.TypeSet: case mysql.TypeEnum, mysql.TypeSet:
precision = UnspecifiedLength
scale = UnspecifiedLength
ctx.WritePlain("(") ctx.WritePlain("(")
for i, e := range ft.Elems { for i, e := range ft.Elems {
if i != 0 { if i != 0 {
...@@ -212,21 +217,17 @@ func (ft *FieldType) Restore(ctx *format.RestoreCtx) error { ...@@ -212,21 +217,17 @@ func (ft *FieldType) Restore(ctx *format.RestoreCtx) error {
} }
ctx.WritePlain(")") ctx.WritePlain(")")
case mysql.TypeTimestamp, mysql.TypeDatetime, mysql.TypeDuration: case mysql.TypeTimestamp, mysql.TypeDatetime, mysql.TypeDuration:
if ft.Flen > 0 && ft.Decimal > 0 { precision = ft.Decimal
ctx.WritePlainf("(%d)", ft.Decimal) scale = UnspecifiedLength
} }
case mysql.TypeDouble, mysql.TypeFloat:
if ft.Flen > 0 && ft.Decimal > 0 { if precision != UnspecifiedLength {
ctx.WritePlainf("(%d,%d)", ft.Flen, ft.Decimal) ctx.WritePlainf("(%d", precision)
} if scale != UnspecifiedLength {
case mysql.TypeNewDecimal: ctx.WritePlainf(",%d", scale)
if ft.Flen > 0 && ft.Decimal > 0 {
ctx.WritePlainf("(%d,%d)", ft.Flen, ft.Decimal)
}
case mysql.TypeBit, mysql.TypeShort, mysql.TypeTiny, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong, mysql.TypeVarchar, mysql.TypeString, mysql.TypeVarString, mysql.TypeTinyBlob, mysql.TypeMediumBlob, mysql.TypeBlob, mysql.TypeLongBlob, mysql.TypeYear:
if ft.Flen > 0 {
ctx.WritePlainf("(%d)", ft.Flen)
} }
ctx.WritePlain(")")
} }
if mysql.HasUnsignedFlag(ft.Flag) { if mysql.HasUnsignedFlag(ft.Flag) {
......
...@@ -24,6 +24,7 @@ import ( ...@@ -24,6 +24,7 @@ import (
"github.com/pingcap/parser/mysql" "github.com/pingcap/parser/mysql"
"github.com/pingcap/tidb/util/execdetails" "github.com/pingcap/tidb/util/execdetails"
"github.com/pingcap/tidb/util/memory" "github.com/pingcap/tidb/util/memory"
"go.uber.org/zap"
) )
const ( const (
...@@ -54,6 +55,7 @@ type StatementContext struct { ...@@ -54,6 +55,7 @@ type StatementContext struct {
InDeleteStmt bool InDeleteStmt bool
InSelectStmt bool InSelectStmt bool
InLoadDataStmt bool InLoadDataStmt bool
InExplainStmt bool
IgnoreTruncate bool IgnoreTruncate bool
IgnoreZeroInDate bool IgnoreZeroInDate bool
DupKeyAsWarning bool DupKeyAsWarning bool
...@@ -486,3 +488,21 @@ type CopTasksDetails struct { ...@@ -486,3 +488,21 @@ type CopTasksDetails struct {
MaxWaitAddress string MaxWaitAddress string
MaxWaitTime time.Duration MaxWaitTime time.Duration
} }
// ToZapFields wraps the CopTasksDetails as zap.Fileds.
func (d *CopTasksDetails) ToZapFields() (fields []zap.Field) {
if d.NumCopTasks == 0 {
return
}
fields = make([]zap.Field, 0, 10)
fields = append(fields, zap.Int("num_cop_tasks", d.NumCopTasks))
fields = append(fields, zap.String("process_avg_time", strconv.FormatFloat(d.AvgProcessTime.Seconds(), 'f', -1, 64)+"s"))
fields = append(fields, zap.String("process_p90_time", strconv.FormatFloat(d.P90ProcessTime.Seconds(), 'f', -1, 64)+"s"))
fields = append(fields, zap.String("process_max_time", strconv.FormatFloat(d.MaxProcessTime.Seconds(), 'f', -1, 64)+"s"))
fields = append(fields, zap.String("process_max_addr", d.MaxProcessAddress))
fields = append(fields, zap.String("wait_avg_time", strconv.FormatFloat(d.AvgWaitTime.Seconds(), 'f', -1, 64)+"s"))
fields = append(fields, zap.String("wait_p90_time", strconv.FormatFloat(d.P90WaitTime.Seconds(), 'f', -1, 64)+"s"))
fields = append(fields, zap.String("wait_max_time", strconv.FormatFloat(d.MaxWaitTime.Seconds(), 'f', -1, 64)+"s"))
fields = append(fields, zap.String("wait_max_addr", d.MaxWaitAddress))
return fields
}
...@@ -392,7 +392,12 @@ func ParseBinaryFromString(s string) (bj BinaryJSON, err error) { ...@@ -392,7 +392,12 @@ func ParseBinaryFromString(s string) (bj BinaryJSON, err error) {
err = ErrInvalidJSONText.GenWithStackByArgs("The document is empty") err = ErrInvalidJSONText.GenWithStackByArgs("The document is empty")
return return
} }
if err = bj.UnmarshalJSON(hack.Slice(s)); err != nil { data := hack.Slice(s)
if !json.Valid(data) {
err = ErrInvalidJSONText.GenWithStackByArgs("The document root must not be followed by other values.")
return
}
if err = bj.UnmarshalJSON(data); err != nil {
err = ErrInvalidJSONText.GenWithStackByArgs(err) err = ErrInvalidJSONText.GenWithStackByArgs(err)
} }
return return
......
...@@ -23,6 +23,7 @@ import ( ...@@ -23,6 +23,7 @@ import (
"time" "time"
"github.com/pingcap/tipb/go-tipb" "github.com/pingcap/tipb/go-tipb"
"go.uber.org/zap"
) )
// CommitDetailCtxKey presents CommitDetail info key in context. // CommitDetailCtxKey presents CommitDetail info key in context.
...@@ -128,6 +129,65 @@ func (d ExecDetails) String() string { ...@@ -128,6 +129,65 @@ func (d ExecDetails) String() string {
return strings.Join(parts, " ") return strings.Join(parts, " ")
} }
// ToZapFields wraps the ExecDetails as zap.Fields.
func (d ExecDetails) ToZapFields() (fields []zap.Field) {
fields = make([]zap.Field, 0, 16)
if d.ProcessTime > 0 {
fields = append(fields, zap.String(strings.ToLower(ProcessTimeStr), strconv.FormatFloat(d.ProcessTime.Seconds(), 'f', -1, 64)+"s"))
}
if d.WaitTime > 0 {
fields = append(fields, zap.String(strings.ToLower(WaitTimeStr), strconv.FormatFloat(d.ProcessTime.Seconds(), 'f', -1, 64)+"s"))
}
if d.BackoffTime > 0 {
fields = append(fields, zap.String(strings.ToLower(BackoffTimeStr), strconv.FormatFloat(d.BackoffTime.Seconds(), 'f', -1, 64)+"s"))
}
if d.RequestCount > 0 {
fields = append(fields, zap.String(strings.ToLower(RequestCountStr), strconv.FormatInt(int64(d.RequestCount), 10)))
}
if d.TotalKeys > 0 {
fields = append(fields, zap.String(strings.ToLower(TotalKeysStr), strconv.FormatInt(d.TotalKeys, 10)))
}
if d.ProcessedKeys > 0 {
fields = append(fields, zap.String(strings.ToLower(ProcessKeysStr), strconv.FormatInt(d.ProcessedKeys, 10)))
}
commitDetails := d.CommitDetail
if commitDetails != nil {
if commitDetails.PrewriteTime > 0 {
fields = append(fields, zap.String("prewrite_time", fmt.Sprintf("%v", strconv.FormatFloat(commitDetails.PrewriteTime.Seconds(), 'f', -1, 64)+"s")))
}
if commitDetails.CommitTime > 0 {
fields = append(fields, zap.String("commit_time", fmt.Sprintf("%v", strconv.FormatFloat(commitDetails.CommitTime.Seconds(), 'f', -1, 64)+"s")))
}
if commitDetails.GetCommitTsTime > 0 {
fields = append(fields, zap.String("get_commit_ts_time", fmt.Sprintf("%v", strconv.FormatFloat(commitDetails.GetCommitTsTime.Seconds(), 'f', -1, 64)+"s")))
}
if commitDetails.TotalBackoffTime > 0 {
fields = append(fields, zap.String("total_backoff_time", fmt.Sprintf("%v", strconv.FormatFloat(commitDetails.TotalBackoffTime.Seconds(), 'f', -1, 64)+"s")))
}
resolveLockTime := atomic.LoadInt64(&commitDetails.ResolveLockTime)
if resolveLockTime > 0 {
fields = append(fields, zap.String("resolve_lock_time", fmt.Sprintf("%v", strconv.FormatFloat(time.Duration(resolveLockTime).Seconds(), 'f', -1, 64)+"s")))
}
if commitDetails.LocalLatchTime > 0 {
fields = append(fields, zap.String("local_latch_wait_time", fmt.Sprintf("%v", strconv.FormatFloat(commitDetails.LocalLatchTime.Seconds(), 'f', -1, 64)+"s")))
}
if commitDetails.WriteKeys > 0 {
fields = append(fields, zap.Int("write_keys", commitDetails.WriteKeys))
}
if commitDetails.WriteSize > 0 {
fields = append(fields, zap.Int("write_size", commitDetails.WriteSize))
}
prewriteRegionNum := atomic.LoadInt32(&commitDetails.PrewriteRegionNum)
if prewriteRegionNum > 0 {
fields = append(fields, zap.Int32("prewrite_region", prewriteRegionNum))
}
if commitDetails.TxnRetry > 0 {
fields = append(fields, zap.Int("txn_retry", commitDetails.TxnRetry))
}
}
return fields
}
// CopRuntimeStats collects cop tasks' execution info. // CopRuntimeStats collects cop tasks' execution info.
type CopRuntimeStats struct { type CopRuntimeStats struct {
sync.Mutex sync.Mutex
...@@ -257,8 +317,5 @@ func (e *RuntimeStats) SetRowNum(rowNum int64) { ...@@ -257,8 +317,5 @@ func (e *RuntimeStats) SetRowNum(rowNum int64) {
} }
func (e *RuntimeStats) String() string { func (e *RuntimeStats) String() string {
if e == nil {
return ""
}
return fmt.Sprintf("time:%v, loops:%d, rows:%d", time.Duration(e.consume), e.loop, e.rows) return fmt.Sprintf("time:%v, loops:%d, rows:%d", time.Duration(e.consume), e.loop, e.rows)
} }
...@@ -131,30 +131,9 @@ func stringToLogLevel(level string) log.Level { ...@@ -131,30 +131,9 @@ func stringToLogLevel(level string) log.Level {
return defaultLogLevel return defaultLogLevel
} }
// logTypeToColor converts the Level to a color string.
func logTypeToColor(level log.Level) string {
switch level {
case log.DebugLevel:
return "[0;37"
case log.InfoLevel:
return "[0;36"
case log.WarnLevel:
return "[0;33"
case log.ErrorLevel:
return "[0;31"
case log.FatalLevel:
return "[0;31"
case log.PanicLevel:
return "[0;31"
}
return "[0;37"
}
// textFormatter is for compatibility with ngaut/log // textFormatter is for compatibility with ngaut/log
type textFormatter struct { type textFormatter struct {
DisableTimestamp bool DisableTimestamp bool
EnableColors bool
EnableEntryOrder bool EnableEntryOrder bool
} }
...@@ -167,11 +146,6 @@ func (f *textFormatter) Format(entry *log.Entry) ([]byte, error) { ...@@ -167,11 +146,6 @@ func (f *textFormatter) Format(entry *log.Entry) ([]byte, error) {
b = &bytes.Buffer{} b = &bytes.Buffer{}
} }
if f.EnableColors {
colorStr := logTypeToColor(entry.Level)
fmt.Fprintf(b, "\033%sm ", colorStr)
}
if !f.DisableTimestamp { if !f.DisableTimestamp {
fmt.Fprintf(b, "%s ", entry.Time.Format(defaultLogTimeFormat)) fmt.Fprintf(b, "%s ", entry.Time.Format(defaultLogTimeFormat))
} }
...@@ -201,9 +175,6 @@ func (f *textFormatter) Format(entry *log.Entry) ([]byte, error) { ...@@ -201,9 +175,6 @@ func (f *textFormatter) Format(entry *log.Entry) ([]byte, error) {
b.WriteByte('\n') b.WriteByte('\n')
if f.EnableColors {
b.WriteString("\033[0m")
}
return b.Bytes(), nil return b.Bytes(), nil
} }
...@@ -235,22 +206,6 @@ func stringToLogFormatter(format string, disableTimestamp bool) log.Formatter { ...@@ -235,22 +206,6 @@ func stringToLogFormatter(format string, disableTimestamp bool) log.Formatter {
return &textFormatter{ return &textFormatter{
DisableTimestamp: disableTimestamp, DisableTimestamp: disableTimestamp,
} }
case "json":
return &log.JSONFormatter{
TimestampFormat: defaultLogTimeFormat,
DisableTimestamp: disableTimestamp,
}
case "console":
return &log.TextFormatter{
FullTimestamp: true,
TimestampFormat: defaultLogTimeFormat,
DisableTimestamp: disableTimestamp,
}
case "highlight":
return &textFormatter{
DisableTimestamp: disableTimestamp,
EnableColors: true,
}
default: default:
return &textFormatter{} return &textFormatter{}
} }
......
...@@ -45,6 +45,7 @@ func (a *LogOnExceed) Action(t *Tracker) { ...@@ -45,6 +45,7 @@ func (a *LogOnExceed) Action(t *Tracker) {
a.acted = true a.acted = true
logutil.Logger(context.Background()).Warn("memory exceeds quota", logutil.Logger(context.Background()).Warn("memory exceeds quota",
zap.Error(errMemExceedThreshold.GenWithStackByArgs(t.label, t.BytesConsumed(), t.bytesLimit, t.String()))) zap.Error(errMemExceedThreshold.GenWithStackByArgs(t.label, t.BytesConsumed(), t.bytesLimit, t.String())))
return
} }
} }
......
...@@ -182,9 +182,9 @@ func (t *Tracker) String() string { ...@@ -182,9 +182,9 @@ func (t *Tracker) String() string {
func (t *Tracker) toString(indent string, buffer *bytes.Buffer) { func (t *Tracker) toString(indent string, buffer *bytes.Buffer) {
fmt.Fprintf(buffer, "%s\"%s\"{\n", indent, t.label) fmt.Fprintf(buffer, "%s\"%s\"{\n", indent, t.label)
if t.bytesLimit > 0 { if t.bytesLimit > 0 {
fmt.Fprintf(buffer, "%s \"quota\": %s\n", indent, t.bytesToString(t.bytesLimit)) fmt.Fprintf(buffer, "%s \"quota\": %s\n", indent, t.BytesToString(t.bytesLimit))
} }
fmt.Fprintf(buffer, "%s \"consumed\": %s\n", indent, t.bytesToString(t.BytesConsumed())) fmt.Fprintf(buffer, "%s \"consumed\": %s\n", indent, t.BytesToString(t.BytesConsumed()))
t.mu.Lock() t.mu.Lock()
for i := range t.mu.children { for i := range t.mu.children {
...@@ -196,7 +196,8 @@ func (t *Tracker) toString(indent string, buffer *bytes.Buffer) { ...@@ -196,7 +196,8 @@ func (t *Tracker) toString(indent string, buffer *bytes.Buffer) {
buffer.WriteString(indent + "}\n") buffer.WriteString(indent + "}\n")
} }
func (t *Tracker) bytesToString(numBytes int64) string { // BytesToString converts the memory consumption to a readable string.
func (t *Tracker) BytesToString(numBytes int64) string {
GB := float64(numBytes) / float64(1<<30) GB := float64(numBytes) / float64(1<<30)
if GB > 1 { if GB > 1 {
return fmt.Sprintf("%v GB", GB) return fmt.Sprintf("%v GB", GB)
......
...@@ -117,118 +117,118 @@ ...@@ -117,118 +117,118 @@
"revisionTime": "2019-03-07T07:54:52Z" "revisionTime": "2019-03-07T07:54:52Z"
}, },
{ {
"checksumSHA1": "IB9wW2GmSlnLVDRkaUXcF3CJ15g=", "checksumSHA1": "gkdPCV8bVezIdBd/w2RiZf7eXTU=",
"path": "github.com/pingcap/parser", "path": "github.com/pingcap/parser",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "qeft79GIpt7bP++Qlg1UNSdXL3E=", "checksumSHA1": "/HUw+IEQjCkicSG7qSMWqRlmvz0=",
"path": "github.com/pingcap/parser/ast", "path": "github.com/pingcap/parser/ast",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "xiv40YqnvHcbIhaEzJqjh5K7ehM=", "checksumSHA1": "xiv40YqnvHcbIhaEzJqjh5K7ehM=",
"path": "github.com/pingcap/parser/auth", "path": "github.com/pingcap/parser/auth",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "EvDXpplklIXmKqLclzWzaN/uHKQ=", "checksumSHA1": "EvDXpplklIXmKqLclzWzaN/uHKQ=",
"path": "github.com/pingcap/parser/charset", "path": "github.com/pingcap/parser/charset",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "Aao6Mul/qqogOwPwM2arBKZkYZs=", "checksumSHA1": "Aao6Mul/qqogOwPwM2arBKZkYZs=",
"path": "github.com/pingcap/parser/format", "path": "github.com/pingcap/parser/format",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "YN9BYMOMxEXjrUCPPYQREN90BC0=", "checksumSHA1": "CvZtQeDgNfQUrGDi5mrv5osJ5F0=",
"path": "github.com/pingcap/parser/model", "path": "github.com/pingcap/parser/model",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "/qaOJqnSLO0dZbyQDnq75wUPiLo=", "checksumSHA1": "02F5sAuKee53HMwsu6fx+iw5cnM=",
"path": "github.com/pingcap/parser/mysql", "path": "github.com/pingcap/parser/mysql",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "olapD16WCMBU9vrA5PtlERGFfXw=", "checksumSHA1": "olapD16WCMBU9vrA5PtlERGFfXw=",
"path": "github.com/pingcap/parser/opcode", "path": "github.com/pingcap/parser/opcode",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "kNunWp0HfikkRiZlOzfD1bvHruM=", "checksumSHA1": "L6rzy3sJU1RPf7AkJN+0zcwW/YY=",
"path": "github.com/pingcap/parser/terror", "path": "github.com/pingcap/parser/terror",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "abJKAbu4Cro4oJZ2IeI+n+0R87A=", "checksumSHA1": "EWbRvJs3Y1KLBaHnwaCHps3t0+4=",
"path": "github.com/pingcap/parser/types", "path": "github.com/pingcap/parser/types",
"revision": "89ae120307cc42a1cccc4daba2c589966db77055", "revision": "3b36f86d9b7bba02fef99748e3a98069708a64f3",
"revisionTime": "2019-05-23T11:32:41Z" "revisionTime": "2019-06-12T05:27:18Z"
}, },
{ {
"checksumSHA1": "t0O+34iPgOlRt020Cn36smUWhwQ=", "checksumSHA1": "irgF5OsNQZiD589px9hV3scdp8U=",
"path": "github.com/pingcap/tidb/sessionctx/stmtctx", "path": "github.com/pingcap/tidb/sessionctx/stmtctx",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "1INT6BSMg5WA9x4ftRegJBhDJQg=", "checksumSHA1": "1INT6BSMg5WA9x4ftRegJBhDJQg=",
"path": "github.com/pingcap/tidb/types", "path": "github.com/pingcap/tidb/types",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "PwXMuapqcWj1+hMEcRIJhLJ3NsY=", "checksumSHA1": "HYVqavXulc59n0RyI/D1jZVKon4=",
"path": "github.com/pingcap/tidb/types/json", "path": "github.com/pingcap/tidb/types/json",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "45zWX5Q6D6aTEWtc4p/lbD9WD4o=", "checksumSHA1": "45zWX5Q6D6aTEWtc4p/lbD9WD4o=",
"path": "github.com/pingcap/tidb/types/parser_driver", "path": "github.com/pingcap/tidb/types/parser_driver",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "za/7NvrgGTXpUf/A4/MCtgeNp+Y=", "checksumSHA1": "dI3bZpUsujM1shEDvORNQj5FCN0=",
"path": "github.com/pingcap/tidb/util/execdetails", "path": "github.com/pingcap/tidb/util/execdetails",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "RdbHgQWMHjRtKjqPcTX81k1V3sw=", "checksumSHA1": "RdbHgQWMHjRtKjqPcTX81k1V3sw=",
"path": "github.com/pingcap/tidb/util/hack", "path": "github.com/pingcap/tidb/util/hack",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "JYbZwZe2uuqKVVV40ZU4G9zGEBE=", "checksumSHA1": "16Cv4I5dFUSCuz0AufzUilN4IOI=",
"path": "github.com/pingcap/tidb/util/logutil", "path": "github.com/pingcap/tidb/util/logutil",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "OveQu0ABBJmMEwmmthqSRQC2Ef0=", "checksumSHA1": "OveQu0ABBJmMEwmmthqSRQC2Ef0=",
"path": "github.com/pingcap/tidb/util/math", "path": "github.com/pingcap/tidb/util/math",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "9q+/RZZoN4cq/FbCUCD0uVAyqeU=", "checksumSHA1": "EoqVTAze03xNtGcKbsZT4eYx9bI=",
"path": "github.com/pingcap/tidb/util/memory", "path": "github.com/pingcap/tidb/util/memory",
"revision": "cc74145ffa9e48edcae0fb394618ada43b2776c0", "revision": "7d27fa63d349b9d266682a3fff6e732c156cf1db",
"revisionTime": "2019-05-24T06:40:04Z" "revisionTime": "2019-06-12T12:43:29Z"
}, },
{ {
"checksumSHA1": "QPIBwDNUFF5Whrnd41S3mkKa4gQ=", "checksumSHA1": "QPIBwDNUFF5Whrnd41S3mkKa4gQ=",
...@@ -485,62 +485,68 @@ ...@@ -485,62 +485,68 @@
{ {
"checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=", "checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=",
"path": "vitess.io/vitess/go/bytes2", "path": "vitess.io/vitess/go/bytes2",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "bhE6CGQgZTIgLPp9lnvlKW/47xc=", "checksumSHA1": "bhE6CGQgZTIgLPp9lnvlKW/47xc=",
"path": "vitess.io/vitess/go/hack", "path": "vitess.io/vitess/go/hack",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "RERqgxOX48XzRIoe5fQzvWSJV0Y=", "checksumSHA1": "RERqgxOX48XzRIoe5fQzvWSJV0Y=",
"path": "vitess.io/vitess/go/sqltypes", "path": "vitess.io/vitess/go/sqltypes",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "vAIRxI6MHsq3x1hLQwIyw5AvqtI=", "checksumSHA1": "vAIRxI6MHsq3x1hLQwIyw5AvqtI=",
"path": "vitess.io/vitess/go/vt/log", "path": "vitess.io/vitess/go/vt/log",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
},
{
"checksumSHA1": "/0K9CBbInkAhioqKX9ocBrJ6AKE=",
"path": "vitess.io/vitess/go/vt/proto/binlogdata",
"revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "87Zndvk3Y+M+QxMx3uFa0iSbvWY=", "checksumSHA1": "87Zndvk3Y+M+QxMx3uFa0iSbvWY=",
"path": "vitess.io/vitess/go/vt/proto/query", "path": "vitess.io/vitess/go/vt/proto/query",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "xpcb9NfXMEeHhEPStbJntIfa5GQ=", "checksumSHA1": "xpcb9NfXMEeHhEPStbJntIfa5GQ=",
"path": "vitess.io/vitess/go/vt/proto/topodata", "path": "vitess.io/vitess/go/vt/proto/topodata",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "l9fmSuOJyoq+EKM4QxfoSw8hLPY=", "checksumSHA1": "Ie634JZ/Np9603mG+PQ0ZkUsaQI=",
"path": "vitess.io/vitess/go/vt/proto/vtgate", "path": "vitess.io/vitess/go/vt/proto/vtgate",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "qz32abYdmm9NfKTc++K0l1EvXXM=", "checksumSHA1": "qz32abYdmm9NfKTc++K0l1EvXXM=",
"path": "vitess.io/vitess/go/vt/proto/vtrpc", "path": "vitess.io/vitess/go/vt/proto/vtrpc",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "/V79kL29yMBxAofQBL/XqxJv/GE=", "checksumSHA1": "/V79kL29yMBxAofQBL/XqxJv/GE=",
"path": "vitess.io/vitess/go/vt/sqlparser", "path": "vitess.io/vitess/go/vt/sqlparser",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
}, },
{ {
"checksumSHA1": "qhGH2j3onpaSh+fbs1fKPoTxUcw=", "checksumSHA1": "z9+F/lA1Xrl5S16LKssUH8VL6hs=",
"path": "vitess.io/vitess/go/vt/vterrors", "path": "vitess.io/vitess/go/vt/vterrors",
"revision": "eb2d057927b37c5a6f144ab5baa762881cffae8d", "revision": "22dbada8b16e2c969dd60c77f4e6a346c70d5952",
"revisionTime": "2019-05-23T12:28:24Z" "revisionTime": "2019-06-11T03:26:25Z"
} }
], ],
"rootPath": "github.com/XiaoMi/soar" "rootPath": "github.com/XiaoMi/soar"
......
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: binlogdata.proto
package binlogdata // import "vitess.io/vitess/go/vt/proto/binlogdata"
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import query "vitess.io/vitess/go/vt/proto/query"
import topodata "vitess.io/vitess/go/vt/proto/topodata"
import vtrpc "vitess.io/vitess/go/vt/proto/vtrpc"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
// OnDDLAction lists the possible actions for DDLs.
type OnDDLAction int32
const (
OnDDLAction_IGNORE OnDDLAction = 0
OnDDLAction_STOP OnDDLAction = 1
OnDDLAction_EXEC OnDDLAction = 2
OnDDLAction_EXEC_IGNORE OnDDLAction = 3
)
var OnDDLAction_name = map[int32]string{
0: "IGNORE",
1: "STOP",
2: "EXEC",
3: "EXEC_IGNORE",
}
var OnDDLAction_value = map[string]int32{
"IGNORE": 0,
"STOP": 1,
"EXEC": 2,
"EXEC_IGNORE": 3,
}
func (x OnDDLAction) String() string {
return proto.EnumName(OnDDLAction_name, int32(x))
}
func (OnDDLAction) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{0}
}
// VEventType enumerates the event types.
// This list is comprehensive. Many of these types
// will not be encountered in RBR mode.
type VEventType int32
const (
VEventType_UNKNOWN VEventType = 0
VEventType_GTID VEventType = 1
VEventType_BEGIN VEventType = 2
VEventType_COMMIT VEventType = 3
VEventType_ROLLBACK VEventType = 4
VEventType_DDL VEventType = 5
VEventType_INSERT VEventType = 6
VEventType_REPLACE VEventType = 7
VEventType_UPDATE VEventType = 8
VEventType_DELETE VEventType = 9
VEventType_SET VEventType = 10
VEventType_OTHER VEventType = 11
VEventType_ROW VEventType = 12
VEventType_FIELD VEventType = 13
VEventType_HEARTBEAT VEventType = 14
VEventType_VGTID VEventType = 15
)
var VEventType_name = map[int32]string{
0: "UNKNOWN",
1: "GTID",
2: "BEGIN",
3: "COMMIT",
4: "ROLLBACK",
5: "DDL",
6: "INSERT",
7: "REPLACE",
8: "UPDATE",
9: "DELETE",
10: "SET",
11: "OTHER",
12: "ROW",
13: "FIELD",
14: "HEARTBEAT",
15: "VGTID",
}
var VEventType_value = map[string]int32{
"UNKNOWN": 0,
"GTID": 1,
"BEGIN": 2,
"COMMIT": 3,
"ROLLBACK": 4,
"DDL": 5,
"INSERT": 6,
"REPLACE": 7,
"UPDATE": 8,
"DELETE": 9,
"SET": 10,
"OTHER": 11,
"ROW": 12,
"FIELD": 13,
"HEARTBEAT": 14,
"VGTID": 15,
}
func (x VEventType) String() string {
return proto.EnumName(VEventType_name, int32(x))
}
func (VEventType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{1}
}
type BinlogTransaction_Statement_Category int32
const (
BinlogTransaction_Statement_BL_UNRECOGNIZED BinlogTransaction_Statement_Category = 0
BinlogTransaction_Statement_BL_BEGIN BinlogTransaction_Statement_Category = 1
BinlogTransaction_Statement_BL_COMMIT BinlogTransaction_Statement_Category = 2
BinlogTransaction_Statement_BL_ROLLBACK BinlogTransaction_Statement_Category = 3
// BL_DML is deprecated.
BinlogTransaction_Statement_BL_DML_DEPRECATED BinlogTransaction_Statement_Category = 4
BinlogTransaction_Statement_BL_DDL BinlogTransaction_Statement_Category = 5
BinlogTransaction_Statement_BL_SET BinlogTransaction_Statement_Category = 6
BinlogTransaction_Statement_BL_INSERT BinlogTransaction_Statement_Category = 7
BinlogTransaction_Statement_BL_UPDATE BinlogTransaction_Statement_Category = 8
BinlogTransaction_Statement_BL_DELETE BinlogTransaction_Statement_Category = 9
)
var BinlogTransaction_Statement_Category_name = map[int32]string{
0: "BL_UNRECOGNIZED",
1: "BL_BEGIN",
2: "BL_COMMIT",
3: "BL_ROLLBACK",
4: "BL_DML_DEPRECATED",
5: "BL_DDL",
6: "BL_SET",
7: "BL_INSERT",
8: "BL_UPDATE",
9: "BL_DELETE",
}
var BinlogTransaction_Statement_Category_value = map[string]int32{
"BL_UNRECOGNIZED": 0,
"BL_BEGIN": 1,
"BL_COMMIT": 2,
"BL_ROLLBACK": 3,
"BL_DML_DEPRECATED": 4,
"BL_DDL": 5,
"BL_SET": 6,
"BL_INSERT": 7,
"BL_UPDATE": 8,
"BL_DELETE": 9,
}
func (x BinlogTransaction_Statement_Category) String() string {
return proto.EnumName(BinlogTransaction_Statement_Category_name, int32(x))
}
func (BinlogTransaction_Statement_Category) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{1, 0, 0}
}
// Charset is the per-statement charset info from a QUERY_EVENT binlog entry.
type Charset struct {
// @@session.character_set_client
Client int32 `protobuf:"varint,1,opt,name=client,proto3" json:"client,omitempty"`
// @@session.collation_connection
Conn int32 `protobuf:"varint,2,opt,name=conn,proto3" json:"conn,omitempty"`
// @@session.collation_server
Server int32 `protobuf:"varint,3,opt,name=server,proto3" json:"server,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Charset) Reset() { *m = Charset{} }
func (m *Charset) String() string { return proto.CompactTextString(m) }
func (*Charset) ProtoMessage() {}
func (*Charset) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{0}
}
func (m *Charset) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Charset.Unmarshal(m, b)
}
func (m *Charset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Charset.Marshal(b, m, deterministic)
}
func (dst *Charset) XXX_Merge(src proto.Message) {
xxx_messageInfo_Charset.Merge(dst, src)
}
func (m *Charset) XXX_Size() int {
return xxx_messageInfo_Charset.Size(m)
}
func (m *Charset) XXX_DiscardUnknown() {
xxx_messageInfo_Charset.DiscardUnknown(m)
}
var xxx_messageInfo_Charset proto.InternalMessageInfo
func (m *Charset) GetClient() int32 {
if m != nil {
return m.Client
}
return 0
}
func (m *Charset) GetConn() int32 {
if m != nil {
return m.Conn
}
return 0
}
func (m *Charset) GetServer() int32 {
if m != nil {
return m.Server
}
return 0
}
// BinlogTransaction describes a transaction inside the binlogs.
// It is streamed by vttablet for filtered replication, used during resharding.
type BinlogTransaction struct {
// the statements in this transaction
Statements []*BinlogTransaction_Statement `protobuf:"bytes,1,rep,name=statements,proto3" json:"statements,omitempty"`
// The Event Token for this event.
EventToken *query.EventToken `protobuf:"bytes,4,opt,name=event_token,json=eventToken,proto3" json:"event_token,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BinlogTransaction) Reset() { *m = BinlogTransaction{} }
func (m *BinlogTransaction) String() string { return proto.CompactTextString(m) }
func (*BinlogTransaction) ProtoMessage() {}
func (*BinlogTransaction) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{1}
}
func (m *BinlogTransaction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BinlogTransaction.Unmarshal(m, b)
}
func (m *BinlogTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BinlogTransaction.Marshal(b, m, deterministic)
}
func (dst *BinlogTransaction) XXX_Merge(src proto.Message) {
xxx_messageInfo_BinlogTransaction.Merge(dst, src)
}
func (m *BinlogTransaction) XXX_Size() int {
return xxx_messageInfo_BinlogTransaction.Size(m)
}
func (m *BinlogTransaction) XXX_DiscardUnknown() {
xxx_messageInfo_BinlogTransaction.DiscardUnknown(m)
}
var xxx_messageInfo_BinlogTransaction proto.InternalMessageInfo
func (m *BinlogTransaction) GetStatements() []*BinlogTransaction_Statement {
if m != nil {
return m.Statements
}
return nil
}
func (m *BinlogTransaction) GetEventToken() *query.EventToken {
if m != nil {
return m.EventToken
}
return nil
}
type BinlogTransaction_Statement struct {
// what type of statement is this?
Category BinlogTransaction_Statement_Category `protobuf:"varint,1,opt,name=category,proto3,enum=binlogdata.BinlogTransaction_Statement_Category" json:"category,omitempty"`
// charset of this statement, if different from pre-negotiated default.
Charset *Charset `protobuf:"bytes,2,opt,name=charset,proto3" json:"charset,omitempty"`
// the sql
Sql []byte `protobuf:"bytes,3,opt,name=sql,proto3" json:"sql,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BinlogTransaction_Statement) Reset() { *m = BinlogTransaction_Statement{} }
func (m *BinlogTransaction_Statement) String() string { return proto.CompactTextString(m) }
func (*BinlogTransaction_Statement) ProtoMessage() {}
func (*BinlogTransaction_Statement) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{1, 0}
}
func (m *BinlogTransaction_Statement) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BinlogTransaction_Statement.Unmarshal(m, b)
}
func (m *BinlogTransaction_Statement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BinlogTransaction_Statement.Marshal(b, m, deterministic)
}
func (dst *BinlogTransaction_Statement) XXX_Merge(src proto.Message) {
xxx_messageInfo_BinlogTransaction_Statement.Merge(dst, src)
}
func (m *BinlogTransaction_Statement) XXX_Size() int {
return xxx_messageInfo_BinlogTransaction_Statement.Size(m)
}
func (m *BinlogTransaction_Statement) XXX_DiscardUnknown() {
xxx_messageInfo_BinlogTransaction_Statement.DiscardUnknown(m)
}
var xxx_messageInfo_BinlogTransaction_Statement proto.InternalMessageInfo
func (m *BinlogTransaction_Statement) GetCategory() BinlogTransaction_Statement_Category {
if m != nil {
return m.Category
}
return BinlogTransaction_Statement_BL_UNRECOGNIZED
}
func (m *BinlogTransaction_Statement) GetCharset() *Charset {
if m != nil {
return m.Charset
}
return nil
}
func (m *BinlogTransaction_Statement) GetSql() []byte {
if m != nil {
return m.Sql
}
return nil
}
// StreamKeyRangeRequest is the payload to StreamKeyRange
type StreamKeyRangeRequest struct {
// where to start
Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"`
// what to get
KeyRange *topodata.KeyRange `protobuf:"bytes,2,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"`
// default charset on the player side
Charset *Charset `protobuf:"bytes,3,opt,name=charset,proto3" json:"charset,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *StreamKeyRangeRequest) Reset() { *m = StreamKeyRangeRequest{} }
func (m *StreamKeyRangeRequest) String() string { return proto.CompactTextString(m) }
func (*StreamKeyRangeRequest) ProtoMessage() {}
func (*StreamKeyRangeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{2}
}
func (m *StreamKeyRangeRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamKeyRangeRequest.Unmarshal(m, b)
}
func (m *StreamKeyRangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_StreamKeyRangeRequest.Marshal(b, m, deterministic)
}
func (dst *StreamKeyRangeRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamKeyRangeRequest.Merge(dst, src)
}
func (m *StreamKeyRangeRequest) XXX_Size() int {
return xxx_messageInfo_StreamKeyRangeRequest.Size(m)
}
func (m *StreamKeyRangeRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StreamKeyRangeRequest.DiscardUnknown(m)
}
var xxx_messageInfo_StreamKeyRangeRequest proto.InternalMessageInfo
func (m *StreamKeyRangeRequest) GetPosition() string {
if m != nil {
return m.Position
}
return ""
}
func (m *StreamKeyRangeRequest) GetKeyRange() *topodata.KeyRange {
if m != nil {
return m.KeyRange
}
return nil
}
func (m *StreamKeyRangeRequest) GetCharset() *Charset {
if m != nil {
return m.Charset
}
return nil
}
// StreamKeyRangeResponse is the response from StreamKeyRange
type StreamKeyRangeResponse struct {
BinlogTransaction *BinlogTransaction `protobuf:"bytes,1,opt,name=binlog_transaction,json=binlogTransaction,proto3" json:"binlog_transaction,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *StreamKeyRangeResponse) Reset() { *m = StreamKeyRangeResponse{} }
func (m *StreamKeyRangeResponse) String() string { return proto.CompactTextString(m) }
func (*StreamKeyRangeResponse) ProtoMessage() {}
func (*StreamKeyRangeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{3}
}
func (m *StreamKeyRangeResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamKeyRangeResponse.Unmarshal(m, b)
}
func (m *StreamKeyRangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_StreamKeyRangeResponse.Marshal(b, m, deterministic)
}
func (dst *StreamKeyRangeResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamKeyRangeResponse.Merge(dst, src)
}
func (m *StreamKeyRangeResponse) XXX_Size() int {
return xxx_messageInfo_StreamKeyRangeResponse.Size(m)
}
func (m *StreamKeyRangeResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StreamKeyRangeResponse.DiscardUnknown(m)
}
var xxx_messageInfo_StreamKeyRangeResponse proto.InternalMessageInfo
func (m *StreamKeyRangeResponse) GetBinlogTransaction() *BinlogTransaction {
if m != nil {
return m.BinlogTransaction
}
return nil
}
// StreamTablesRequest is the payload to StreamTables
type StreamTablesRequest struct {
// where to start
Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"`
// what to get
Tables []string `protobuf:"bytes,2,rep,name=tables,proto3" json:"tables,omitempty"`
// default charset on the player side
Charset *Charset `protobuf:"bytes,3,opt,name=charset,proto3" json:"charset,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *StreamTablesRequest) Reset() { *m = StreamTablesRequest{} }
func (m *StreamTablesRequest) String() string { return proto.CompactTextString(m) }
func (*StreamTablesRequest) ProtoMessage() {}
func (*StreamTablesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{4}
}
func (m *StreamTablesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamTablesRequest.Unmarshal(m, b)
}
func (m *StreamTablesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_StreamTablesRequest.Marshal(b, m, deterministic)
}
func (dst *StreamTablesRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamTablesRequest.Merge(dst, src)
}
func (m *StreamTablesRequest) XXX_Size() int {
return xxx_messageInfo_StreamTablesRequest.Size(m)
}
func (m *StreamTablesRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StreamTablesRequest.DiscardUnknown(m)
}
var xxx_messageInfo_StreamTablesRequest proto.InternalMessageInfo
func (m *StreamTablesRequest) GetPosition() string {
if m != nil {
return m.Position
}
return ""
}
func (m *StreamTablesRequest) GetTables() []string {
if m != nil {
return m.Tables
}
return nil
}
func (m *StreamTablesRequest) GetCharset() *Charset {
if m != nil {
return m.Charset
}
return nil
}
// StreamTablesResponse is the response from StreamTables
type StreamTablesResponse struct {
BinlogTransaction *BinlogTransaction `protobuf:"bytes,1,opt,name=binlog_transaction,json=binlogTransaction,proto3" json:"binlog_transaction,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *StreamTablesResponse) Reset() { *m = StreamTablesResponse{} }
func (m *StreamTablesResponse) String() string { return proto.CompactTextString(m) }
func (*StreamTablesResponse) ProtoMessage() {}
func (*StreamTablesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{5}
}
func (m *StreamTablesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamTablesResponse.Unmarshal(m, b)
}
func (m *StreamTablesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_StreamTablesResponse.Marshal(b, m, deterministic)
}
func (dst *StreamTablesResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamTablesResponse.Merge(dst, src)
}
func (m *StreamTablesResponse) XXX_Size() int {
return xxx_messageInfo_StreamTablesResponse.Size(m)
}
func (m *StreamTablesResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StreamTablesResponse.DiscardUnknown(m)
}
var xxx_messageInfo_StreamTablesResponse proto.InternalMessageInfo
func (m *StreamTablesResponse) GetBinlogTransaction() *BinlogTransaction {
if m != nil {
return m.BinlogTransaction
}
return nil
}
// Rule represents one rule.
type Rule struct {
// match can be a table name or a regular expression
// delineated by '/' and '/'.
Match string `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
// filter can be an empty string or keyrange if the match
// is a regular expression. Otherwise, it must be a select
// query.
Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Rule) Reset() { *m = Rule{} }
func (m *Rule) String() string { return proto.CompactTextString(m) }
func (*Rule) ProtoMessage() {}
func (*Rule) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{6}
}
func (m *Rule) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Rule.Unmarshal(m, b)
}
func (m *Rule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Rule.Marshal(b, m, deterministic)
}
func (dst *Rule) XXX_Merge(src proto.Message) {
xxx_messageInfo_Rule.Merge(dst, src)
}
func (m *Rule) XXX_Size() int {
return xxx_messageInfo_Rule.Size(m)
}
func (m *Rule) XXX_DiscardUnknown() {
xxx_messageInfo_Rule.DiscardUnknown(m)
}
var xxx_messageInfo_Rule proto.InternalMessageInfo
func (m *Rule) GetMatch() string {
if m != nil {
return m.Match
}
return ""
}
func (m *Rule) GetFilter() string {
if m != nil {
return m.Filter
}
return ""
}
// Filter represents a list of ordered rules. First match
// wins.
type Filter struct {
Rules []*Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Filter) Reset() { *m = Filter{} }
func (m *Filter) String() string { return proto.CompactTextString(m) }
func (*Filter) ProtoMessage() {}
func (*Filter) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{7}
}
func (m *Filter) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Filter.Unmarshal(m, b)
}
func (m *Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Filter.Marshal(b, m, deterministic)
}
func (dst *Filter) XXX_Merge(src proto.Message) {
xxx_messageInfo_Filter.Merge(dst, src)
}
func (m *Filter) XXX_Size() int {
return xxx_messageInfo_Filter.Size(m)
}
func (m *Filter) XXX_DiscardUnknown() {
xxx_messageInfo_Filter.DiscardUnknown(m)
}
var xxx_messageInfo_Filter proto.InternalMessageInfo
func (m *Filter) GetRules() []*Rule {
if m != nil {
return m.Rules
}
return nil
}
// BinlogSource specifies the source and filter parameters for
// Filtered Replication. It currently supports a keyrange
// or a list of tables.
type BinlogSource struct {
// the source keyspace
Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
// the source shard
Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
// the source tablet type
TabletType topodata.TabletType `protobuf:"varint,3,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"`
// key_range is set if the request is for a keyrange
KeyRange *topodata.KeyRange `protobuf:"bytes,4,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"`
// tables is set if the request is for a list of tables
Tables []string `protobuf:"bytes,5,rep,name=tables,proto3" json:"tables,omitempty"`
// filter is set if we're using the generalized representation
// for the filter.
Filter *Filter `protobuf:"bytes,6,opt,name=filter,proto3" json:"filter,omitempty"`
// on_ddl specifies the action to be taken when a DDL is encountered.
OnDdl OnDDLAction `protobuf:"varint,7,opt,name=on_ddl,json=onDdl,proto3,enum=binlogdata.OnDDLAction" json:"on_ddl,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BinlogSource) Reset() { *m = BinlogSource{} }
func (m *BinlogSource) String() string { return proto.CompactTextString(m) }
func (*BinlogSource) ProtoMessage() {}
func (*BinlogSource) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{8}
}
func (m *BinlogSource) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BinlogSource.Unmarshal(m, b)
}
func (m *BinlogSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BinlogSource.Marshal(b, m, deterministic)
}
func (dst *BinlogSource) XXX_Merge(src proto.Message) {
xxx_messageInfo_BinlogSource.Merge(dst, src)
}
func (m *BinlogSource) XXX_Size() int {
return xxx_messageInfo_BinlogSource.Size(m)
}
func (m *BinlogSource) XXX_DiscardUnknown() {
xxx_messageInfo_BinlogSource.DiscardUnknown(m)
}
var xxx_messageInfo_BinlogSource proto.InternalMessageInfo
func (m *BinlogSource) GetKeyspace() string {
if m != nil {
return m.Keyspace
}
return ""
}
func (m *BinlogSource) GetShard() string {
if m != nil {
return m.Shard
}
return ""
}
func (m *BinlogSource) GetTabletType() topodata.TabletType {
if m != nil {
return m.TabletType
}
return topodata.TabletType_UNKNOWN
}
func (m *BinlogSource) GetKeyRange() *topodata.KeyRange {
if m != nil {
return m.KeyRange
}
return nil
}
func (m *BinlogSource) GetTables() []string {
if m != nil {
return m.Tables
}
return nil
}
func (m *BinlogSource) GetFilter() *Filter {
if m != nil {
return m.Filter
}
return nil
}
func (m *BinlogSource) GetOnDdl() OnDDLAction {
if m != nil {
return m.OnDdl
}
return OnDDLAction_IGNORE
}
// RowChange represents one row change
type RowChange struct {
Before *query.Row `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"`
After *query.Row `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RowChange) Reset() { *m = RowChange{} }
func (m *RowChange) String() string { return proto.CompactTextString(m) }
func (*RowChange) ProtoMessage() {}
func (*RowChange) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{9}
}
func (m *RowChange) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RowChange.Unmarshal(m, b)
}
func (m *RowChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RowChange.Marshal(b, m, deterministic)
}
func (dst *RowChange) XXX_Merge(src proto.Message) {
xxx_messageInfo_RowChange.Merge(dst, src)
}
func (m *RowChange) XXX_Size() int {
return xxx_messageInfo_RowChange.Size(m)
}
func (m *RowChange) XXX_DiscardUnknown() {
xxx_messageInfo_RowChange.DiscardUnknown(m)
}
var xxx_messageInfo_RowChange proto.InternalMessageInfo
func (m *RowChange) GetBefore() *query.Row {
if m != nil {
return m.Before
}
return nil
}
func (m *RowChange) GetAfter() *query.Row {
if m != nil {
return m.After
}
return nil
}
// RowEvent represent row events for one table
type RowEvent struct {
TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"`
RowChanges []*RowChange `protobuf:"bytes,2,rep,name=row_changes,json=rowChanges,proto3" json:"row_changes,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RowEvent) Reset() { *m = RowEvent{} }
func (m *RowEvent) String() string { return proto.CompactTextString(m) }
func (*RowEvent) ProtoMessage() {}
func (*RowEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{10}
}
func (m *RowEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RowEvent.Unmarshal(m, b)
}
func (m *RowEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RowEvent.Marshal(b, m, deterministic)
}
func (dst *RowEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_RowEvent.Merge(dst, src)
}
func (m *RowEvent) XXX_Size() int {
return xxx_messageInfo_RowEvent.Size(m)
}
func (m *RowEvent) XXX_DiscardUnknown() {
xxx_messageInfo_RowEvent.DiscardUnknown(m)
}
var xxx_messageInfo_RowEvent proto.InternalMessageInfo
func (m *RowEvent) GetTableName() string {
if m != nil {
return m.TableName
}
return ""
}
func (m *RowEvent) GetRowChanges() []*RowChange {
if m != nil {
return m.RowChanges
}
return nil
}
type FieldEvent struct {
TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"`
Fields []*query.Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FieldEvent) Reset() { *m = FieldEvent{} }
func (m *FieldEvent) String() string { return proto.CompactTextString(m) }
func (*FieldEvent) ProtoMessage() {}
func (*FieldEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{11}
}
func (m *FieldEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FieldEvent.Unmarshal(m, b)
}
func (m *FieldEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FieldEvent.Marshal(b, m, deterministic)
}
func (dst *FieldEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_FieldEvent.Merge(dst, src)
}
func (m *FieldEvent) XXX_Size() int {
return xxx_messageInfo_FieldEvent.Size(m)
}
func (m *FieldEvent) XXX_DiscardUnknown() {
xxx_messageInfo_FieldEvent.DiscardUnknown(m)
}
var xxx_messageInfo_FieldEvent proto.InternalMessageInfo
func (m *FieldEvent) GetTableName() string {
if m != nil {
return m.TableName
}
return ""
}
func (m *FieldEvent) GetFields() []*query.Field {
if m != nil {
return m.Fields
}
return nil
}
type ShardGtid struct {
Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ShardGtid) Reset() { *m = ShardGtid{} }
func (m *ShardGtid) String() string { return proto.CompactTextString(m) }
func (*ShardGtid) ProtoMessage() {}
func (*ShardGtid) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{12}
}
func (m *ShardGtid) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShardGtid.Unmarshal(m, b)
}
func (m *ShardGtid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ShardGtid.Marshal(b, m, deterministic)
}
func (dst *ShardGtid) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardGtid.Merge(dst, src)
}
func (m *ShardGtid) XXX_Size() int {
return xxx_messageInfo_ShardGtid.Size(m)
}
func (m *ShardGtid) XXX_DiscardUnknown() {
xxx_messageInfo_ShardGtid.DiscardUnknown(m)
}
var xxx_messageInfo_ShardGtid proto.InternalMessageInfo
func (m *ShardGtid) GetKeyspace() string {
if m != nil {
return m.Keyspace
}
return ""
}
func (m *ShardGtid) GetShard() string {
if m != nil {
return m.Shard
}
return ""
}
func (m *ShardGtid) GetGtid() string {
if m != nil {
return m.Gtid
}
return ""
}
type VGtid struct {
ShardGtids []*ShardGtid `protobuf:"bytes,1,rep,name=shard_gtids,json=shardGtids,proto3" json:"shard_gtids,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VGtid) Reset() { *m = VGtid{} }
func (m *VGtid) String() string { return proto.CompactTextString(m) }
func (*VGtid) ProtoMessage() {}
func (*VGtid) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{13}
}
func (m *VGtid) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VGtid.Unmarshal(m, b)
}
func (m *VGtid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VGtid.Marshal(b, m, deterministic)
}
func (dst *VGtid) XXX_Merge(src proto.Message) {
xxx_messageInfo_VGtid.Merge(dst, src)
}
func (m *VGtid) XXX_Size() int {
return xxx_messageInfo_VGtid.Size(m)
}
func (m *VGtid) XXX_DiscardUnknown() {
xxx_messageInfo_VGtid.DiscardUnknown(m)
}
var xxx_messageInfo_VGtid proto.InternalMessageInfo
func (m *VGtid) GetShardGtids() []*ShardGtid {
if m != nil {
return m.ShardGtids
}
return nil
}
// VEvent represents a vstream event
type VEvent struct {
Type VEventType `protobuf:"varint,1,opt,name=type,proto3,enum=binlogdata.VEventType" json:"type,omitempty"`
Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"`
Ddl string `protobuf:"bytes,4,opt,name=ddl,proto3" json:"ddl,omitempty"`
RowEvent *RowEvent `protobuf:"bytes,5,opt,name=row_event,json=rowEvent,proto3" json:"row_event,omitempty"`
FieldEvent *FieldEvent `protobuf:"bytes,6,opt,name=field_event,json=fieldEvent,proto3" json:"field_event,omitempty"`
Vgtid *VGtid `protobuf:"bytes,7,opt,name=vgtid,proto3" json:"vgtid,omitempty"`
// current_time specifies the current time to handle clock skew.
CurrentTime int64 `protobuf:"varint,20,opt,name=current_time,json=currentTime,proto3" json:"current_time,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VEvent) Reset() { *m = VEvent{} }
func (m *VEvent) String() string { return proto.CompactTextString(m) }
func (*VEvent) ProtoMessage() {}
func (*VEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{14}
}
func (m *VEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VEvent.Unmarshal(m, b)
}
func (m *VEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VEvent.Marshal(b, m, deterministic)
}
func (dst *VEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_VEvent.Merge(dst, src)
}
func (m *VEvent) XXX_Size() int {
return xxx_messageInfo_VEvent.Size(m)
}
func (m *VEvent) XXX_DiscardUnknown() {
xxx_messageInfo_VEvent.DiscardUnknown(m)
}
var xxx_messageInfo_VEvent proto.InternalMessageInfo
func (m *VEvent) GetType() VEventType {
if m != nil {
return m.Type
}
return VEventType_UNKNOWN
}
func (m *VEvent) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *VEvent) GetGtid() string {
if m != nil {
return m.Gtid
}
return ""
}
func (m *VEvent) GetDdl() string {
if m != nil {
return m.Ddl
}
return ""
}
func (m *VEvent) GetRowEvent() *RowEvent {
if m != nil {
return m.RowEvent
}
return nil
}
func (m *VEvent) GetFieldEvent() *FieldEvent {
if m != nil {
return m.FieldEvent
}
return nil
}
func (m *VEvent) GetVgtid() *VGtid {
if m != nil {
return m.Vgtid
}
return nil
}
func (m *VEvent) GetCurrentTime() int64 {
if m != nil {
return m.CurrentTime
}
return 0
}
// VStreamRequest is the payload for VStream
type VStreamRequest struct {
EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"`
ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"`
Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
Position string `protobuf:"bytes,4,opt,name=position,proto3" json:"position,omitempty"`
Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VStreamRequest) Reset() { *m = VStreamRequest{} }
func (m *VStreamRequest) String() string { return proto.CompactTextString(m) }
func (*VStreamRequest) ProtoMessage() {}
func (*VStreamRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{15}
}
func (m *VStreamRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VStreamRequest.Unmarshal(m, b)
}
func (m *VStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VStreamRequest.Marshal(b, m, deterministic)
}
func (dst *VStreamRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRequest.Merge(dst, src)
}
func (m *VStreamRequest) XXX_Size() int {
return xxx_messageInfo_VStreamRequest.Size(m)
}
func (m *VStreamRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRequest.DiscardUnknown(m)
}
var xxx_messageInfo_VStreamRequest proto.InternalMessageInfo
func (m *VStreamRequest) GetEffectiveCallerId() *vtrpc.CallerID {
if m != nil {
return m.EffectiveCallerId
}
return nil
}
func (m *VStreamRequest) GetImmediateCallerId() *query.VTGateCallerID {
if m != nil {
return m.ImmediateCallerId
}
return nil
}
func (m *VStreamRequest) GetTarget() *query.Target {
if m != nil {
return m.Target
}
return nil
}
func (m *VStreamRequest) GetPosition() string {
if m != nil {
return m.Position
}
return ""
}
func (m *VStreamRequest) GetFilter() *Filter {
if m != nil {
return m.Filter
}
return nil
}
// VStreamResponse is the response from VStream
type VStreamResponse struct {
Events []*VEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VStreamResponse) Reset() { *m = VStreamResponse{} }
func (m *VStreamResponse) String() string { return proto.CompactTextString(m) }
func (*VStreamResponse) ProtoMessage() {}
func (*VStreamResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{16}
}
func (m *VStreamResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VStreamResponse.Unmarshal(m, b)
}
func (m *VStreamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VStreamResponse.Marshal(b, m, deterministic)
}
func (dst *VStreamResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamResponse.Merge(dst, src)
}
func (m *VStreamResponse) XXX_Size() int {
return xxx_messageInfo_VStreamResponse.Size(m)
}
func (m *VStreamResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamResponse.DiscardUnknown(m)
}
var xxx_messageInfo_VStreamResponse proto.InternalMessageInfo
func (m *VStreamResponse) GetEvents() []*VEvent {
if m != nil {
return m.Events
}
return nil
}
// VStreamRowsRequest is the payload for VStreamRows
type VStreamRowsRequest struct {
EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"`
ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"`
Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"`
Lastpk *query.QueryResult `protobuf:"bytes,5,opt,name=lastpk,proto3" json:"lastpk,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VStreamRowsRequest) Reset() { *m = VStreamRowsRequest{} }
func (m *VStreamRowsRequest) String() string { return proto.CompactTextString(m) }
func (*VStreamRowsRequest) ProtoMessage() {}
func (*VStreamRowsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{17}
}
func (m *VStreamRowsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VStreamRowsRequest.Unmarshal(m, b)
}
func (m *VStreamRowsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VStreamRowsRequest.Marshal(b, m, deterministic)
}
func (dst *VStreamRowsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRowsRequest.Merge(dst, src)
}
func (m *VStreamRowsRequest) XXX_Size() int {
return xxx_messageInfo_VStreamRowsRequest.Size(m)
}
func (m *VStreamRowsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRowsRequest.DiscardUnknown(m)
}
var xxx_messageInfo_VStreamRowsRequest proto.InternalMessageInfo
func (m *VStreamRowsRequest) GetEffectiveCallerId() *vtrpc.CallerID {
if m != nil {
return m.EffectiveCallerId
}
return nil
}
func (m *VStreamRowsRequest) GetImmediateCallerId() *query.VTGateCallerID {
if m != nil {
return m.ImmediateCallerId
}
return nil
}
func (m *VStreamRowsRequest) GetTarget() *query.Target {
if m != nil {
return m.Target
}
return nil
}
func (m *VStreamRowsRequest) GetQuery() string {
if m != nil {
return m.Query
}
return ""
}
func (m *VStreamRowsRequest) GetLastpk() *query.QueryResult {
if m != nil {
return m.Lastpk
}
return nil
}
// VStreamRowsResponse is the response from VStreamRows
type VStreamRowsResponse struct {
Fields []*query.Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"`
Pkfields []*query.Field `protobuf:"bytes,2,rep,name=pkfields,proto3" json:"pkfields,omitempty"`
Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"`
Rows []*query.Row `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"`
Lastpk *query.Row `protobuf:"bytes,5,opt,name=lastpk,proto3" json:"lastpk,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VStreamRowsResponse) Reset() { *m = VStreamRowsResponse{} }
func (m *VStreamRowsResponse) String() string { return proto.CompactTextString(m) }
func (*VStreamRowsResponse) ProtoMessage() {}
func (*VStreamRowsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_binlogdata_e3df2e837eaa5305, []int{18}
}
func (m *VStreamRowsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VStreamRowsResponse.Unmarshal(m, b)
}
func (m *VStreamRowsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VStreamRowsResponse.Marshal(b, m, deterministic)
}
func (dst *VStreamRowsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRowsResponse.Merge(dst, src)
}
func (m *VStreamRowsResponse) XXX_Size() int {
return xxx_messageInfo_VStreamRowsResponse.Size(m)
}
func (m *VStreamRowsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRowsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_VStreamRowsResponse proto.InternalMessageInfo
func (m *VStreamRowsResponse) GetFields() []*query.Field {
if m != nil {
return m.Fields
}
return nil
}
func (m *VStreamRowsResponse) GetPkfields() []*query.Field {
if m != nil {
return m.Pkfields
}
return nil
}
func (m *VStreamRowsResponse) GetGtid() string {
if m != nil {
return m.Gtid
}
return ""
}
func (m *VStreamRowsResponse) GetRows() []*query.Row {
if m != nil {
return m.Rows
}
return nil
}
func (m *VStreamRowsResponse) GetLastpk() *query.Row {
if m != nil {
return m.Lastpk
}
return nil
}
func init() {
proto.RegisterType((*Charset)(nil), "binlogdata.Charset")
proto.RegisterType((*BinlogTransaction)(nil), "binlogdata.BinlogTransaction")
proto.RegisterType((*BinlogTransaction_Statement)(nil), "binlogdata.BinlogTransaction.Statement")
proto.RegisterType((*StreamKeyRangeRequest)(nil), "binlogdata.StreamKeyRangeRequest")
proto.RegisterType((*StreamKeyRangeResponse)(nil), "binlogdata.StreamKeyRangeResponse")
proto.RegisterType((*StreamTablesRequest)(nil), "binlogdata.StreamTablesRequest")
proto.RegisterType((*StreamTablesResponse)(nil), "binlogdata.StreamTablesResponse")
proto.RegisterType((*Rule)(nil), "binlogdata.Rule")
proto.RegisterType((*Filter)(nil), "binlogdata.Filter")
proto.RegisterType((*BinlogSource)(nil), "binlogdata.BinlogSource")
proto.RegisterType((*RowChange)(nil), "binlogdata.RowChange")
proto.RegisterType((*RowEvent)(nil), "binlogdata.RowEvent")
proto.RegisterType((*FieldEvent)(nil), "binlogdata.FieldEvent")
proto.RegisterType((*ShardGtid)(nil), "binlogdata.ShardGtid")
proto.RegisterType((*VGtid)(nil), "binlogdata.VGtid")
proto.RegisterType((*VEvent)(nil), "binlogdata.VEvent")
proto.RegisterType((*VStreamRequest)(nil), "binlogdata.VStreamRequest")
proto.RegisterType((*VStreamResponse)(nil), "binlogdata.VStreamResponse")
proto.RegisterType((*VStreamRowsRequest)(nil), "binlogdata.VStreamRowsRequest")
proto.RegisterType((*VStreamRowsResponse)(nil), "binlogdata.VStreamRowsResponse")
proto.RegisterEnum("binlogdata.OnDDLAction", OnDDLAction_name, OnDDLAction_value)
proto.RegisterEnum("binlogdata.VEventType", VEventType_name, VEventType_value)
proto.RegisterEnum("binlogdata.BinlogTransaction_Statement_Category", BinlogTransaction_Statement_Category_name, BinlogTransaction_Statement_Category_value)
}
func init() { proto.RegisterFile("binlogdata.proto", fileDescriptor_binlogdata_e3df2e837eaa5305) }
var fileDescriptor_binlogdata_e3df2e837eaa5305 = []byte{
// 1372 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0xdd, 0x72, 0xdb, 0x54,
0x10, 0xae, 0x6d, 0xf9, 0x6f, 0x95, 0x26, 0xca, 0xc9, 0x0f, 0x9e, 0x0c, 0x65, 0x82, 0x06, 0x68,
0xc8, 0x0c, 0x4e, 0x31, 0x50, 0xae, 0xa0, 0xe3, 0x1f, 0xd5, 0x75, 0xab, 0xd8, 0xe9, 0xb1, 0x9a,
0x32, 0xbd, 0xd1, 0x28, 0xd2, 0x71, 0xa2, 0x89, 0x2c, 0x39, 0xd2, 0xb1, 0x83, 0x1f, 0x80, 0xe1,
0x01, 0xb8, 0xe5, 0x05, 0xb8, 0xe3, 0x05, 0xb8, 0x63, 0x78, 0x13, 0xde, 0x83, 0x39, 0x3f, 0x92,
0xed, 0xb4, 0xb4, 0x81, 0x19, 0x2e, 0xb8, 0xc9, 0xec, 0xff, 0xd9, 0xfd, 0x76, 0xbd, 0xda, 0x80,
0x76, 0xe6, 0x87, 0x41, 0x74, 0xee, 0x39, 0xd4, 0xa9, 0x4f, 0xe2, 0x88, 0x46, 0x08, 0x16, 0x92,
0x3d, 0x75, 0x46, 0xe3, 0x89, 0x2b, 0x14, 0x7b, 0xea, 0xd5, 0x94, 0xc4, 0x73, 0xc9, 0xac, 0xd3,
0x68, 0x12, 0x2d, 0xbc, 0xf4, 0x63, 0x28, 0xb7, 0x2f, 0x9c, 0x38, 0x21, 0x14, 0xed, 0x42, 0xc9,
0x0d, 0x7c, 0x12, 0xd2, 0x5a, 0x6e, 0x3f, 0x77, 0x50, 0xc4, 0x92, 0x43, 0x08, 0x14, 0x37, 0x0a,
0xc3, 0x5a, 0x9e, 0x4b, 0x39, 0xcd, 0x6c, 0x13, 0x12, 0xcf, 0x48, 0x5c, 0x2b, 0x08, 0x5b, 0xc1,
0xe9, 0x7f, 0x16, 0x60, 0xb3, 0xc5, 0xf3, 0xb0, 0x62, 0x27, 0x4c, 0x1c, 0x97, 0xfa, 0x51, 0x88,
0xba, 0x00, 0x09, 0x75, 0x28, 0x19, 0x93, 0x90, 0x26, 0xb5, 0xdc, 0x7e, 0xe1, 0x40, 0x6d, 0xdc,
0xaf, 0x2f, 0x55, 0xf0, 0x9a, 0x4b, 0x7d, 0x98, 0xda, 0xe3, 0x25, 0x57, 0xd4, 0x00, 0x95, 0xcc,
0x48, 0x48, 0x6d, 0x1a, 0x5d, 0x92, 0xb0, 0xa6, 0xec, 0xe7, 0x0e, 0xd4, 0xc6, 0x66, 0x5d, 0x14,
0x68, 0x30, 0x8d, 0xc5, 0x14, 0x18, 0x48, 0x46, 0xef, 0xfd, 0x91, 0x87, 0x6a, 0x16, 0x0d, 0x99,
0x50, 0x71, 0x1d, 0x4a, 0xce, 0xa3, 0x78, 0xce, 0xcb, 0x5c, 0x6f, 0x3c, 0xb8, 0x65, 0x22, 0xf5,
0xb6, 0xf4, 0xc3, 0x59, 0x04, 0xf4, 0x19, 0x94, 0x5d, 0x81, 0x1e, 0x47, 0x47, 0x6d, 0x6c, 0x2d,
0x07, 0x93, 0xc0, 0xe2, 0xd4, 0x06, 0x69, 0x50, 0x48, 0xae, 0x02, 0x0e, 0xd9, 0x1a, 0x66, 0xa4,
0xfe, 0x4b, 0x0e, 0x2a, 0x69, 0x5c, 0xb4, 0x05, 0x1b, 0x2d, 0xd3, 0x7e, 0xd1, 0xc7, 0x46, 0x7b,
0xd0, 0xed, 0xf7, 0x5e, 0x19, 0x1d, 0xed, 0x0e, 0x5a, 0x83, 0x4a, 0xcb, 0xb4, 0x5b, 0x46, 0xb7,
0xd7, 0xd7, 0x72, 0xe8, 0x2e, 0x54, 0x5b, 0xa6, 0xdd, 0x1e, 0x1c, 0x1f, 0xf7, 0x2c, 0x2d, 0x8f,
0x36, 0x40, 0x6d, 0x99, 0x36, 0x1e, 0x98, 0x66, 0xab, 0xd9, 0x7e, 0xa6, 0x15, 0xd0, 0x0e, 0x6c,
0xb6, 0x4c, 0xbb, 0x73, 0x6c, 0xda, 0x1d, 0xe3, 0x04, 0x1b, 0xed, 0xa6, 0x65, 0x74, 0x34, 0x05,
0x01, 0x94, 0x98, 0xb8, 0x63, 0x6a, 0x45, 0x49, 0x0f, 0x0d, 0x4b, 0x2b, 0xc9, 0x70, 0xbd, 0xfe,
0xd0, 0xc0, 0x96, 0x56, 0x96, 0xec, 0x8b, 0x93, 0x4e, 0xd3, 0x32, 0xb4, 0x8a, 0x64, 0x3b, 0x86,
0x69, 0x58, 0x86, 0x56, 0x7d, 0xaa, 0x54, 0xf2, 0x5a, 0xe1, 0xa9, 0x52, 0x29, 0x68, 0x8a, 0xfe,
0x53, 0x0e, 0x76, 0x86, 0x34, 0x26, 0xce, 0xf8, 0x19, 0x99, 0x63, 0x27, 0x3c, 0x27, 0x98, 0x5c,
0x4d, 0x49, 0x42, 0xd1, 0x1e, 0x54, 0x26, 0x51, 0xe2, 0x33, 0xec, 0x38, 0xc0, 0x55, 0x9c, 0xf1,
0xe8, 0x08, 0xaa, 0x97, 0x64, 0x6e, 0xc7, 0xcc, 0x5e, 0x02, 0x86, 0xea, 0xd9, 0x40, 0x66, 0x91,
0x2a, 0x97, 0x92, 0x5a, 0xc6, 0xb7, 0xf0, 0x6e, 0x7c, 0xf5, 0x11, 0xec, 0xde, 0x4c, 0x2a, 0x99,
0x44, 0x61, 0x42, 0x90, 0x09, 0x48, 0x38, 0xda, 0x74, 0xd1, 0x5b, 0x9e, 0x9f, 0xda, 0xb8, 0xf7,
0xd6, 0x01, 0xc0, 0x9b, 0x67, 0x37, 0x45, 0xfa, 0xf7, 0xb0, 0x25, 0xde, 0xb1, 0x9c, 0xb3, 0x80,
0x24, 0xb7, 0x29, 0x7d, 0x17, 0x4a, 0x94, 0x1b, 0xd7, 0xf2, 0xfb, 0x85, 0x83, 0x2a, 0x96, 0xdc,
0x3f, 0xad, 0xd0, 0x83, 0xed, 0xd5, 0x97, 0xff, 0x93, 0xfa, 0xbe, 0x04, 0x05, 0x4f, 0x03, 0x82,
0xb6, 0xa1, 0x38, 0x76, 0xa8, 0x7b, 0x21, 0xab, 0x11, 0x0c, 0x2b, 0x65, 0xe4, 0x07, 0x94, 0xc4,
0xbc, 0x85, 0x55, 0x2c, 0x39, 0xfd, 0x01, 0x94, 0x1e, 0x73, 0x0a, 0x7d, 0x02, 0xc5, 0x78, 0xca,
0x6a, 0x15, 0x3f, 0x75, 0x6d, 0x39, 0x01, 0x16, 0x18, 0x0b, 0xb5, 0xfe, 0x73, 0x1e, 0xd6, 0x44,
0x42, 0xc3, 0x68, 0x1a, 0xbb, 0x84, 0x21, 0x78, 0x49, 0xe6, 0xc9, 0xc4, 0x71, 0x49, 0x8a, 0x60,
0xca, 0xb3, 0x64, 0x92, 0x0b, 0x27, 0xf6, 0xe4, 0xab, 0x82, 0x41, 0x5f, 0x81, 0xca, 0x91, 0xa4,
0x36, 0x9d, 0x4f, 0x08, 0xc7, 0x70, 0xbd, 0xb1, 0xbd, 0x18, 0x2a, 0x8e, 0x13, 0xb5, 0xe6, 0x13,
0x82, 0x81, 0x66, 0xf4, 0xea, 0x24, 0x2a, 0xb7, 0x98, 0xc4, 0x45, 0xff, 0x8a, 0x2b, 0xfd, 0x3b,
0xcc, 0xc0, 0x28, 0xc9, 0x28, 0x4b, 0xb5, 0x0a, 0x38, 0x52, 0x80, 0x50, 0x1d, 0x4a, 0x51, 0x68,
0x7b, 0x5e, 0x50, 0x2b, 0xf3, 0x34, 0xdf, 0x5b, 0xb6, 0x1d, 0x84, 0x9d, 0x8e, 0xd9, 0x14, 0x2d,
0x29, 0x46, 0x61, 0xc7, 0x0b, 0xf4, 0xe7, 0x50, 0xc5, 0xd1, 0x75, 0xfb, 0x82, 0x27, 0xa0, 0x43,
0xe9, 0x8c, 0x8c, 0xa2, 0x98, 0xc8, 0xae, 0x82, 0xdc, 0x7a, 0x38, 0xba, 0xc6, 0x52, 0x83, 0xf6,
0xa1, 0xe8, 0x8c, 0xd2, 0xc6, 0xac, 0x9a, 0x08, 0x85, 0xee, 0x40, 0x05, 0x47, 0xd7, 0x7c, 0x53,
0xa2, 0x7b, 0x20, 0x10, 0xb1, 0x43, 0x67, 0x9c, 0xc2, 0x5d, 0xe5, 0x92, 0xbe, 0x33, 0x26, 0xe8,
0x21, 0xa8, 0x71, 0x74, 0x6d, 0xbb, 0xfc, 0x79, 0x31, 0xb6, 0x6a, 0x63, 0x67, 0xa5, 0x95, 0x69,
0x72, 0x18, 0xe2, 0x94, 0x4c, 0xf4, 0xe7, 0x00, 0x8f, 0x7d, 0x12, 0x78, 0xb7, 0x7a, 0xe4, 0x23,
0x06, 0x1f, 0x09, 0xbc, 0x34, 0xfe, 0x9a, 0x4c, 0x99, 0x47, 0xc0, 0x52, 0xc7, 0x80, 0x18, 0xb2,
0x6e, 0x77, 0xa9, 0xef, 0xfd, 0x8b, 0x19, 0x41, 0xa0, 0x9c, 0x53, 0xdf, 0xe3, 0xc3, 0x51, 0xc5,
0x9c, 0xd6, 0x1f, 0x41, 0xf1, 0x94, 0x87, 0x7b, 0x08, 0x2a, 0xb7, 0xb2, 0x99, 0x38, 0x9d, 0xd8,
0x95, 0x32, 0xb3, 0xa7, 0x31, 0x24, 0x29, 0x99, 0xe8, 0xbf, 0xe6, 0xa1, 0x74, 0x2a, 0x6a, 0x3c,
0x04, 0x85, 0x0f, 0x9f, 0xf8, 0x9e, 0xec, 0x2e, 0xfb, 0x0a, 0x0b, 0x3e, 0x7e, 0xdc, 0x06, 0xbd,
0x0f, 0x55, 0xea, 0x8f, 0x49, 0x42, 0x9d, 0xf1, 0x84, 0x67, 0x59, 0xc0, 0x0b, 0xc1, 0x9b, 0x32,
0x65, 0x1f, 0x0d, 0x36, 0x32, 0x0a, 0x17, 0x31, 0x12, 0x7d, 0x0e, 0x55, 0xd6, 0x19, 0xfe, 0x8d,
0xab, 0x15, 0x79, 0xab, 0xb7, 0x6f, 0xf4, 0x85, 0x3f, 0x8b, 0x2b, 0x71, 0xda, 0xeb, 0xaf, 0x41,
0xe5, 0x58, 0x4a, 0x27, 0x31, 0xab, 0xbb, 0xab, 0xb3, 0x9a, 0xf6, 0x0c, 0xc3, 0x68, 0xd1, 0xbf,
0xfb, 0x50, 0x9c, 0xf1, 0x94, 0xca, 0xf2, 0x5b, 0xbb, 0x5c, 0x1c, 0x07, 0x45, 0xe8, 0xd1, 0x87,
0xb0, 0xe6, 0x4e, 0xe3, 0x98, 0x7f, 0x9c, 0xfd, 0x31, 0xa9, 0x6d, 0xf3, 0xda, 0x54, 0x29, 0xb3,
0xfc, 0x31, 0xd1, 0x7f, 0xcc, 0xc3, 0xfa, 0xa9, 0x58, 0x5f, 0xe9, 0xca, 0x7c, 0x04, 0x5b, 0x64,
0x34, 0x22, 0x2e, 0xf5, 0x67, 0xc4, 0x76, 0x9d, 0x20, 0x20, 0xb1, 0xed, 0x7b, 0x72, 0xc4, 0x37,
0xea, 0xe2, 0x8c, 0x69, 0x73, 0x79, 0xaf, 0x83, 0x37, 0x33, 0x5b, 0x29, 0xf2, 0x90, 0x01, 0x5b,
0xfe, 0x78, 0x4c, 0x3c, 0xdf, 0xa1, 0xcb, 0x01, 0xc4, 0x0f, 0x60, 0x47, 0x4e, 0xd3, 0xa9, 0xd5,
0x75, 0x28, 0x59, 0x84, 0xc9, 0x3c, 0xb2, 0x30, 0x1f, 0xb3, 0x9f, 0x77, 0x7c, 0x9e, 0x6d, 0xe1,
0xbb, 0xd2, 0xd3, 0xe2, 0x42, 0x2c, 0x95, 0x2b, 0x1b, 0x5e, 0xb9, 0xb1, 0xe1, 0x17, 0x9b, 0xa0,
0xf8, 0xae, 0x4d, 0xa0, 0x7f, 0x03, 0x1b, 0x19, 0x10, 0x72, 0x83, 0x1f, 0x42, 0x89, 0xf7, 0x26,
0x1d, 0x41, 0xf4, 0xfa, 0x18, 0x61, 0x69, 0xa1, 0xff, 0x90, 0x07, 0x94, 0xfa, 0x47, 0xd7, 0xc9,
0xff, 0x14, 0xcc, 0x6d, 0x28, 0x72, 0xb9, 0x44, 0x52, 0x30, 0x0c, 0x87, 0xc0, 0x49, 0xe8, 0xe4,
0x32, 0x83, 0x51, 0x38, 0x3f, 0x67, 0x7f, 0x31, 0x49, 0xa6, 0x01, 0xc5, 0xd2, 0x42, 0xff, 0x2d,
0x07, 0x5b, 0x2b, 0x38, 0x48, 0x2c, 0x17, 0x5b, 0x25, 0xf7, 0xf7, 0x5b, 0x05, 0x1d, 0x40, 0x65,
0x72, 0xf9, 0x96, 0xed, 0x93, 0x69, 0xdf, 0xf8, 0xb3, 0xfc, 0x00, 0x94, 0x38, 0xba, 0x4e, 0x6a,
0x0a, 0xf7, 0x5c, 0x5e, 0xb5, 0x5c, 0xce, 0xf6, 0xf5, 0x4a, 0x1d, 0x2b, 0xfb, 0x5a, 0x68, 0x0e,
0xbf, 0x05, 0x75, 0x69, 0xed, 0xb3, 0xcb, 0xac, 0xd7, 0xed, 0x0f, 0xb0, 0xa1, 0xdd, 0x41, 0x15,
0x50, 0x86, 0xd6, 0xe0, 0x44, 0xcb, 0x31, 0xca, 0xf8, 0xce, 0x68, 0x8b, 0x6b, 0x8f, 0x51, 0xb6,
0x34, 0x2a, 0x1c, 0xfe, 0x9e, 0x03, 0x58, 0x6c, 0x18, 0xa4, 0x42, 0xf9, 0x45, 0xff, 0x59, 0x7f,
0xf0, 0xb2, 0x2f, 0x02, 0x74, 0xad, 0x5e, 0x47, 0xcb, 0xa1, 0x2a, 0x14, 0xc5, 0xf9, 0x98, 0x67,
0x2f, 0xc8, 0xdb, 0xb1, 0xc0, 0x0e, 0xcb, 0xec, 0x70, 0x54, 0x50, 0x19, 0x0a, 0xd9, 0x79, 0x28,
0xef, 0xc1, 0x12, 0x0b, 0x88, 0x8d, 0x13, 0xb3, 0xd9, 0x36, 0xb4, 0x32, 0x53, 0x64, 0x97, 0x21,
0x40, 0x29, 0x3d, 0x0b, 0x99, 0x27, 0x3b, 0x26, 0x81, 0xbd, 0x33, 0xb0, 0x9e, 0x18, 0x58, 0x53,
0x99, 0x0c, 0x0f, 0x5e, 0x6a, 0x6b, 0x4c, 0xf6, 0xb8, 0x67, 0x98, 0x1d, 0xed, 0x2e, 0xbb, 0x26,
0x9f, 0x18, 0x4d, 0x6c, 0xb5, 0x8c, 0xa6, 0xa5, 0xad, 0x33, 0xcd, 0x29, 0x4f, 0x70, 0xa3, 0xf5,
0xe9, 0xab, 0xfb, 0x33, 0x9f, 0x92, 0x24, 0xa9, 0xfb, 0xd1, 0x91, 0xa0, 0x8e, 0xce, 0xa3, 0xa3,
0x19, 0x3d, 0xe2, 0xff, 0xa3, 0x1c, 0x2d, 0x7e, 0x08, 0x67, 0x25, 0x2e, 0xf9, 0xe2, 0xaf, 0x00,
0x00, 0x00, 0xff, 0xff, 0x59, 0xa0, 0xff, 0x30, 0xff, 0x0c, 0x00, 0x00,
}
...@@ -6,6 +6,7 @@ package vtgate // import "vitess.io/vitess/go/vt/proto/vtgate" ...@@ -6,6 +6,7 @@ package vtgate // import "vitess.io/vitess/go/vt/proto/vtgate"
import proto "github.com/golang/protobuf/proto" import proto "github.com/golang/protobuf/proto"
import fmt "fmt" import fmt "fmt"
import math "math" import math "math"
import binlogdata "vitess.io/vitess/go/vt/proto/binlogdata"
import query "vitess.io/vitess/go/vt/proto/query" import query "vitess.io/vitess/go/vt/proto/query"
import topodata "vitess.io/vitess/go/vt/proto/topodata" import topodata "vitess.io/vitess/go/vt/proto/topodata"
import vtrpc "vitess.io/vitess/go/vt/proto/vtrpc" import vtrpc "vitess.io/vitess/go/vt/proto/vtrpc"
...@@ -53,7 +54,7 @@ func (x TransactionMode) String() string { ...@@ -53,7 +54,7 @@ func (x TransactionMode) String() string {
return proto.EnumName(TransactionMode_name, int32(x)) return proto.EnumName(TransactionMode_name, int32(x))
} }
func (TransactionMode) EnumDescriptor() ([]byte, []int) { func (TransactionMode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{0} return fileDescriptor_vtgate_d9799c8e1157b676, []int{0}
} }
// CommitOrder is used to designate which of the ShardSessions // CommitOrder is used to designate which of the ShardSessions
...@@ -88,7 +89,7 @@ func (x CommitOrder) String() string { ...@@ -88,7 +89,7 @@ func (x CommitOrder) String() string {
return proto.EnumName(CommitOrder_name, int32(x)) return proto.EnumName(CommitOrder_name, int32(x))
} }
func (CommitOrder) EnumDescriptor() ([]byte, []int) { func (CommitOrder) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{1} return fileDescriptor_vtgate_d9799c8e1157b676, []int{1}
} }
// Session objects are exchanged like cookies through various // Session objects are exchanged like cookies through various
...@@ -137,7 +138,7 @@ func (m *Session) Reset() { *m = Session{} } ...@@ -137,7 +138,7 @@ func (m *Session) Reset() { *m = Session{} }
func (m *Session) String() string { return proto.CompactTextString(m) } func (m *Session) String() string { return proto.CompactTextString(m) }
func (*Session) ProtoMessage() {} func (*Session) ProtoMessage() {}
func (*Session) Descriptor() ([]byte, []int) { func (*Session) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{0} return fileDescriptor_vtgate_d9799c8e1157b676, []int{0}
} }
func (m *Session) XXX_Unmarshal(b []byte) error { func (m *Session) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Session.Unmarshal(m, b) return xxx_messageInfo_Session.Unmarshal(m, b)
...@@ -239,7 +240,7 @@ func (m *Session_ShardSession) Reset() { *m = Session_ShardSession{} } ...@@ -239,7 +240,7 @@ func (m *Session_ShardSession) Reset() { *m = Session_ShardSession{} }
func (m *Session_ShardSession) String() string { return proto.CompactTextString(m) } func (m *Session_ShardSession) String() string { return proto.CompactTextString(m) }
func (*Session_ShardSession) ProtoMessage() {} func (*Session_ShardSession) ProtoMessage() {}
func (*Session_ShardSession) Descriptor() ([]byte, []int) { func (*Session_ShardSession) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{0, 0} return fileDescriptor_vtgate_d9799c8e1157b676, []int{0, 0}
} }
func (m *Session_ShardSession) XXX_Unmarshal(b []byte) error { func (m *Session_ShardSession) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Session_ShardSession.Unmarshal(m, b) return xxx_messageInfo_Session_ShardSession.Unmarshal(m, b)
...@@ -297,7 +298,7 @@ func (m *ExecuteRequest) Reset() { *m = ExecuteRequest{} } ...@@ -297,7 +298,7 @@ func (m *ExecuteRequest) Reset() { *m = ExecuteRequest{} }
func (m *ExecuteRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteRequest) ProtoMessage() {} func (*ExecuteRequest) ProtoMessage() {}
func (*ExecuteRequest) Descriptor() ([]byte, []int) { func (*ExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{1} return fileDescriptor_vtgate_d9799c8e1157b676, []int{1}
} }
func (m *ExecuteRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteRequest.Unmarshal(m, b)
...@@ -385,7 +386,7 @@ func (m *ExecuteResponse) Reset() { *m = ExecuteResponse{} } ...@@ -385,7 +386,7 @@ func (m *ExecuteResponse) Reset() { *m = ExecuteResponse{} }
func (m *ExecuteResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteResponse) ProtoMessage() {} func (*ExecuteResponse) ProtoMessage() {}
func (*ExecuteResponse) Descriptor() ([]byte, []int) { func (*ExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{2} return fileDescriptor_vtgate_d9799c8e1157b676, []int{2}
} }
func (m *ExecuteResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteResponse.Unmarshal(m, b)
...@@ -455,7 +456,7 @@ func (m *ExecuteShardsRequest) Reset() { *m = ExecuteShardsRequest{} } ...@@ -455,7 +456,7 @@ func (m *ExecuteShardsRequest) Reset() { *m = ExecuteShardsRequest{} }
func (m *ExecuteShardsRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteShardsRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteShardsRequest) ProtoMessage() {} func (*ExecuteShardsRequest) ProtoMessage() {}
func (*ExecuteShardsRequest) Descriptor() ([]byte, []int) { func (*ExecuteShardsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{3} return fileDescriptor_vtgate_d9799c8e1157b676, []int{3}
} }
func (m *ExecuteShardsRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteShardsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteShardsRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteShardsRequest.Unmarshal(m, b)
...@@ -550,7 +551,7 @@ func (m *ExecuteShardsResponse) Reset() { *m = ExecuteShardsResponse{} } ...@@ -550,7 +551,7 @@ func (m *ExecuteShardsResponse) Reset() { *m = ExecuteShardsResponse{} }
func (m *ExecuteShardsResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteShardsResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteShardsResponse) ProtoMessage() {} func (*ExecuteShardsResponse) ProtoMessage() {}
func (*ExecuteShardsResponse) Descriptor() ([]byte, []int) { func (*ExecuteShardsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{4} return fileDescriptor_vtgate_d9799c8e1157b676, []int{4}
} }
func (m *ExecuteShardsResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteShardsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteShardsResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteShardsResponse.Unmarshal(m, b)
...@@ -621,7 +622,7 @@ func (m *ExecuteKeyspaceIdsRequest) Reset() { *m = ExecuteKeyspaceIdsReq ...@@ -621,7 +622,7 @@ func (m *ExecuteKeyspaceIdsRequest) Reset() { *m = ExecuteKeyspaceIdsReq
func (m *ExecuteKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteKeyspaceIdsRequest) ProtoMessage() {} func (*ExecuteKeyspaceIdsRequest) ProtoMessage() {}
func (*ExecuteKeyspaceIdsRequest) Descriptor() ([]byte, []int) { func (*ExecuteKeyspaceIdsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{5} return fileDescriptor_vtgate_d9799c8e1157b676, []int{5}
} }
func (m *ExecuteKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteKeyspaceIdsRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteKeyspaceIdsRequest.Unmarshal(m, b)
...@@ -716,7 +717,7 @@ func (m *ExecuteKeyspaceIdsResponse) Reset() { *m = ExecuteKeyspaceIdsRe ...@@ -716,7 +717,7 @@ func (m *ExecuteKeyspaceIdsResponse) Reset() { *m = ExecuteKeyspaceIdsRe
func (m *ExecuteKeyspaceIdsResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteKeyspaceIdsResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteKeyspaceIdsResponse) ProtoMessage() {} func (*ExecuteKeyspaceIdsResponse) ProtoMessage() {}
func (*ExecuteKeyspaceIdsResponse) Descriptor() ([]byte, []int) { func (*ExecuteKeyspaceIdsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{6} return fileDescriptor_vtgate_d9799c8e1157b676, []int{6}
} }
func (m *ExecuteKeyspaceIdsResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteKeyspaceIdsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteKeyspaceIdsResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteKeyspaceIdsResponse.Unmarshal(m, b)
...@@ -787,7 +788,7 @@ func (m *ExecuteKeyRangesRequest) Reset() { *m = ExecuteKeyRangesRequest ...@@ -787,7 +788,7 @@ func (m *ExecuteKeyRangesRequest) Reset() { *m = ExecuteKeyRangesRequest
func (m *ExecuteKeyRangesRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteKeyRangesRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteKeyRangesRequest) ProtoMessage() {} func (*ExecuteKeyRangesRequest) ProtoMessage() {}
func (*ExecuteKeyRangesRequest) Descriptor() ([]byte, []int) { func (*ExecuteKeyRangesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{7} return fileDescriptor_vtgate_d9799c8e1157b676, []int{7}
} }
func (m *ExecuteKeyRangesRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteKeyRangesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteKeyRangesRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteKeyRangesRequest.Unmarshal(m, b)
...@@ -882,7 +883,7 @@ func (m *ExecuteKeyRangesResponse) Reset() { *m = ExecuteKeyRangesRespon ...@@ -882,7 +883,7 @@ func (m *ExecuteKeyRangesResponse) Reset() { *m = ExecuteKeyRangesRespon
func (m *ExecuteKeyRangesResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteKeyRangesResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteKeyRangesResponse) ProtoMessage() {} func (*ExecuteKeyRangesResponse) ProtoMessage() {}
func (*ExecuteKeyRangesResponse) Descriptor() ([]byte, []int) { func (*ExecuteKeyRangesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{8} return fileDescriptor_vtgate_d9799c8e1157b676, []int{8}
} }
func (m *ExecuteKeyRangesResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteKeyRangesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteKeyRangesResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteKeyRangesResponse.Unmarshal(m, b)
...@@ -955,7 +956,7 @@ func (m *ExecuteEntityIdsRequest) Reset() { *m = ExecuteEntityIdsRequest ...@@ -955,7 +956,7 @@ func (m *ExecuteEntityIdsRequest) Reset() { *m = ExecuteEntityIdsRequest
func (m *ExecuteEntityIdsRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteEntityIdsRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteEntityIdsRequest) ProtoMessage() {} func (*ExecuteEntityIdsRequest) ProtoMessage() {}
func (*ExecuteEntityIdsRequest) Descriptor() ([]byte, []int) { func (*ExecuteEntityIdsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{9} return fileDescriptor_vtgate_d9799c8e1157b676, []int{9}
} }
func (m *ExecuteEntityIdsRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteEntityIdsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteEntityIdsRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteEntityIdsRequest.Unmarshal(m, b)
...@@ -1054,7 +1055,7 @@ func (m *ExecuteEntityIdsRequest_EntityId) Reset() { *m = ExecuteEntityI ...@@ -1054,7 +1055,7 @@ func (m *ExecuteEntityIdsRequest_EntityId) Reset() { *m = ExecuteEntityI
func (m *ExecuteEntityIdsRequest_EntityId) String() string { return proto.CompactTextString(m) } func (m *ExecuteEntityIdsRequest_EntityId) String() string { return proto.CompactTextString(m) }
func (*ExecuteEntityIdsRequest_EntityId) ProtoMessage() {} func (*ExecuteEntityIdsRequest_EntityId) ProtoMessage() {}
func (*ExecuteEntityIdsRequest_EntityId) Descriptor() ([]byte, []int) { func (*ExecuteEntityIdsRequest_EntityId) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{9, 0} return fileDescriptor_vtgate_d9799c8e1157b676, []int{9, 0}
} }
func (m *ExecuteEntityIdsRequest_EntityId) XXX_Unmarshal(b []byte) error { func (m *ExecuteEntityIdsRequest_EntityId) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteEntityIdsRequest_EntityId.Unmarshal(m, b) return xxx_messageInfo_ExecuteEntityIdsRequest_EntityId.Unmarshal(m, b)
...@@ -1114,7 +1115,7 @@ func (m *ExecuteEntityIdsResponse) Reset() { *m = ExecuteEntityIdsRespon ...@@ -1114,7 +1115,7 @@ func (m *ExecuteEntityIdsResponse) Reset() { *m = ExecuteEntityIdsRespon
func (m *ExecuteEntityIdsResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteEntityIdsResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteEntityIdsResponse) ProtoMessage() {} func (*ExecuteEntityIdsResponse) ProtoMessage() {}
func (*ExecuteEntityIdsResponse) Descriptor() ([]byte, []int) { func (*ExecuteEntityIdsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{10} return fileDescriptor_vtgate_d9799c8e1157b676, []int{10}
} }
func (m *ExecuteEntityIdsResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteEntityIdsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteEntityIdsResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteEntityIdsResponse.Unmarshal(m, b)
...@@ -1179,7 +1180,7 @@ func (m *ExecuteBatchRequest) Reset() { *m = ExecuteBatchRequest{} } ...@@ -1179,7 +1180,7 @@ func (m *ExecuteBatchRequest) Reset() { *m = ExecuteBatchRequest{} }
func (m *ExecuteBatchRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteBatchRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteBatchRequest) ProtoMessage() {} func (*ExecuteBatchRequest) ProtoMessage() {}
func (*ExecuteBatchRequest) Descriptor() ([]byte, []int) { func (*ExecuteBatchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{11} return fileDescriptor_vtgate_d9799c8e1157b676, []int{11}
} }
func (m *ExecuteBatchRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteBatchRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteBatchRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteBatchRequest.Unmarshal(m, b)
...@@ -1267,7 +1268,7 @@ func (m *ExecuteBatchResponse) Reset() { *m = ExecuteBatchResponse{} } ...@@ -1267,7 +1268,7 @@ func (m *ExecuteBatchResponse) Reset() { *m = ExecuteBatchResponse{} }
func (m *ExecuteBatchResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteBatchResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteBatchResponse) ProtoMessage() {} func (*ExecuteBatchResponse) ProtoMessage() {}
func (*ExecuteBatchResponse) Descriptor() ([]byte, []int) { func (*ExecuteBatchResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{12} return fileDescriptor_vtgate_d9799c8e1157b676, []int{12}
} }
func (m *ExecuteBatchResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteBatchResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteBatchResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteBatchResponse.Unmarshal(m, b)
...@@ -1327,7 +1328,7 @@ func (m *BoundShardQuery) Reset() { *m = BoundShardQuery{} } ...@@ -1327,7 +1328,7 @@ func (m *BoundShardQuery) Reset() { *m = BoundShardQuery{} }
func (m *BoundShardQuery) String() string { return proto.CompactTextString(m) } func (m *BoundShardQuery) String() string { return proto.CompactTextString(m) }
func (*BoundShardQuery) ProtoMessage() {} func (*BoundShardQuery) ProtoMessage() {}
func (*BoundShardQuery) Descriptor() ([]byte, []int) { func (*BoundShardQuery) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{13} return fileDescriptor_vtgate_d9799c8e1157b676, []int{13}
} }
func (m *BoundShardQuery) XXX_Unmarshal(b []byte) error { func (m *BoundShardQuery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BoundShardQuery.Unmarshal(m, b) return xxx_messageInfo_BoundShardQuery.Unmarshal(m, b)
...@@ -1395,7 +1396,7 @@ func (m *ExecuteBatchShardsRequest) Reset() { *m = ExecuteBatchShardsReq ...@@ -1395,7 +1396,7 @@ func (m *ExecuteBatchShardsRequest) Reset() { *m = ExecuteBatchShardsReq
func (m *ExecuteBatchShardsRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteBatchShardsRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteBatchShardsRequest) ProtoMessage() {} func (*ExecuteBatchShardsRequest) ProtoMessage() {}
func (*ExecuteBatchShardsRequest) Descriptor() ([]byte, []int) { func (*ExecuteBatchShardsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{14} return fileDescriptor_vtgate_d9799c8e1157b676, []int{14}
} }
func (m *ExecuteBatchShardsRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteBatchShardsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteBatchShardsRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteBatchShardsRequest.Unmarshal(m, b)
...@@ -1476,7 +1477,7 @@ func (m *ExecuteBatchShardsResponse) Reset() { *m = ExecuteBatchShardsRe ...@@ -1476,7 +1477,7 @@ func (m *ExecuteBatchShardsResponse) Reset() { *m = ExecuteBatchShardsRe
func (m *ExecuteBatchShardsResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteBatchShardsResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteBatchShardsResponse) ProtoMessage() {} func (*ExecuteBatchShardsResponse) ProtoMessage() {}
func (*ExecuteBatchShardsResponse) Descriptor() ([]byte, []int) { func (*ExecuteBatchShardsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{15} return fileDescriptor_vtgate_d9799c8e1157b676, []int{15}
} }
func (m *ExecuteBatchShardsResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteBatchShardsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteBatchShardsResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteBatchShardsResponse.Unmarshal(m, b)
...@@ -1537,7 +1538,7 @@ func (m *BoundKeyspaceIdQuery) Reset() { *m = BoundKeyspaceIdQuery{} } ...@@ -1537,7 +1538,7 @@ func (m *BoundKeyspaceIdQuery) Reset() { *m = BoundKeyspaceIdQuery{} }
func (m *BoundKeyspaceIdQuery) String() string { return proto.CompactTextString(m) } func (m *BoundKeyspaceIdQuery) String() string { return proto.CompactTextString(m) }
func (*BoundKeyspaceIdQuery) ProtoMessage() {} func (*BoundKeyspaceIdQuery) ProtoMessage() {}
func (*BoundKeyspaceIdQuery) Descriptor() ([]byte, []int) { func (*BoundKeyspaceIdQuery) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{16} return fileDescriptor_vtgate_d9799c8e1157b676, []int{16}
} }
func (m *BoundKeyspaceIdQuery) XXX_Unmarshal(b []byte) error { func (m *BoundKeyspaceIdQuery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BoundKeyspaceIdQuery.Unmarshal(m, b) return xxx_messageInfo_BoundKeyspaceIdQuery.Unmarshal(m, b)
...@@ -1604,7 +1605,7 @@ func (m *ExecuteBatchKeyspaceIdsRequest) Reset() { *m = ExecuteBatchKeys ...@@ -1604,7 +1605,7 @@ func (m *ExecuteBatchKeyspaceIdsRequest) Reset() { *m = ExecuteBatchKeys
func (m *ExecuteBatchKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) } func (m *ExecuteBatchKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) }
func (*ExecuteBatchKeyspaceIdsRequest) ProtoMessage() {} func (*ExecuteBatchKeyspaceIdsRequest) ProtoMessage() {}
func (*ExecuteBatchKeyspaceIdsRequest) Descriptor() ([]byte, []int) { func (*ExecuteBatchKeyspaceIdsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{17} return fileDescriptor_vtgate_d9799c8e1157b676, []int{17}
} }
func (m *ExecuteBatchKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error { func (m *ExecuteBatchKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteBatchKeyspaceIdsRequest.Unmarshal(m, b) return xxx_messageInfo_ExecuteBatchKeyspaceIdsRequest.Unmarshal(m, b)
...@@ -1685,7 +1686,7 @@ func (m *ExecuteBatchKeyspaceIdsResponse) Reset() { *m = ExecuteBatchKey ...@@ -1685,7 +1686,7 @@ func (m *ExecuteBatchKeyspaceIdsResponse) Reset() { *m = ExecuteBatchKey
func (m *ExecuteBatchKeyspaceIdsResponse) String() string { return proto.CompactTextString(m) } func (m *ExecuteBatchKeyspaceIdsResponse) String() string { return proto.CompactTextString(m) }
func (*ExecuteBatchKeyspaceIdsResponse) ProtoMessage() {} func (*ExecuteBatchKeyspaceIdsResponse) ProtoMessage() {}
func (*ExecuteBatchKeyspaceIdsResponse) Descriptor() ([]byte, []int) { func (*ExecuteBatchKeyspaceIdsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{18} return fileDescriptor_vtgate_d9799c8e1157b676, []int{18}
} }
func (m *ExecuteBatchKeyspaceIdsResponse) XXX_Unmarshal(b []byte) error { func (m *ExecuteBatchKeyspaceIdsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecuteBatchKeyspaceIdsResponse.Unmarshal(m, b) return xxx_messageInfo_ExecuteBatchKeyspaceIdsResponse.Unmarshal(m, b)
...@@ -1749,7 +1750,7 @@ func (m *StreamExecuteRequest) Reset() { *m = StreamExecuteRequest{} } ...@@ -1749,7 +1750,7 @@ func (m *StreamExecuteRequest) Reset() { *m = StreamExecuteRequest{} }
func (m *StreamExecuteRequest) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteRequest) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteRequest) ProtoMessage() {} func (*StreamExecuteRequest) ProtoMessage() {}
func (*StreamExecuteRequest) Descriptor() ([]byte, []int) { func (*StreamExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{19} return fileDescriptor_vtgate_d9799c8e1157b676, []int{19}
} }
func (m *StreamExecuteRequest) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteRequest.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteRequest.Unmarshal(m, b)
...@@ -1828,7 +1829,7 @@ func (m *StreamExecuteResponse) Reset() { *m = StreamExecuteResponse{} } ...@@ -1828,7 +1829,7 @@ func (m *StreamExecuteResponse) Reset() { *m = StreamExecuteResponse{} }
func (m *StreamExecuteResponse) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteResponse) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteResponse) ProtoMessage() {} func (*StreamExecuteResponse) ProtoMessage() {}
func (*StreamExecuteResponse) Descriptor() ([]byte, []int) { func (*StreamExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{20} return fileDescriptor_vtgate_d9799c8e1157b676, []int{20}
} }
func (m *StreamExecuteResponse) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteResponse.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteResponse.Unmarshal(m, b)
...@@ -1879,7 +1880,7 @@ func (m *StreamExecuteShardsRequest) Reset() { *m = StreamExecuteShardsR ...@@ -1879,7 +1880,7 @@ func (m *StreamExecuteShardsRequest) Reset() { *m = StreamExecuteShardsR
func (m *StreamExecuteShardsRequest) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteShardsRequest) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteShardsRequest) ProtoMessage() {} func (*StreamExecuteShardsRequest) ProtoMessage() {}
func (*StreamExecuteShardsRequest) Descriptor() ([]byte, []int) { func (*StreamExecuteShardsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{21} return fileDescriptor_vtgate_d9799c8e1157b676, []int{21}
} }
func (m *StreamExecuteShardsRequest) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteShardsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteShardsRequest.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteShardsRequest.Unmarshal(m, b)
...@@ -1956,7 +1957,7 @@ func (m *StreamExecuteShardsResponse) Reset() { *m = StreamExecuteShards ...@@ -1956,7 +1957,7 @@ func (m *StreamExecuteShardsResponse) Reset() { *m = StreamExecuteShards
func (m *StreamExecuteShardsResponse) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteShardsResponse) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteShardsResponse) ProtoMessage() {} func (*StreamExecuteShardsResponse) ProtoMessage() {}
func (*StreamExecuteShardsResponse) Descriptor() ([]byte, []int) { func (*StreamExecuteShardsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{22} return fileDescriptor_vtgate_d9799c8e1157b676, []int{22}
} }
func (m *StreamExecuteShardsResponse) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteShardsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteShardsResponse.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteShardsResponse.Unmarshal(m, b)
...@@ -2008,7 +2009,7 @@ func (m *StreamExecuteKeyspaceIdsRequest) Reset() { *m = StreamExecuteKe ...@@ -2008,7 +2009,7 @@ func (m *StreamExecuteKeyspaceIdsRequest) Reset() { *m = StreamExecuteKe
func (m *StreamExecuteKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteKeyspaceIdsRequest) ProtoMessage() {} func (*StreamExecuteKeyspaceIdsRequest) ProtoMessage() {}
func (*StreamExecuteKeyspaceIdsRequest) Descriptor() ([]byte, []int) { func (*StreamExecuteKeyspaceIdsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{23} return fileDescriptor_vtgate_d9799c8e1157b676, []int{23}
} }
func (m *StreamExecuteKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteKeyspaceIdsRequest.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteKeyspaceIdsRequest.Unmarshal(m, b)
...@@ -2085,7 +2086,7 @@ func (m *StreamExecuteKeyspaceIdsResponse) Reset() { *m = StreamExecuteK ...@@ -2085,7 +2086,7 @@ func (m *StreamExecuteKeyspaceIdsResponse) Reset() { *m = StreamExecuteK
func (m *StreamExecuteKeyspaceIdsResponse) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteKeyspaceIdsResponse) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteKeyspaceIdsResponse) ProtoMessage() {} func (*StreamExecuteKeyspaceIdsResponse) ProtoMessage() {}
func (*StreamExecuteKeyspaceIdsResponse) Descriptor() ([]byte, []int) { func (*StreamExecuteKeyspaceIdsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{24} return fileDescriptor_vtgate_d9799c8e1157b676, []int{24}
} }
func (m *StreamExecuteKeyspaceIdsResponse) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteKeyspaceIdsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteKeyspaceIdsResponse.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteKeyspaceIdsResponse.Unmarshal(m, b)
...@@ -2137,7 +2138,7 @@ func (m *StreamExecuteKeyRangesRequest) Reset() { *m = StreamExecuteKeyR ...@@ -2137,7 +2138,7 @@ func (m *StreamExecuteKeyRangesRequest) Reset() { *m = StreamExecuteKeyR
func (m *StreamExecuteKeyRangesRequest) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteKeyRangesRequest) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteKeyRangesRequest) ProtoMessage() {} func (*StreamExecuteKeyRangesRequest) ProtoMessage() {}
func (*StreamExecuteKeyRangesRequest) Descriptor() ([]byte, []int) { func (*StreamExecuteKeyRangesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{25} return fileDescriptor_vtgate_d9799c8e1157b676, []int{25}
} }
func (m *StreamExecuteKeyRangesRequest) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteKeyRangesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteKeyRangesRequest.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteKeyRangesRequest.Unmarshal(m, b)
...@@ -2214,7 +2215,7 @@ func (m *StreamExecuteKeyRangesResponse) Reset() { *m = StreamExecuteKey ...@@ -2214,7 +2215,7 @@ func (m *StreamExecuteKeyRangesResponse) Reset() { *m = StreamExecuteKey
func (m *StreamExecuteKeyRangesResponse) String() string { return proto.CompactTextString(m) } func (m *StreamExecuteKeyRangesResponse) String() string { return proto.CompactTextString(m) }
func (*StreamExecuteKeyRangesResponse) ProtoMessage() {} func (*StreamExecuteKeyRangesResponse) ProtoMessage() {}
func (*StreamExecuteKeyRangesResponse) Descriptor() ([]byte, []int) { func (*StreamExecuteKeyRangesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{26} return fileDescriptor_vtgate_d9799c8e1157b676, []int{26}
} }
func (m *StreamExecuteKeyRangesResponse) XXX_Unmarshal(b []byte) error { func (m *StreamExecuteKeyRangesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StreamExecuteKeyRangesResponse.Unmarshal(m, b) return xxx_messageInfo_StreamExecuteKeyRangesResponse.Unmarshal(m, b)
...@@ -2260,7 +2261,7 @@ func (m *BeginRequest) Reset() { *m = BeginRequest{} } ...@@ -2260,7 +2261,7 @@ func (m *BeginRequest) Reset() { *m = BeginRequest{} }
func (m *BeginRequest) String() string { return proto.CompactTextString(m) } func (m *BeginRequest) String() string { return proto.CompactTextString(m) }
func (*BeginRequest) ProtoMessage() {} func (*BeginRequest) ProtoMessage() {}
func (*BeginRequest) Descriptor() ([]byte, []int) { func (*BeginRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{27} return fileDescriptor_vtgate_d9799c8e1157b676, []int{27}
} }
func (m *BeginRequest) XXX_Unmarshal(b []byte) error { func (m *BeginRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BeginRequest.Unmarshal(m, b) return xxx_messageInfo_BeginRequest.Unmarshal(m, b)
...@@ -2307,7 +2308,7 @@ func (m *BeginResponse) Reset() { *m = BeginResponse{} } ...@@ -2307,7 +2308,7 @@ func (m *BeginResponse) Reset() { *m = BeginResponse{} }
func (m *BeginResponse) String() string { return proto.CompactTextString(m) } func (m *BeginResponse) String() string { return proto.CompactTextString(m) }
func (*BeginResponse) ProtoMessage() {} func (*BeginResponse) ProtoMessage() {}
func (*BeginResponse) Descriptor() ([]byte, []int) { func (*BeginResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{28} return fileDescriptor_vtgate_d9799c8e1157b676, []int{28}
} }
func (m *BeginResponse) XXX_Unmarshal(b []byte) error { func (m *BeginResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BeginResponse.Unmarshal(m, b) return xxx_messageInfo_BeginResponse.Unmarshal(m, b)
...@@ -2355,7 +2356,7 @@ func (m *CommitRequest) Reset() { *m = CommitRequest{} } ...@@ -2355,7 +2356,7 @@ func (m *CommitRequest) Reset() { *m = CommitRequest{} }
func (m *CommitRequest) String() string { return proto.CompactTextString(m) } func (m *CommitRequest) String() string { return proto.CompactTextString(m) }
func (*CommitRequest) ProtoMessage() {} func (*CommitRequest) ProtoMessage() {}
func (*CommitRequest) Descriptor() ([]byte, []int) { func (*CommitRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{29} return fileDescriptor_vtgate_d9799c8e1157b676, []int{29}
} }
func (m *CommitRequest) XXX_Unmarshal(b []byte) error { func (m *CommitRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommitRequest.Unmarshal(m, b) return xxx_messageInfo_CommitRequest.Unmarshal(m, b)
...@@ -2407,7 +2408,7 @@ func (m *CommitResponse) Reset() { *m = CommitResponse{} } ...@@ -2407,7 +2408,7 @@ func (m *CommitResponse) Reset() { *m = CommitResponse{} }
func (m *CommitResponse) String() string { return proto.CompactTextString(m) } func (m *CommitResponse) String() string { return proto.CompactTextString(m) }
func (*CommitResponse) ProtoMessage() {} func (*CommitResponse) ProtoMessage() {}
func (*CommitResponse) Descriptor() ([]byte, []int) { func (*CommitResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{30} return fileDescriptor_vtgate_d9799c8e1157b676, []int{30}
} }
func (m *CommitResponse) XXX_Unmarshal(b []byte) error { func (m *CommitResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommitResponse.Unmarshal(m, b) return xxx_messageInfo_CommitResponse.Unmarshal(m, b)
...@@ -2443,7 +2444,7 @@ func (m *RollbackRequest) Reset() { *m = RollbackRequest{} } ...@@ -2443,7 +2444,7 @@ func (m *RollbackRequest) Reset() { *m = RollbackRequest{} }
func (m *RollbackRequest) String() string { return proto.CompactTextString(m) } func (m *RollbackRequest) String() string { return proto.CompactTextString(m) }
func (*RollbackRequest) ProtoMessage() {} func (*RollbackRequest) ProtoMessage() {}
func (*RollbackRequest) Descriptor() ([]byte, []int) { func (*RollbackRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{31} return fileDescriptor_vtgate_d9799c8e1157b676, []int{31}
} }
func (m *RollbackRequest) XXX_Unmarshal(b []byte) error { func (m *RollbackRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RollbackRequest.Unmarshal(m, b) return xxx_messageInfo_RollbackRequest.Unmarshal(m, b)
...@@ -2488,7 +2489,7 @@ func (m *RollbackResponse) Reset() { *m = RollbackResponse{} } ...@@ -2488,7 +2489,7 @@ func (m *RollbackResponse) Reset() { *m = RollbackResponse{} }
func (m *RollbackResponse) String() string { return proto.CompactTextString(m) } func (m *RollbackResponse) String() string { return proto.CompactTextString(m) }
func (*RollbackResponse) ProtoMessage() {} func (*RollbackResponse) ProtoMessage() {}
func (*RollbackResponse) Descriptor() ([]byte, []int) { func (*RollbackResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{32} return fileDescriptor_vtgate_d9799c8e1157b676, []int{32}
} }
func (m *RollbackResponse) XXX_Unmarshal(b []byte) error { func (m *RollbackResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RollbackResponse.Unmarshal(m, b) return xxx_messageInfo_RollbackResponse.Unmarshal(m, b)
...@@ -2524,7 +2525,7 @@ func (m *ResolveTransactionRequest) Reset() { *m = ResolveTransactionReq ...@@ -2524,7 +2525,7 @@ func (m *ResolveTransactionRequest) Reset() { *m = ResolveTransactionReq
func (m *ResolveTransactionRequest) String() string { return proto.CompactTextString(m) } func (m *ResolveTransactionRequest) String() string { return proto.CompactTextString(m) }
func (*ResolveTransactionRequest) ProtoMessage() {} func (*ResolveTransactionRequest) ProtoMessage() {}
func (*ResolveTransactionRequest) Descriptor() ([]byte, []int) { func (*ResolveTransactionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{33} return fileDescriptor_vtgate_d9799c8e1157b676, []int{33}
} }
func (m *ResolveTransactionRequest) XXX_Unmarshal(b []byte) error { func (m *ResolveTransactionRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResolveTransactionRequest.Unmarshal(m, b) return xxx_messageInfo_ResolveTransactionRequest.Unmarshal(m, b)
...@@ -2580,7 +2581,7 @@ func (m *MessageStreamRequest) Reset() { *m = MessageStreamRequest{} } ...@@ -2580,7 +2581,7 @@ func (m *MessageStreamRequest) Reset() { *m = MessageStreamRequest{} }
func (m *MessageStreamRequest) String() string { return proto.CompactTextString(m) } func (m *MessageStreamRequest) String() string { return proto.CompactTextString(m) }
func (*MessageStreamRequest) ProtoMessage() {} func (*MessageStreamRequest) ProtoMessage() {}
func (*MessageStreamRequest) Descriptor() ([]byte, []int) { func (*MessageStreamRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{34} return fileDescriptor_vtgate_d9799c8e1157b676, []int{34}
} }
func (m *MessageStreamRequest) XXX_Unmarshal(b []byte) error { func (m *MessageStreamRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MessageStreamRequest.Unmarshal(m, b) return xxx_messageInfo_MessageStreamRequest.Unmarshal(m, b)
...@@ -2655,7 +2656,7 @@ func (m *MessageAckRequest) Reset() { *m = MessageAckRequest{} } ...@@ -2655,7 +2656,7 @@ func (m *MessageAckRequest) Reset() { *m = MessageAckRequest{} }
func (m *MessageAckRequest) String() string { return proto.CompactTextString(m) } func (m *MessageAckRequest) String() string { return proto.CompactTextString(m) }
func (*MessageAckRequest) ProtoMessage() {} func (*MessageAckRequest) ProtoMessage() {}
func (*MessageAckRequest) Descriptor() ([]byte, []int) { func (*MessageAckRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{35} return fileDescriptor_vtgate_d9799c8e1157b676, []int{35}
} }
func (m *MessageAckRequest) XXX_Unmarshal(b []byte) error { func (m *MessageAckRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MessageAckRequest.Unmarshal(m, b) return xxx_messageInfo_MessageAckRequest.Unmarshal(m, b)
...@@ -2719,7 +2720,7 @@ func (m *IdKeyspaceId) Reset() { *m = IdKeyspaceId{} } ...@@ -2719,7 +2720,7 @@ func (m *IdKeyspaceId) Reset() { *m = IdKeyspaceId{} }
func (m *IdKeyspaceId) String() string { return proto.CompactTextString(m) } func (m *IdKeyspaceId) String() string { return proto.CompactTextString(m) }
func (*IdKeyspaceId) ProtoMessage() {} func (*IdKeyspaceId) ProtoMessage() {}
func (*IdKeyspaceId) Descriptor() ([]byte, []int) { func (*IdKeyspaceId) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{36} return fileDescriptor_vtgate_d9799c8e1157b676, []int{36}
} }
func (m *IdKeyspaceId) XXX_Unmarshal(b []byte) error { func (m *IdKeyspaceId) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IdKeyspaceId.Unmarshal(m, b) return xxx_messageInfo_IdKeyspaceId.Unmarshal(m, b)
...@@ -2772,7 +2773,7 @@ func (m *MessageAckKeyspaceIdsRequest) Reset() { *m = MessageAckKeyspace ...@@ -2772,7 +2773,7 @@ func (m *MessageAckKeyspaceIdsRequest) Reset() { *m = MessageAckKeyspace
func (m *MessageAckKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) } func (m *MessageAckKeyspaceIdsRequest) String() string { return proto.CompactTextString(m) }
func (*MessageAckKeyspaceIdsRequest) ProtoMessage() {} func (*MessageAckKeyspaceIdsRequest) ProtoMessage() {}
func (*MessageAckKeyspaceIdsRequest) Descriptor() ([]byte, []int) { func (*MessageAckKeyspaceIdsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{37} return fileDescriptor_vtgate_d9799c8e1157b676, []int{37}
} }
func (m *MessageAckKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error { func (m *MessageAckKeyspaceIdsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MessageAckKeyspaceIdsRequest.Unmarshal(m, b) return xxx_messageInfo_MessageAckKeyspaceIdsRequest.Unmarshal(m, b)
...@@ -2831,7 +2832,7 @@ func (m *ResolveTransactionResponse) Reset() { *m = ResolveTransactionRe ...@@ -2831,7 +2832,7 @@ func (m *ResolveTransactionResponse) Reset() { *m = ResolveTransactionRe
func (m *ResolveTransactionResponse) String() string { return proto.CompactTextString(m) } func (m *ResolveTransactionResponse) String() string { return proto.CompactTextString(m) }
func (*ResolveTransactionResponse) ProtoMessage() {} func (*ResolveTransactionResponse) ProtoMessage() {}
func (*ResolveTransactionResponse) Descriptor() ([]byte, []int) { func (*ResolveTransactionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{38} return fileDescriptor_vtgate_d9799c8e1157b676, []int{38}
} }
func (m *ResolveTransactionResponse) XXX_Unmarshal(b []byte) error { func (m *ResolveTransactionResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResolveTransactionResponse.Unmarshal(m, b) return xxx_messageInfo_ResolveTransactionResponse.Unmarshal(m, b)
...@@ -2949,7 +2950,7 @@ func (m *SplitQueryRequest) Reset() { *m = SplitQueryRequest{} } ...@@ -2949,7 +2950,7 @@ func (m *SplitQueryRequest) Reset() { *m = SplitQueryRequest{} }
func (m *SplitQueryRequest) String() string { return proto.CompactTextString(m) } func (m *SplitQueryRequest) String() string { return proto.CompactTextString(m) }
func (*SplitQueryRequest) ProtoMessage() {} func (*SplitQueryRequest) ProtoMessage() {}
func (*SplitQueryRequest) Descriptor() ([]byte, []int) { func (*SplitQueryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{39} return fileDescriptor_vtgate_d9799c8e1157b676, []int{39}
} }
func (m *SplitQueryRequest) XXX_Unmarshal(b []byte) error { func (m *SplitQueryRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SplitQueryRequest.Unmarshal(m, b) return xxx_messageInfo_SplitQueryRequest.Unmarshal(m, b)
...@@ -3038,7 +3039,7 @@ func (m *SplitQueryResponse) Reset() { *m = SplitQueryResponse{} } ...@@ -3038,7 +3039,7 @@ func (m *SplitQueryResponse) Reset() { *m = SplitQueryResponse{} }
func (m *SplitQueryResponse) String() string { return proto.CompactTextString(m) } func (m *SplitQueryResponse) String() string { return proto.CompactTextString(m) }
func (*SplitQueryResponse) ProtoMessage() {} func (*SplitQueryResponse) ProtoMessage() {}
func (*SplitQueryResponse) Descriptor() ([]byte, []int) { func (*SplitQueryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{40} return fileDescriptor_vtgate_d9799c8e1157b676, []int{40}
} }
func (m *SplitQueryResponse) XXX_Unmarshal(b []byte) error { func (m *SplitQueryResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SplitQueryResponse.Unmarshal(m, b) return xxx_messageInfo_SplitQueryResponse.Unmarshal(m, b)
...@@ -3079,7 +3080,7 @@ func (m *SplitQueryResponse_KeyRangePart) Reset() { *m = SplitQueryRespo ...@@ -3079,7 +3080,7 @@ func (m *SplitQueryResponse_KeyRangePart) Reset() { *m = SplitQueryRespo
func (m *SplitQueryResponse_KeyRangePart) String() string { return proto.CompactTextString(m) } func (m *SplitQueryResponse_KeyRangePart) String() string { return proto.CompactTextString(m) }
func (*SplitQueryResponse_KeyRangePart) ProtoMessage() {} func (*SplitQueryResponse_KeyRangePart) ProtoMessage() {}
func (*SplitQueryResponse_KeyRangePart) Descriptor() ([]byte, []int) { func (*SplitQueryResponse_KeyRangePart) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{40, 0} return fileDescriptor_vtgate_d9799c8e1157b676, []int{40, 0}
} }
func (m *SplitQueryResponse_KeyRangePart) XXX_Unmarshal(b []byte) error { func (m *SplitQueryResponse_KeyRangePart) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SplitQueryResponse_KeyRangePart.Unmarshal(m, b) return xxx_messageInfo_SplitQueryResponse_KeyRangePart.Unmarshal(m, b)
...@@ -3127,7 +3128,7 @@ func (m *SplitQueryResponse_ShardPart) Reset() { *m = SplitQueryResponse ...@@ -3127,7 +3128,7 @@ func (m *SplitQueryResponse_ShardPart) Reset() { *m = SplitQueryResponse
func (m *SplitQueryResponse_ShardPart) String() string { return proto.CompactTextString(m) } func (m *SplitQueryResponse_ShardPart) String() string { return proto.CompactTextString(m) }
func (*SplitQueryResponse_ShardPart) ProtoMessage() {} func (*SplitQueryResponse_ShardPart) ProtoMessage() {}
func (*SplitQueryResponse_ShardPart) Descriptor() ([]byte, []int) { func (*SplitQueryResponse_ShardPart) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{40, 1} return fileDescriptor_vtgate_d9799c8e1157b676, []int{40, 1}
} }
func (m *SplitQueryResponse_ShardPart) XXX_Unmarshal(b []byte) error { func (m *SplitQueryResponse_ShardPart) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SplitQueryResponse_ShardPart.Unmarshal(m, b) return xxx_messageInfo_SplitQueryResponse_ShardPart.Unmarshal(m, b)
...@@ -3180,7 +3181,7 @@ func (m *SplitQueryResponse_Part) Reset() { *m = SplitQueryResponse_Part ...@@ -3180,7 +3181,7 @@ func (m *SplitQueryResponse_Part) Reset() { *m = SplitQueryResponse_Part
func (m *SplitQueryResponse_Part) String() string { return proto.CompactTextString(m) } func (m *SplitQueryResponse_Part) String() string { return proto.CompactTextString(m) }
func (*SplitQueryResponse_Part) ProtoMessage() {} func (*SplitQueryResponse_Part) ProtoMessage() {}
func (*SplitQueryResponse_Part) Descriptor() ([]byte, []int) { func (*SplitQueryResponse_Part) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{40, 2} return fileDescriptor_vtgate_d9799c8e1157b676, []int{40, 2}
} }
func (m *SplitQueryResponse_Part) XXX_Unmarshal(b []byte) error { func (m *SplitQueryResponse_Part) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SplitQueryResponse_Part.Unmarshal(m, b) return xxx_messageInfo_SplitQueryResponse_Part.Unmarshal(m, b)
...@@ -3241,7 +3242,7 @@ func (m *GetSrvKeyspaceRequest) Reset() { *m = GetSrvKeyspaceRequest{} } ...@@ -3241,7 +3242,7 @@ func (m *GetSrvKeyspaceRequest) Reset() { *m = GetSrvKeyspaceRequest{} }
func (m *GetSrvKeyspaceRequest) String() string { return proto.CompactTextString(m) } func (m *GetSrvKeyspaceRequest) String() string { return proto.CompactTextString(m) }
func (*GetSrvKeyspaceRequest) ProtoMessage() {} func (*GetSrvKeyspaceRequest) ProtoMessage() {}
func (*GetSrvKeyspaceRequest) Descriptor() ([]byte, []int) { func (*GetSrvKeyspaceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{41} return fileDescriptor_vtgate_d9799c8e1157b676, []int{41}
} }
func (m *GetSrvKeyspaceRequest) XXX_Unmarshal(b []byte) error { func (m *GetSrvKeyspaceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSrvKeyspaceRequest.Unmarshal(m, b) return xxx_messageInfo_GetSrvKeyspaceRequest.Unmarshal(m, b)
...@@ -3281,7 +3282,7 @@ func (m *GetSrvKeyspaceResponse) Reset() { *m = GetSrvKeyspaceResponse{} ...@@ -3281,7 +3282,7 @@ func (m *GetSrvKeyspaceResponse) Reset() { *m = GetSrvKeyspaceResponse{}
func (m *GetSrvKeyspaceResponse) String() string { return proto.CompactTextString(m) } func (m *GetSrvKeyspaceResponse) String() string { return proto.CompactTextString(m) }
func (*GetSrvKeyspaceResponse) ProtoMessage() {} func (*GetSrvKeyspaceResponse) ProtoMessage() {}
func (*GetSrvKeyspaceResponse) Descriptor() ([]byte, []int) { func (*GetSrvKeyspaceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{42} return fileDescriptor_vtgate_d9799c8e1157b676, []int{42}
} }
func (m *GetSrvKeyspaceResponse) XXX_Unmarshal(b []byte) error { func (m *GetSrvKeyspaceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSrvKeyspaceResponse.Unmarshal(m, b) return xxx_messageInfo_GetSrvKeyspaceResponse.Unmarshal(m, b)
...@@ -3308,6 +3309,111 @@ func (m *GetSrvKeyspaceResponse) GetSrvKeyspace() *topodata.SrvKeyspace { ...@@ -3308,6 +3309,111 @@ func (m *GetSrvKeyspaceResponse) GetSrvKeyspace() *topodata.SrvKeyspace {
return nil return nil
} }
// VStreamRequest is the payload for VStream.
type VStreamRequest struct {
CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"`
TabletType topodata.TabletType `protobuf:"varint,2,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"`
// position specifies the starting point of the bin log positions
// as well as the keyspace-shards to pull events from.
// position is of the form 'ks1:0@MySQL56/<mysql_pos>|ks2:-80@MySQL56/<mysql_pos>'.
Vgtid *binlogdata.VGtid `protobuf:"bytes,3,opt,name=vgtid,proto3" json:"vgtid,omitempty"`
Filter *binlogdata.Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VStreamRequest) Reset() { *m = VStreamRequest{} }
func (m *VStreamRequest) String() string { return proto.CompactTextString(m) }
func (*VStreamRequest) ProtoMessage() {}
func (*VStreamRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_d9799c8e1157b676, []int{43}
}
func (m *VStreamRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VStreamRequest.Unmarshal(m, b)
}
func (m *VStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VStreamRequest.Marshal(b, m, deterministic)
}
func (dst *VStreamRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRequest.Merge(dst, src)
}
func (m *VStreamRequest) XXX_Size() int {
return xxx_messageInfo_VStreamRequest.Size(m)
}
func (m *VStreamRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRequest.DiscardUnknown(m)
}
var xxx_messageInfo_VStreamRequest proto.InternalMessageInfo
func (m *VStreamRequest) GetCallerId() *vtrpc.CallerID {
if m != nil {
return m.CallerId
}
return nil
}
func (m *VStreamRequest) GetTabletType() topodata.TabletType {
if m != nil {
return m.TabletType
}
return topodata.TabletType_UNKNOWN
}
func (m *VStreamRequest) GetVgtid() *binlogdata.VGtid {
if m != nil {
return m.Vgtid
}
return nil
}
func (m *VStreamRequest) GetFilter() *binlogdata.Filter {
if m != nil {
return m.Filter
}
return nil
}
// VStreamResponse is streamed by VStream.
type VStreamResponse struct {
Events []*binlogdata.VEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VStreamResponse) Reset() { *m = VStreamResponse{} }
func (m *VStreamResponse) String() string { return proto.CompactTextString(m) }
func (*VStreamResponse) ProtoMessage() {}
func (*VStreamResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_d9799c8e1157b676, []int{44}
}
func (m *VStreamResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VStreamResponse.Unmarshal(m, b)
}
func (m *VStreamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VStreamResponse.Marshal(b, m, deterministic)
}
func (dst *VStreamResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamResponse.Merge(dst, src)
}
func (m *VStreamResponse) XXX_Size() int {
return xxx_messageInfo_VStreamResponse.Size(m)
}
func (m *VStreamResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamResponse.DiscardUnknown(m)
}
var xxx_messageInfo_VStreamResponse proto.InternalMessageInfo
func (m *VStreamResponse) GetEvents() []*binlogdata.VEvent {
if m != nil {
return m.Events
}
return nil
}
// UpdateStreamRequest is the payload to UpdateStream. // UpdateStreamRequest is the payload to UpdateStream.
type UpdateStreamRequest struct { type UpdateStreamRequest struct {
// caller_id identifies the caller. This is the effective caller ID, // caller_id identifies the caller. This is the effective caller ID,
...@@ -3339,7 +3445,7 @@ func (m *UpdateStreamRequest) Reset() { *m = UpdateStreamRequest{} } ...@@ -3339,7 +3445,7 @@ func (m *UpdateStreamRequest) Reset() { *m = UpdateStreamRequest{} }
func (m *UpdateStreamRequest) String() string { return proto.CompactTextString(m) } func (m *UpdateStreamRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateStreamRequest) ProtoMessage() {} func (*UpdateStreamRequest) ProtoMessage() {}
func (*UpdateStreamRequest) Descriptor() ([]byte, []int) { func (*UpdateStreamRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{43} return fileDescriptor_vtgate_d9799c8e1157b676, []int{45}
} }
func (m *UpdateStreamRequest) XXX_Unmarshal(b []byte) error { func (m *UpdateStreamRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateStreamRequest.Unmarshal(m, b) return xxx_messageInfo_UpdateStreamRequest.Unmarshal(m, b)
...@@ -3427,7 +3533,7 @@ func (m *UpdateStreamResponse) Reset() { *m = UpdateStreamResponse{} } ...@@ -3427,7 +3533,7 @@ func (m *UpdateStreamResponse) Reset() { *m = UpdateStreamResponse{} }
func (m *UpdateStreamResponse) String() string { return proto.CompactTextString(m) } func (m *UpdateStreamResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateStreamResponse) ProtoMessage() {} func (*UpdateStreamResponse) ProtoMessage() {}
func (*UpdateStreamResponse) Descriptor() ([]byte, []int) { func (*UpdateStreamResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_vtgate_178abacf9cf673c8, []int{44} return fileDescriptor_vtgate_d9799c8e1157b676, []int{46}
} }
func (m *UpdateStreamResponse) XXX_Unmarshal(b []byte) error { func (m *UpdateStreamResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateStreamResponse.Unmarshal(m, b) return xxx_messageInfo_UpdateStreamResponse.Unmarshal(m, b)
...@@ -3510,137 +3616,144 @@ func init() { ...@@ -3510,137 +3616,144 @@ func init() {
proto.RegisterType((*SplitQueryResponse_Part)(nil), "vtgate.SplitQueryResponse.Part") proto.RegisterType((*SplitQueryResponse_Part)(nil), "vtgate.SplitQueryResponse.Part")
proto.RegisterType((*GetSrvKeyspaceRequest)(nil), "vtgate.GetSrvKeyspaceRequest") proto.RegisterType((*GetSrvKeyspaceRequest)(nil), "vtgate.GetSrvKeyspaceRequest")
proto.RegisterType((*GetSrvKeyspaceResponse)(nil), "vtgate.GetSrvKeyspaceResponse") proto.RegisterType((*GetSrvKeyspaceResponse)(nil), "vtgate.GetSrvKeyspaceResponse")
proto.RegisterType((*VStreamRequest)(nil), "vtgate.VStreamRequest")
proto.RegisterType((*VStreamResponse)(nil), "vtgate.VStreamResponse")
proto.RegisterType((*UpdateStreamRequest)(nil), "vtgate.UpdateStreamRequest") proto.RegisterType((*UpdateStreamRequest)(nil), "vtgate.UpdateStreamRequest")
proto.RegisterType((*UpdateStreamResponse)(nil), "vtgate.UpdateStreamResponse") proto.RegisterType((*UpdateStreamResponse)(nil), "vtgate.UpdateStreamResponse")
proto.RegisterEnum("vtgate.TransactionMode", TransactionMode_name, TransactionMode_value) proto.RegisterEnum("vtgate.TransactionMode", TransactionMode_name, TransactionMode_value)
proto.RegisterEnum("vtgate.CommitOrder", CommitOrder_name, CommitOrder_value) proto.RegisterEnum("vtgate.CommitOrder", CommitOrder_name, CommitOrder_value)
} }
func init() { proto.RegisterFile("vtgate.proto", fileDescriptor_vtgate_178abacf9cf673c8) } func init() { proto.RegisterFile("vtgate.proto", fileDescriptor_vtgate_d9799c8e1157b676) }
var fileDescriptor_vtgate_178abacf9cf673c8 = []byte{ var fileDescriptor_vtgate_d9799c8e1157b676 = []byte{
// 1962 bytes of a gzipped FileDescriptorProto // 2041 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcd, 0x8f, 0x23, 0x47, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcd, 0x8f, 0x23, 0x47,
0x15, 0x4f, 0x77, 0xfb, 0xf3, 0xb5, 0xbf, 0xb6, 0xd6, 0xbb, 0xeb, 0x38, 0xc3, 0xce, 0xa4, 0xc3, 0x15, 0x4f, 0x77, 0xfb, 0xf3, 0xf9, 0x73, 0x6b, 0xbc, 0x1b, 0xc7, 0x19, 0x76, 0x26, 0x1d, 0x46,
0x28, 0xce, 0x66, 0xe5, 0x21, 0x0e, 0x04, 0x84, 0x22, 0x85, 0x19, 0xef, 0x10, 0x59, 0xd9, 0xf9, 0xeb, 0x6c, 0x56, 0x1e, 0xe2, 0x40, 0x40, 0x28, 0x28, 0xcc, 0x78, 0x27, 0x2b, 0x2b, 0x3b, 0x1f,
0xa0, 0xec, 0xcd, 0x02, 0x22, 0x6a, 0xf5, 0xd8, 0x25, 0x6f, 0x33, 0x76, 0xb7, 0xd3, 0x55, 0xf6, 0x94, 0xbd, 0xb3, 0x80, 0x88, 0x5a, 0x3d, 0x76, 0xe1, 0x6d, 0xc6, 0xee, 0x76, 0xba, 0xca, 0x5e,
0x32, 0x1c, 0x50, 0xfe, 0x83, 0x88, 0x03, 0x12, 0x8a, 0x90, 0x10, 0x12, 0x12, 0x27, 0xae, 0x48, 0x86, 0x03, 0xca, 0x7f, 0x10, 0x71, 0x40, 0x42, 0x11, 0x12, 0x42, 0x42, 0xe2, 0xc4, 0x15, 0x09,
0xc0, 0x85, 0x1b, 0x47, 0xc4, 0x89, 0x23, 0x12, 0xff, 0x00, 0x12, 0x7f, 0x01, 0xea, 0xaa, 0xea, 0xb8, 0x70, 0x43, 0xe2, 0x82, 0x38, 0x71, 0x44, 0xe2, 0x1f, 0x40, 0xe2, 0x2f, 0x40, 0x5d, 0x55,
0x0f, 0xf7, 0x7c, 0x79, 0x3c, 0x3b, 0x2b, 0xef, 0xc5, 0xea, 0x7a, 0x55, 0xf5, 0xea, 0xbd, 0xdf, 0xfd, 0xe1, 0x9e, 0x2f, 0x8f, 0x67, 0x67, 0xe5, 0xbd, 0x58, 0x5d, 0xf5, 0x5e, 0x55, 0xbd, 0xf7,
0xfb, 0xd5, 0xab, 0xd7, 0xd5, 0x86, 0xc2, 0x8c, 0x0d, 0x2d, 0x46, 0x9a, 0x13, 0xcf, 0x65, 0x2e, 0x7b, 0xbf, 0x7a, 0xf5, 0xba, 0xdc, 0x90, 0x9f, 0xb2, 0x81, 0xc9, 0x48, 0x63, 0xec, 0x3a, 0xcc,
0xca, 0x88, 0x56, 0x5d, 0xff, 0x7c, 0x4a, 0xbc, 0x13, 0x21, 0xac, 0x97, 0x98, 0x3b, 0x71, 0x07, 0x41, 0x29, 0xd1, 0xaa, 0x95, 0x8f, 0x2c, 0x7b, 0xe8, 0x0c, 0xfa, 0x26, 0x33, 0x85, 0xa4, 0x96,
0x16, 0xb3, 0x64, 0x5b, 0x9f, 0x31, 0x6f, 0xd2, 0x17, 0x0d, 0xe3, 0xdf, 0x29, 0xc8, 0x76, 0x09, 0xfb, 0x6c, 0x42, 0xdc, 0x13, 0xd9, 0x28, 0x32, 0x67, 0xec, 0x44, 0x85, 0x53, 0xe6, 0x8e, 0x7b,
0xa5, 0xb6, 0xeb, 0xa0, 0x4d, 0x28, 0xd9, 0x8e, 0xc9, 0x3c, 0xcb, 0xa1, 0x56, 0x9f, 0xd9, 0xae, 0xa2, 0xa1, 0xff, 0x3b, 0x01, 0xe9, 0x0e, 0xa1, 0xd4, 0x72, 0x6c, 0xb4, 0x01, 0x45, 0xcb, 0x36,
0x53, 0x53, 0x36, 0x94, 0x46, 0x0e, 0x17, 0x6d, 0xa7, 0x17, 0x09, 0x51, 0x1b, 0x4a, 0xf4, 0x99, 0x98, 0x6b, 0xda, 0xd4, 0xec, 0x31, 0xcb, 0xb1, 0xab, 0xca, 0xba, 0x52, 0xcf, 0xe0, 0x82, 0x65,
0xe5, 0x0d, 0x4c, 0x2a, 0xe6, 0xd1, 0x9a, 0xba, 0xa1, 0x35, 0xf4, 0xd6, 0x5a, 0x53, 0xda, 0x22, 0x77, 0xc3, 0x4e, 0xd4, 0x82, 0x22, 0x7d, 0x66, 0xba, 0x7d, 0x83, 0x8a, 0x71, 0xb4, 0xaa, 0xae,
0xf5, 0x35, 0xbb, 0xfe, 0x28, 0xd9, 0xc0, 0x45, 0x1a, 0x6b, 0x51, 0xf4, 0x06, 0xe4, 0xa9, 0xed, 0x6b, 0xf5, 0x5c, 0x73, 0xb5, 0x21, 0xad, 0x93, 0xf3, 0x35, 0x3a, 0x9e, 0x96, 0x6c, 0xe0, 0x02,
0x0c, 0x47, 0xc4, 0x1c, 0x1c, 0xd5, 0x34, 0xbe, 0x4c, 0x4e, 0x08, 0x1e, 0x1d, 0xa1, 0xfb, 0x00, 0x8d, 0xb4, 0x28, 0x7a, 0x13, 0xb2, 0xd4, 0xb2, 0x07, 0x43, 0x62, 0xf4, 0x8f, 0xaa, 0x1a, 0x5f,
0xd6, 0x94, 0xb9, 0x7d, 0x77, 0x3c, 0xb6, 0x59, 0x2d, 0xc5, 0x7b, 0x63, 0x12, 0xf4, 0x16, 0x14, 0x26, 0x23, 0x3a, 0x1e, 0x1e, 0xa1, 0xbb, 0x00, 0xe6, 0x84, 0x39, 0x3d, 0x67, 0x34, 0xb2, 0x58,
0x99, 0xe5, 0x0d, 0x09, 0x33, 0x29, 0xf3, 0x6c, 0x67, 0x58, 0x4b, 0x6f, 0x28, 0x8d, 0x3c, 0x2e, 0x35, 0xc1, 0xa5, 0x91, 0x1e, 0xf4, 0x36, 0x14, 0x98, 0xe9, 0x0e, 0x08, 0x33, 0x28, 0x73, 0x2d,
0x08, 0x61, 0x97, 0xcb, 0xd0, 0x16, 0x64, 0xdd, 0x09, 0xe3, 0xf6, 0x65, 0x36, 0x94, 0x86, 0xde, 0x7b, 0x50, 0x4d, 0xae, 0x2b, 0xf5, 0x2c, 0xce, 0x8b, 0xce, 0x0e, 0xef, 0x43, 0x9b, 0x90, 0x76,
0xba, 0xd3, 0x14, 0xa8, 0xec, 0xfe, 0x8c, 0xf4, 0xa7, 0x8c, 0x1c, 0x88, 0x4e, 0x1c, 0x8c, 0x42, 0xc6, 0x8c, 0xdb, 0x97, 0x5a, 0x57, 0xea, 0xb9, 0xe6, 0xed, 0x86, 0x40, 0x65, 0xe7, 0xa7, 0xa4,
0x3b, 0x50, 0x89, 0xf9, 0x6e, 0x8e, 0xdd, 0x01, 0xa9, 0x65, 0x37, 0x94, 0x46, 0xa9, 0x75, 0x2f, 0x37, 0x61, 0x64, 0x5f, 0x08, 0xb1, 0xaf, 0x85, 0xb6, 0xa1, 0x1c, 0xf1, 0xdd, 0x18, 0x39, 0x7d,
0xf0, 0x2c, 0x06, 0xc3, 0x9e, 0x3b, 0x20, 0xb8, 0xcc, 0xe6, 0x05, 0x68, 0x0b, 0x72, 0xcf, 0x2d, 0x52, 0x4d, 0xaf, 0x2b, 0xf5, 0x62, 0xf3, 0x75, 0xdf, 0xb3, 0x08, 0x0c, 0xbb, 0x4e, 0x9f, 0xe0,
0xcf, 0xb1, 0x9d, 0x21, 0xad, 0xe5, 0x38, 0x2a, 0xb7, 0xe5, 0xaa, 0x3f, 0xf0, 0x7f, 0x9f, 0x8a, 0x12, 0x9b, 0xed, 0x40, 0x9b, 0x90, 0x79, 0x6e, 0xba, 0xb6, 0x65, 0x0f, 0x68, 0x35, 0xc3, 0x51,
0x3e, 0x1c, 0x0e, 0x42, 0x1f, 0x41, 0x61, 0xe2, 0x91, 0x08, 0xca, 0xfc, 0x02, 0x50, 0xea, 0x13, 0x59, 0x91, 0xab, 0x7e, 0xcf, 0xfb, 0x7d, 0x2a, 0x64, 0x38, 0x50, 0x42, 0x1f, 0x41, 0x7e, 0xec,
0x8f, 0x84, 0x40, 0x6e, 0x43, 0x71, 0xe2, 0x52, 0x16, 0x69, 0x80, 0x05, 0x34, 0x14, 0xfc, 0x29, 0x92, 0x10, 0xca, 0xec, 0x1c, 0x50, 0xe6, 0xc6, 0x2e, 0x09, 0x80, 0xdc, 0x82, 0xc2, 0xd8, 0xa1,
0x81, 0x8a, 0xfa, 0x4f, 0xa0, 0x10, 0xef, 0x45, 0x9b, 0x90, 0x11, 0x48, 0xf2, 0xf8, 0xeb, 0xad, 0x2c, 0x9c, 0x01, 0xe6, 0x98, 0x21, 0xef, 0x0d, 0xf1, 0xa7, 0xa8, 0xfd, 0x08, 0xf2, 0x51, 0x29,
0xa2, 0x74, 0xa1, 0xc7, 0x85, 0x58, 0x76, 0xfa, 0x74, 0x89, 0xe3, 0x65, 0x0f, 0x6a, 0xea, 0x86, 0xda, 0x80, 0x94, 0x40, 0x92, 0xc7, 0x3f, 0xd7, 0x2c, 0x48, 0x17, 0xba, 0xbc, 0x13, 0x4b, 0xa1,
0xd2, 0xd0, 0x70, 0x31, 0x26, 0xed, 0x0c, 0x8c, 0x7f, 0xa8, 0x50, 0x92, 0x90, 0x63, 0xf2, 0xf9, 0x47, 0x97, 0x28, 0x5e, 0x56, 0xbf, 0xaa, 0xae, 0x2b, 0x75, 0x0d, 0x17, 0x22, 0xbd, 0xed, 0xbe,
0x94, 0x50, 0x86, 0x1e, 0x42, 0xbe, 0x6f, 0x8d, 0x46, 0xc4, 0xf3, 0x27, 0x89, 0x35, 0xca, 0x4d, 0xfe, 0x0f, 0x15, 0x8a, 0x12, 0x72, 0x4c, 0x3e, 0x9b, 0x10, 0xca, 0xd0, 0x03, 0xc8, 0xf6, 0xcc,
0xc1, 0xca, 0x36, 0x97, 0x77, 0x1e, 0xe1, 0x9c, 0x18, 0xd1, 0x19, 0xa0, 0x77, 0x20, 0x2b, 0x9d, 0xe1, 0x90, 0xb8, 0xde, 0x20, 0xb1, 0x46, 0xa9, 0x21, 0x58, 0xd9, 0xe2, 0xfd, 0xed, 0x87, 0x38,
0xe3, 0x0b, 0x88, 0xb1, 0x71, 0xdf, 0x70, 0xd0, 0x8f, 0xde, 0x86, 0x34, 0x37, 0x95, 0x33, 0x4a, 0x23, 0x34, 0xda, 0x7d, 0xf4, 0x0e, 0xa4, 0xa5, 0x73, 0x7c, 0x01, 0xa1, 0x1b, 0xf5, 0x0d, 0xfb,
0x6f, 0xdd, 0x92, 0x86, 0xef, 0xb8, 0x53, 0x67, 0xc0, 0x03, 0x80, 0x45, 0x3f, 0xfa, 0x16, 0xe8, 0x72, 0x74, 0x0f, 0x92, 0xdc, 0x54, 0xce, 0xa8, 0x5c, 0xf3, 0x96, 0x34, 0x7c, 0xdb, 0x99, 0xd8,
0xcc, 0x3a, 0x1a, 0x11, 0x66, 0xb2, 0x93, 0x09, 0xe1, 0x14, 0x2b, 0xb5, 0xaa, 0xcd, 0x70, 0xa7, 0x7d, 0x1e, 0x00, 0x2c, 0xe4, 0xe8, 0x1b, 0x90, 0x63, 0xe6, 0xd1, 0x90, 0x30, 0x83, 0x9d, 0x8c,
0xf4, 0x78, 0x67, 0xef, 0x64, 0x42, 0x30, 0xb0, 0xf0, 0x19, 0x3d, 0x04, 0xe4, 0xb8, 0xcc, 0x4c, 0x09, 0xa7, 0x58, 0xb1, 0x59, 0x69, 0x04, 0x3b, 0xa5, 0xcb, 0x85, 0xdd, 0x93, 0x31, 0xc1, 0xc0,
0xec, 0x92, 0x34, 0x27, 0x68, 0xc5, 0x71, 0x59, 0x67, 0x6e, 0xa3, 0x6c, 0x42, 0xe9, 0x98, 0x9c, 0x82, 0x67, 0xf4, 0x00, 0x90, 0xed, 0x30, 0x23, 0xb6, 0x4b, 0x92, 0x9c, 0xa0, 0x65, 0xdb, 0x61,
0xd0, 0x89, 0xd5, 0x27, 0x26, 0x67, 0x3f, 0x27, 0x62, 0x1e, 0x17, 0x03, 0x29, 0x47, 0x3d, 0x4e, 0xed, 0x99, 0x8d, 0xb2, 0x01, 0xc5, 0x63, 0x72, 0x42, 0xc7, 0x66, 0x8f, 0x18, 0x9c, 0xfd, 0x9c,
0xd4, 0xec, 0x22, 0x44, 0x35, 0xbe, 0x54, 0xa0, 0x1c, 0x22, 0x4a, 0x27, 0xae, 0x43, 0x09, 0xda, 0x88, 0x59, 0x5c, 0xf0, 0x7b, 0x39, 0xea, 0x51, 0xa2, 0xa6, 0xe7, 0x21, 0xaa, 0xfe, 0x85, 0x02,
0x84, 0x34, 0xf1, 0x3c, 0xd7, 0x4b, 0xc0, 0x89, 0x0f, 0xdb, 0xbb, 0xbe, 0x18, 0x8b, 0xde, 0xab, 0xa5, 0x00, 0x51, 0x3a, 0x76, 0x6c, 0x4a, 0xd0, 0x06, 0x24, 0x89, 0xeb, 0x3a, 0x6e, 0x0c, 0x4e,
0x60, 0xf9, 0x00, 0x32, 0x1e, 0xa1, 0xd3, 0x11, 0x93, 0x60, 0xa2, 0x38, 0x91, 0x31, 0xef, 0xc1, 0x7c, 0xd0, 0xda, 0xf1, 0xba, 0xb1, 0x90, 0x5e, 0x05, 0xcb, 0xfb, 0x90, 0x72, 0x09, 0x9d, 0x0c,
0x72, 0x84, 0xf1, 0x1f, 0x15, 0xaa, 0xd2, 0x22, 0xee, 0x13, 0x5d, 0x9d, 0x48, 0xd7, 0x21, 0x17, 0x99, 0x04, 0x13, 0x45, 0x89, 0x8c, 0xb9, 0x04, 0x4b, 0x0d, 0xfd, 0x3f, 0x2a, 0x54, 0xa4, 0x45,
0xc0, 0xcd, 0xc3, 0x9c, 0xc7, 0x61, 0x1b, 0xdd, 0x85, 0x0c, 0x8f, 0x0b, 0xad, 0xa5, 0x37, 0xb4, 0xdc, 0x27, 0xba, 0x3c, 0x91, 0xae, 0x41, 0xc6, 0x87, 0x9b, 0x87, 0x39, 0x8b, 0x83, 0x36, 0xba,
0x46, 0x1e, 0xcb, 0x56, 0x92, 0x1d, 0x99, 0x6b, 0xb1, 0x23, 0x7b, 0x0e, 0x3b, 0x62, 0x61, 0xcf, 0x03, 0x29, 0x1e, 0x17, 0x5a, 0x4d, 0xae, 0x6b, 0xf5, 0x2c, 0x96, 0xad, 0x38, 0x3b, 0x52, 0xd7,
0x2d, 0x14, 0xf6, 0x5f, 0x29, 0x70, 0x27, 0x01, 0xf2, 0x4a, 0x04, 0xff, 0x7f, 0x2a, 0xbc, 0x2e, 0x62, 0x47, 0xfa, 0x1c, 0x76, 0x44, 0xc2, 0x9e, 0x99, 0x2b, 0xec, 0xbf, 0x54, 0xe0, 0x76, 0x0c,
0xed, 0xfa, 0x44, 0x22, 0xdb, 0x79, 0x55, 0x18, 0xf0, 0x26, 0x14, 0xc2, 0x2d, 0x6a, 0x4b, 0x1e, 0xe4, 0xa5, 0x08, 0xfe, 0xff, 0x54, 0x78, 0x43, 0xda, 0xf5, 0x89, 0x44, 0xb6, 0xfd, 0xaa, 0x30,
0x14, 0xb0, 0x7e, 0x1c, 0xf9, 0xb1, 0xa2, 0x64, 0xf8, 0x4a, 0x81, 0xfa, 0x59, 0xa0, 0xaf, 0x04, 0xe0, 0x2d, 0xc8, 0x07, 0x5b, 0xd4, 0x92, 0x3c, 0xc8, 0xe3, 0xdc, 0x71, 0xe8, 0xc7, 0x92, 0x92,
0x23, 0xbe, 0xd0, 0xe0, 0x5e, 0x64, 0x1c, 0xb6, 0x9c, 0x21, 0x79, 0x45, 0xf8, 0xf0, 0x1e, 0xc0, 0xe1, 0x4b, 0x05, 0x6a, 0x67, 0x81, 0xbe, 0x14, 0x8c, 0xf8, 0x5c, 0x83, 0xd7, 0x43, 0xe3, 0xb0,
0x31, 0x39, 0x31, 0x3d, 0x6e, 0x32, 0x67, 0x83, 0xef, 0x69, 0x18, 0xeb, 0xc0, 0x1b, 0x9c, 0x3f, 0x69, 0x0f, 0xc8, 0x2b, 0xc2, 0x87, 0xf7, 0x00, 0x8e, 0xc9, 0x89, 0xe1, 0x72, 0x93, 0x39, 0x1b,
0x0e, 0xfc, 0x5a, 0x51, 0x7e, 0xfc, 0x5a, 0x81, 0xda, 0xe9, 0x10, 0xac, 0x04, 0x3b, 0xfe, 0x9c, 0x3c, 0x4f, 0x83, 0x58, 0xfb, 0xde, 0xe0, 0xec, 0xb1, 0xef, 0xd7, 0x92, 0xf2, 0xe3, 0x57, 0x0a,
0x0a, 0xd9, 0xb1, 0xeb, 0x30, 0x9b, 0x9d, 0xbc, 0x32, 0xd9, 0xe2, 0x21, 0x20, 0xc2, 0x2d, 0x36, 0x54, 0x4f, 0x87, 0x60, 0x29, 0xd8, 0xf1, 0xa7, 0x44, 0xc0, 0x8e, 0x1d, 0x9b, 0x59, 0xec, 0xe4,
0xfb, 0xee, 0x68, 0x3a, 0x76, 0x4c, 0xc7, 0x1a, 0x13, 0x59, 0x7c, 0x56, 0x44, 0x4f, 0x9b, 0x77, 0x95, 0xc9, 0x16, 0x0f, 0x00, 0x11, 0x6e, 0xb1, 0xd1, 0x73, 0x86, 0x93, 0x91, 0x6d, 0xd8, 0xe6,
0xec, 0x5b, 0x63, 0x82, 0x7e, 0x08, 0xb7, 0xe5, 0xe8, 0xb9, 0x14, 0x93, 0xe1, 0xa4, 0x6a, 0x04, 0x88, 0xc8, 0xe2, 0xb3, 0x2c, 0x24, 0x2d, 0x2e, 0xd8, 0x33, 0x47, 0x04, 0x7d, 0x1f, 0x56, 0xa4,
0x96, 0x9e, 0x83, 0x44, 0x33, 0x10, 0xe0, 0x5b, 0x42, 0xc9, 0x27, 0xe7, 0xa7, 0xa4, 0xec, 0xb5, 0xf6, 0x4c, 0x8a, 0x49, 0x71, 0x52, 0xd5, 0x7d, 0x4b, 0xcf, 0x41, 0xa2, 0xe1, 0x77, 0xe0, 0x5b,
0x28, 0x97, 0xbb, 0x9c, 0x72, 0xf9, 0x45, 0x28, 0x57, 0x3f, 0x82, 0x5c, 0x60, 0x34, 0x5a, 0x87, 0x62, 0x92, 0x4f, 0xce, 0x4f, 0x49, 0xe9, 0x6b, 0x51, 0x2e, 0x73, 0x39, 0xe5, 0xb2, 0xf3, 0x50,
0x14, 0x37, 0x4d, 0xe1, 0xa6, 0xe9, 0x41, 0x01, 0xe9, 0x5b, 0xc4, 0x3b, 0x50, 0x15, 0xd2, 0x33, 0xae, 0x76, 0x04, 0x19, 0xdf, 0x68, 0xb4, 0x06, 0x09, 0x6e, 0x9a, 0xc2, 0x4d, 0xcb, 0xf9, 0x05,
0x6b, 0x34, 0x25, 0x3c, 0x70, 0x05, 0x2c, 0x1a, 0x68, 0x1d, 0xf4, 0x18, 0x56, 0x3c, 0x56, 0x05, 0xa4, 0x67, 0x11, 0x17, 0xa0, 0x0a, 0x24, 0xa7, 0xe6, 0x70, 0x42, 0x78, 0xe0, 0xf2, 0x58, 0x34,
0x0c, 0x51, 0x36, 0x8e, 0xd3, 0x3a, 0x86, 0xd8, 0x4a, 0xd0, 0xfa, 0x9f, 0x2a, 0xdc, 0x96, 0xa6, 0xd0, 0x1a, 0xe4, 0x22, 0x58, 0xf1, 0x58, 0xe5, 0x31, 0x84, 0xd9, 0x38, 0x4a, 0xeb, 0x08, 0x62,
0xed, 0x58, 0xac, 0xff, 0xec, 0xc6, 0x29, 0xfd, 0x2e, 0x64, 0x7d, 0x6b, 0x6c, 0x42, 0x6b, 0x1a, 0x4b, 0x41, 0xeb, 0x7f, 0xaa, 0xb0, 0x22, 0x4d, 0xdb, 0x36, 0x59, 0xef, 0xd9, 0x8d, 0x53, 0xfa,
0xe7, 0xd4, 0x19, 0xa4, 0x0e, 0x46, 0x2c, 0x5b, 0xf0, 0x6e, 0x42, 0xc9, 0xa2, 0x67, 0x14, 0xbb, 0x5d, 0x48, 0x7b, 0xd6, 0x58, 0x84, 0x56, 0x35, 0xce, 0xa9, 0x33, 0x48, 0xed, 0x6b, 0x2c, 0x5a,
0x45, 0x8b, 0xbe, 0x8c, 0x4a, 0xf7, 0x2b, 0x25, 0xac, 0x2b, 0x25, 0xa6, 0x37, 0x16, 0xea, 0x6f, 0xf0, 0x6e, 0x40, 0xd1, 0xa4, 0x67, 0x14, 0xbb, 0x05, 0x93, 0xbe, 0x8c, 0x4a, 0xf7, 0x4b, 0x25,
0x40, 0x56, 0x04, 0x32, 0x40, 0xf3, 0xae, 0xb4, 0x4d, 0x84, 0xf9, 0xa9, 0xcd, 0x9e, 0x09, 0xd5, 0xa8, 0x2b, 0x25, 0xa6, 0x37, 0x16, 0xea, 0xaf, 0x41, 0x5a, 0x04, 0xd2, 0x47, 0xf3, 0x8e, 0xb4,
0xc1, 0x30, 0xc3, 0x81, 0x32, 0x47, 0x9a, 0xfb, 0xc6, 0xe1, 0x8e, 0xb2, 0x8c, 0x72, 0x85, 0x2c, 0x4d, 0x84, 0xf9, 0xa9, 0xc5, 0x9e, 0x89, 0xa9, 0x7d, 0x35, 0xdd, 0x86, 0x12, 0x47, 0x9a, 0xfb,
0xa3, 0x9e, 0x5b, 0x95, 0x6a, 0xf1, 0xaa, 0xd4, 0xf8, 0x53, 0x54, 0x67, 0x71, 0x30, 0x5e, 0x52, 0xc6, 0xe1, 0x0e, 0xb3, 0x8c, 0x72, 0x85, 0x2c, 0xa3, 0x9e, 0x5b, 0x95, 0x6a, 0xd1, 0xaa, 0x54,
0xa5, 0xfd, 0x5e, 0x92, 0x66, 0xe1, 0xdb, 0x70, 0xc2, 0xfb, 0x97, 0x45, 0xb6, 0xab, 0xbe, 0xd8, 0xff, 0x63, 0x58, 0x67, 0x71, 0x30, 0x5e, 0x52, 0xa5, 0xfd, 0x5e, 0x9c, 0x66, 0xc1, 0xdb, 0x70,
0x1b, 0xbf, 0x89, 0x6a, 0xa5, 0x39, 0xe0, 0x6e, 0x8c, 0x4b, 0x0f, 0x93, 0x5c, 0x3a, 0x2b, 0x6f, 0xcc, 0xfb, 0x97, 0x45, 0xb6, 0xab, 0xbe, 0xd8, 0xeb, 0xbf, 0x0e, 0x6b, 0xa5, 0x19, 0xe0, 0x6e,
0x84, 0x3c, 0xfa, 0x05, 0x54, 0x39, 0x92, 0x51, 0x86, 0x7f, 0x81, 0x64, 0x4a, 0x16, 0xb8, 0xda, 0x8c, 0x4b, 0x0f, 0xe2, 0x5c, 0x3a, 0x2b, 0x6f, 0x04, 0x3c, 0xfa, 0x39, 0x54, 0x38, 0x92, 0x61,
0xa9, 0x02, 0xd7, 0xf8, 0x9b, 0x0a, 0xf7, 0xe3, 0xf0, 0xbc, 0xcc, 0x22, 0xfe, 0x83, 0x24, 0xb9, 0x86, 0x7f, 0x81, 0x64, 0x8a, 0x17, 0xb8, 0xda, 0xa9, 0x02, 0x57, 0xff, 0xab, 0x0a, 0x77, 0xa3,
0xd6, 0xe6, 0xc8, 0x95, 0x80, 0x64, 0x65, 0x19, 0xf6, 0x3b, 0x05, 0xd6, 0xcf, 0x85, 0x70, 0x45, 0xf0, 0xbc, 0xcc, 0x22, 0xfe, 0x83, 0x38, 0xb9, 0x56, 0x67, 0xc8, 0x15, 0x83, 0x64, 0x69, 0x19,
0x68, 0xf6, 0x07, 0x15, 0xaa, 0x5d, 0xe6, 0x11, 0x6b, 0x7c, 0xad, 0xdb, 0x98, 0x90, 0x95, 0xea, 0xf6, 0x5b, 0x05, 0xd6, 0xce, 0x85, 0x70, 0x49, 0x68, 0xf6, 0x7b, 0x15, 0x2a, 0x1d, 0xe6, 0x12,
0xd5, 0xae, 0x58, 0xb4, 0xc5, 0x43, 0x94, 0x38, 0x4a, 0x52, 0x97, 0x1c, 0x25, 0xe9, 0x85, 0x6e, 0x73, 0x74, 0xad, 0xdb, 0x98, 0x80, 0x95, 0xea, 0xd5, 0xae, 0x58, 0xb4, 0xf9, 0x43, 0x14, 0x3b,
0xf7, 0x62, 0xb8, 0x66, 0x2e, 0xc6, 0xd5, 0x68, 0xc3, 0x9d, 0x04, 0x50, 0x32, 0x84, 0x51, 0x39, 0x4a, 0x12, 0x97, 0x1c, 0x25, 0xc9, 0xb9, 0x6e, 0xf7, 0x22, 0xb8, 0xa6, 0x2e, 0xc6, 0x55, 0x6f,
0xa0, 0x5c, 0x5a, 0x0e, 0x7c, 0xa9, 0x42, 0x7d, 0x4e, 0xcb, 0x75, 0xd2, 0xf5, 0xc2, 0xa0, 0xc7, 0xc1, 0xed, 0x18, 0x50, 0x32, 0x84, 0x61, 0x39, 0xa0, 0x5c, 0x5a, 0x0e, 0x7c, 0xa1, 0x42, 0x6d,
0x53, 0x81, 0x76, 0xee, 0xb9, 0x92, 0xba, 0xe8, 0xb6, 0x23, 0xbd, 0x60, 0xa0, 0xae, 0xbc, 0x49, 0x66, 0x96, 0xeb, 0xa4, 0xeb, 0xb9, 0x41, 0x8f, 0xa6, 0x02, 0xed, 0xdc, 0x73, 0x25, 0x71, 0xd1,
0x3a, 0xf0, 0xc6, 0x99, 0x80, 0x2c, 0x01, 0xee, 0x6f, 0x55, 0x58, 0x9f, 0xd3, 0x75, 0xed, 0x9c, 0x6d, 0x47, 0x72, 0xce, 0x40, 0x5d, 0x79, 0x93, 0xb4, 0xe1, 0xcd, 0x33, 0x01, 0x59, 0x00, 0xdc,
0xf5, 0x42, 0x10, 0x4e, 0x26, 0xdb, 0xd4, 0xa5, 0xb7, 0x09, 0x37, 0x06, 0xf6, 0x3e, 0x6c, 0x9c, 0xdf, 0xa8, 0xb0, 0x36, 0x33, 0xd7, 0xb5, 0x73, 0xd6, 0x0b, 0x41, 0x38, 0x9e, 0x6c, 0x13, 0x97,
0x0f, 0xd0, 0x12, 0x88, 0xff, 0x51, 0x85, 0xaf, 0x25, 0x15, 0x5e, 0xe7, 0xc5, 0xfe, 0x85, 0xe0, 0xde, 0x26, 0xdc, 0x18, 0xd8, 0x7b, 0xb0, 0x7e, 0x3e, 0x40, 0x0b, 0x20, 0xfe, 0x07, 0x15, 0xbe,
0x3d, 0xff, 0xb6, 0x9e, 0x5a, 0xe2, 0x6d, 0xfd, 0xc6, 0xf0, 0x7f, 0x0c, 0xf7, 0xcf, 0x83, 0x6b, 0x12, 0x9f, 0xf0, 0x3a, 0x2f, 0xf6, 0x2f, 0x04, 0xef, 0xd9, 0xb7, 0xf5, 0xc4, 0x02, 0x6f, 0xeb,
0x09, 0xf4, 0x7f, 0x04, 0x85, 0x1d, 0x32, 0xb4, 0x9d, 0xe5, 0xb0, 0x9e, 0xfb, 0xd6, 0xa2, 0xce, 0x37, 0x86, 0xff, 0x63, 0xb8, 0x7b, 0x1e, 0x5c, 0x0b, 0xa0, 0xff, 0x03, 0xc8, 0x6f, 0x93, 0x81,
0x7f, 0x6b, 0x31, 0xbe, 0x0b, 0x45, 0xa9, 0x5a, 0xda, 0x15, 0x4b, 0x94, 0xca, 0x25, 0x89, 0xf2, 0x65, 0x2f, 0x86, 0xf5, 0xcc, 0x7f, 0x2d, 0xea, 0xec, 0x7f, 0x2d, 0xfa, 0xb7, 0xa1, 0x20, 0xa7,
0x0b, 0x05, 0x8a, 0x6d, 0xfe, 0x49, 0xe6, 0xc6, 0x0b, 0x85, 0xbb, 0x90, 0xb1, 0x98, 0x3b, 0xb6, 0x96, 0x76, 0x45, 0x12, 0xa5, 0x72, 0x49, 0xa2, 0xfc, 0x5c, 0x81, 0x42, 0x8b, 0xff, 0x25, 0x73,
0xfb, 0xf2, 0x63, 0x91, 0x6c, 0x19, 0x15, 0x28, 0x05, 0x16, 0x08, 0xfb, 0x8d, 0x9f, 0x42, 0x19, 0xe3, 0x85, 0xc2, 0x1d, 0x48, 0x99, 0xcc, 0x19, 0x59, 0x3d, 0xf9, 0x67, 0x91, 0x6c, 0xe9, 0x65,
0xbb, 0xa3, 0xd1, 0x91, 0xd5, 0x3f, 0xbe, 0x69, 0xab, 0x0c, 0x04, 0x95, 0x68, 0x2d, 0xb9, 0xfe, 0x28, 0xfa, 0x16, 0x08, 0xfb, 0xf5, 0x9f, 0x40, 0x09, 0x3b, 0xc3, 0xe1, 0x91, 0xd9, 0x3b, 0xbe,
0x67, 0xf0, 0x3a, 0x26, 0xd4, 0x1d, 0xcd, 0x48, 0xac, 0xa4, 0x58, 0xce, 0x12, 0x04, 0xa9, 0x01, 0x69, 0xab, 0x74, 0x04, 0xe5, 0x70, 0x2d, 0xb9, 0xfe, 0xa7, 0xf0, 0x06, 0x26, 0xd4, 0x19, 0x4e,
0x93, 0xdf, 0x55, 0xf2, 0x98, 0x3f, 0x1b, 0x7f, 0x55, 0xa0, 0xba, 0x47, 0x28, 0xb5, 0x86, 0x44, 0x49, 0xa4, 0xa4, 0x58, 0xcc, 0x12, 0x04, 0x89, 0x3e, 0x93, 0xff, 0xab, 0x64, 0x31, 0x7f, 0xd6,
0x10, 0x6c, 0x39, 0xd5, 0x17, 0xd5, 0x8c, 0x55, 0x48, 0x8b, 0x93, 0x57, 0xec, 0x37, 0xd1, 0x40, 0xff, 0xa2, 0x40, 0x65, 0x97, 0x50, 0x6a, 0x0e, 0x88, 0x20, 0xd8, 0x62, 0x53, 0x5f, 0x54, 0x33,
0x5b, 0x90, 0x0f, 0x37, 0x1b, 0x3f, 0x93, 0xcf, 0xde, 0x6b, 0xb9, 0x60, 0xaf, 0xf9, 0xd6, 0xc7, 0x56, 0x20, 0x29, 0x4e, 0x5e, 0xb1, 0xdf, 0x44, 0x03, 0x6d, 0x42, 0x36, 0xd8, 0x6c, 0xfc, 0x4c,
0xee, 0x47, 0xf8, 0xb3, 0xf1, 0x4b, 0x05, 0x6e, 0x49, 0xeb, 0xb7, 0x97, 0x8d, 0xcf, 0x45, 0xa6, 0x3e, 0x7b, 0xaf, 0x65, 0xfc, 0xbd, 0xe6, 0x59, 0x1f, 0xb9, 0x1f, 0xe1, 0xcf, 0xfa, 0x2f, 0x14,
0x07, 0x6b, 0x6a, 0xd1, 0x9a, 0xe8, 0x3e, 0x68, 0x41, 0x32, 0xd6, 0x5b, 0x05, 0xb9, 0xcb, 0x3e, 0xb8, 0x25, 0xad, 0xdf, 0x5a, 0x34, 0x3e, 0x17, 0x99, 0xee, 0xaf, 0xa9, 0x85, 0x6b, 0xa2, 0xbb,
0xb5, 0x46, 0x53, 0x82, 0xfd, 0x0e, 0x63, 0x0f, 0x0a, 0x9d, 0x58, 0xa5, 0x89, 0xd6, 0x40, 0x0d, 0xa0, 0xf9, 0xc9, 0x38, 0xd7, 0xcc, 0xcb, 0x5d, 0x76, 0x68, 0x0e, 0x27, 0x04, 0x7b, 0x02, 0x7d,
0xcd, 0x98, 0x1f, 0xae, 0xda, 0x83, 0xe4, 0x15, 0x85, 0x7a, 0xea, 0x8a, 0xe2, 0x2f, 0x0a, 0xac, 0x17, 0xf2, 0xed, 0x48, 0xa5, 0x89, 0x56, 0x41, 0x0d, 0xcc, 0x98, 0x55, 0x57, 0xad, 0x7e, 0xfc,
0x45, 0x2e, 0x5e, 0xfb, 0x60, 0xba, 0xaa, 0xb7, 0x1f, 0x42, 0xd9, 0x1e, 0x98, 0xa7, 0x8e, 0x21, 0x8a, 0x42, 0x3d, 0x75, 0x45, 0xf1, 0x67, 0x05, 0x56, 0x43, 0x17, 0xaf, 0x7d, 0x30, 0x5d, 0xd5,
0xbd, 0x55, 0x0d, 0x58, 0x1c, 0x77, 0x16, 0x17, 0xed, 0x58, 0x8b, 0x1a, 0x6b, 0x50, 0x3f, 0x8b, 0xdb, 0x0f, 0xa1, 0x64, 0xf5, 0x8d, 0x53, 0xc7, 0x50, 0xae, 0x59, 0xf1, 0x59, 0x1c, 0x75, 0x16,
0xbc, 0x92, 0xda, 0xff, 0x55, 0xe1, 0x56, 0x77, 0x32, 0xb2, 0x99, 0xcc, 0x51, 0x2f, 0xda, 0x9f, 0x17, 0xac, 0x48, 0x8b, 0xea, 0xab, 0x50, 0x3b, 0x8b, 0xbc, 0x92, 0xda, 0xff, 0x55, 0xe1, 0x56,
0x85, 0x2f, 0xe9, 0xde, 0x84, 0x02, 0xf5, 0xed, 0x90, 0xf7, 0x70, 0xb2, 0xa0, 0xd1, 0xb9, 0x4c, 0x67, 0x3c, 0xb4, 0x98, 0xcc, 0x51, 0x2f, 0xda, 0x9f, 0xb9, 0x2f, 0xe9, 0xde, 0x82, 0x3c, 0xf5,
0xdc, 0xc0, 0xf9, 0x71, 0x0a, 0x86, 0x4c, 0x1d, 0xc6, 0x49, 0xa8, 0x61, 0x90, 0x23, 0xa6, 0x0e, 0xec, 0x90, 0xf7, 0x70, 0xb2, 0xa0, 0xc9, 0xf1, 0x3e, 0x71, 0x03, 0xe7, 0xc5, 0xc9, 0x57, 0x99,
0x43, 0xdf, 0x84, 0x7b, 0xce, 0x74, 0x6c, 0x7a, 0xee, 0x73, 0x6a, 0x4e, 0x88, 0x67, 0x72, 0xcd, 0xd8, 0x8c, 0x93, 0x50, 0xc3, 0x20, 0x35, 0x26, 0x36, 0x43, 0x5f, 0x87, 0xd7, 0xed, 0xc9, 0xc8,
0xe6, 0xc4, 0xf2, 0x18, 0x4f, 0xf1, 0x1a, 0xbe, 0xed, 0x4c, 0xc7, 0xd8, 0x7d, 0x4e, 0x0f, 0x89, 0x70, 0x9d, 0xe7, 0xd4, 0x18, 0x13, 0xd7, 0xe0, 0x33, 0x1b, 0x63, 0xd3, 0x65, 0x3c, 0xc5, 0x6b,
0xc7, 0x17, 0x3f, 0xb4, 0x3c, 0x86, 0xbe, 0x07, 0x79, 0x6b, 0x34, 0x74, 0x3d, 0x9b, 0x3d, 0x1b, 0x78, 0xc5, 0x9e, 0x8c, 0xb0, 0xf3, 0x9c, 0x1e, 0x10, 0x97, 0x2f, 0x7e, 0x60, 0xba, 0x0c, 0x7d,
0xcb, 0x8b, 0x37, 0x43, 0x9a, 0x79, 0x0a, 0x99, 0xe6, 0x76, 0x30, 0x12, 0x47, 0x93, 0xd0, 0xbb, 0x17, 0xb2, 0xe6, 0x70, 0xe0, 0xb8, 0x16, 0x7b, 0x36, 0x92, 0x17, 0x6f, 0xba, 0x34, 0xf3, 0x14,
0x80, 0xa6, 0x94, 0x98, 0xc2, 0x38, 0xb1, 0xe8, 0xac, 0x25, 0x6f, 0xe1, 0xca, 0x53, 0x4a, 0x22, 0x32, 0x8d, 0x2d, 0x5f, 0x13, 0x87, 0x83, 0xd0, 0xbb, 0x80, 0x26, 0x94, 0x18, 0xc2, 0x38, 0xb1,
0x35, 0x9f, 0xb6, 0x8c, 0xbf, 0x6b, 0x80, 0xe2, 0x7a, 0x65, 0x8e, 0xfe, 0x36, 0x64, 0xf8, 0x7c, 0xe8, 0xb4, 0x29, 0x6f, 0xe1, 0x4a, 0x13, 0x4a, 0xc2, 0x69, 0x0e, 0x9b, 0xfa, 0xdf, 0x34, 0x40,
0x5a, 0x53, 0x78, 0x6c, 0xd7, 0xc3, 0x0c, 0x75, 0x6a, 0x6c, 0xd3, 0x37, 0x1b, 0xcb, 0xe1, 0xf5, 0xd1, 0x79, 0x65, 0x8e, 0xfe, 0x26, 0xa4, 0xf8, 0x78, 0x5a, 0x55, 0x78, 0x6c, 0xd7, 0x82, 0x0c,
0xcf, 0xa0, 0x10, 0xec, 0x54, 0xee, 0x4e, 0x3c, 0x1a, 0xca, 0x85, 0xa7, 0xab, 0xba, 0xc0, 0xe9, 0x75, 0x4a, 0xb7, 0xe1, 0x99, 0x8d, 0xa5, 0x7a, 0xed, 0x53, 0xc8, 0xfb, 0x3b, 0x95, 0xbb, 0x13,
0x5a, 0xff, 0x08, 0xf2, 0xbc, 0xaa, 0xbb, 0x54, 0x77, 0x54, 0x8b, 0xaa, 0xf1, 0x5a, 0xb4, 0xfe, 0x8d, 0x86, 0x72, 0xe1, 0xe9, 0xaa, 0xce, 0x71, 0xba, 0xd6, 0x3e, 0x82, 0x2c, 0xaf, 0xea, 0x2e,
0x2f, 0x05, 0x52, 0x7c, 0xf2, 0xc2, 0x2f, 0xbf, 0x7b, 0xfc, 0x7d, 0x41, 0x58, 0x29, 0xa2, 0x27, 0x9d, 0x3b, 0xac, 0x45, 0xd5, 0x68, 0x2d, 0x5a, 0xfb, 0x97, 0x02, 0x09, 0x3e, 0x78, 0xee, 0x97,
0x92, 0xf6, 0xdb, 0x17, 0x40, 0x12, 0x87, 0x00, 0x17, 0x8e, 0xe3, 0x80, 0xb4, 0x01, 0xc4, 0x9f, 0xdf, 0x5d, 0xfe, 0xbe, 0x20, 0xac, 0x14, 0xd1, 0x13, 0x49, 0xfb, 0xde, 0x05, 0x90, 0x44, 0x21,
0x1b, 0xb8, 0x2a, 0xc1, 0xc3, 0xaf, 0x5f, 0xa0, 0x2a, 0x74, 0x17, 0xe7, 0x69, 0xe8, 0x39, 0x82, 0xc0, 0xf9, 0xe3, 0x28, 0x20, 0x2d, 0x00, 0xf1, 0x71, 0x03, 0x9f, 0x4a, 0xf0, 0xf0, 0xab, 0x17,
0x14, 0xb5, 0x7f, 0x2e, 0xb2, 0xa4, 0x86, 0xf9, 0xb3, 0xf1, 0x3e, 0xdc, 0xf9, 0x98, 0xb0, 0xae, 0x4c, 0x15, 0xb8, 0x8b, 0xb3, 0x34, 0xf0, 0x1c, 0x41, 0x82, 0x5a, 0x3f, 0x13, 0x59, 0x52, 0xc3,
0x37, 0x0b, 0xb6, 0x5b, 0xb0, 0x7d, 0x2e, 0x80, 0xc9, 0xc0, 0x70, 0x37, 0x39, 0x49, 0x32, 0xe0, 0xfc, 0x59, 0x7f, 0x1f, 0x6e, 0x3f, 0x22, 0xac, 0xe3, 0x4e, 0xfd, 0xed, 0xe6, 0x6f, 0x9f, 0x0b,
0x3b, 0x50, 0xa0, 0xde, 0xcc, 0x9c, 0x9b, 0xe9, 0x57, 0x25, 0x61, 0x78, 0xe2, 0x93, 0x74, 0x1a, 0x60, 0xd2, 0x31, 0xdc, 0x89, 0x0f, 0x92, 0x0c, 0xf8, 0x16, 0xe4, 0xa9, 0x3b, 0x35, 0x66, 0x46,
0x35, 0x8c, 0xdf, 0xab, 0x70, 0xfb, 0xc9, 0x64, 0x60, 0xb1, 0x55, 0x3f, 0x3f, 0x96, 0x2c, 0xd5, 0x7a, 0x55, 0x49, 0x10, 0x9e, 0xe8, 0xa0, 0x1c, 0x0d, 0x1b, 0xfa, 0xdf, 0x15, 0x28, 0x1e, 0x5e,
0xd6, 0x20, 0xcf, 0xec, 0x31, 0xa1, 0xcc, 0x1a, 0x4f, 0xe4, 0x4e, 0x8e, 0x04, 0x3e, 0xaf, 0xc8, 0xe7, 0xe8, 0x88, 0x95, 0x50, 0xea, 0x9c, 0x25, 0xd4, 0x3d, 0x48, 0x4e, 0x07, 0x4c, 0xde, 0xea,
0x8c, 0x38, 0x4c, 0x5e, 0x40, 0x06, 0xbc, 0xda, 0xf5, 0x65, 0x3d, 0xf7, 0x98, 0x38, 0x58, 0xf4, 0x7a, 0x11, 0x8d, 0x7c, 0xb5, 0x72, 0xf8, 0x88, 0x59, 0x7d, 0x2c, 0xe4, 0x5e, 0x61, 0xf4, 0x63,
0x1b, 0xc7, 0x50, 0x9d, 0x47, 0x49, 0x02, 0xdf, 0x08, 0x14, 0xcc, 0x57, 0x6d, 0xb2, 0xd8, 0xf3, 0x6b, 0xc8, 0x88, 0x1b, 0x9c, 0x32, 0x11, 0xcd, 0x8f, 0xb9, 0x04, 0x4b, 0x0d, 0xfd, 0x3b, 0x50,
0x7b, 0xa4, 0x06, 0xf4, 0x0e, 0x54, 0xfc, 0xf2, 0x6d, 0x4c, 0xcc, 0xc8, 0x1e, 0xf1, 0x0f, 0x89, 0x0a, 0x7c, 0x09, 0xeb, 0x2a, 0x32, 0x25, 0x76, 0xb0, 0x37, 0x66, 0x86, 0x1f, 0xee, 0x78, 0x22,
0xb2, 0x90, 0xf7, 0x02, 0xf1, 0x83, 0x47, 0x50, 0x4e, 0xfc, 0xb5, 0x04, 0x95, 0x41, 0x7f, 0xb2, 0x2c, 0x35, 0xf4, 0xdf, 0xa9, 0xb0, 0xf2, 0x64, 0xdc, 0x37, 0xd9, 0xb2, 0x9f, 0xa5, 0x0b, 0x96,
0xdf, 0x3d, 0xdc, 0x6d, 0x77, 0xbe, 0xdf, 0xd9, 0x7d, 0x54, 0x79, 0x0d, 0x01, 0x64, 0xba, 0x9d, 0xad, 0xab, 0x90, 0x65, 0xd6, 0x88, 0x50, 0x66, 0x8e, 0xc6, 0x32, 0xab, 0x85, 0x1d, 0x5e, 0x44,
0xfd, 0x8f, 0x1f, 0xef, 0x56, 0x14, 0x94, 0x87, 0xf4, 0xde, 0x93, 0xc7, 0xbd, 0x4e, 0x45, 0xf5, 0x38, 0x0e, 0xf2, 0x32, 0xd6, 0xdf, 0x63, 0x1c, 0xa2, 0xae, 0x73, 0x4c, 0x6c, 0x2c, 0xe4, 0xfa,
0x1f, 0x7b, 0x4f, 0x0f, 0x0e, 0xdb, 0x15, 0xed, 0xc1, 0x87, 0xa0, 0x8b, 0x5a, 0xe8, 0xc0, 0x1b, 0x31, 0x54, 0x66, 0x51, 0x92, 0x50, 0xd7, 0xfd, 0x09, 0x66, 0x2b, 0x58, 0x59, 0xf8, 0x72, 0xa4,
0x10, 0xcf, 0x9f, 0xb0, 0x7f, 0x80, 0xf7, 0xb6, 0x1f, 0x57, 0x5e, 0x43, 0x59, 0xd0, 0x0e, 0xb1, 0x85, 0x02, 0x7a, 0x07, 0xca, 0x5e, 0x29, 0x3b, 0x22, 0x46, 0x68, 0x8f, 0xf8, 0x5a, 0xa4, 0x24,
0x3f, 0x33, 0x07, 0xa9, 0xc3, 0x83, 0x6e, 0xaf, 0xa2, 0xa2, 0x12, 0xc0, 0xf6, 0x93, 0xde, 0x41, 0xfa, 0xbb, 0x7e, 0xf7, 0xfd, 0x87, 0x50, 0x8a, 0x7d, 0x66, 0x83, 0x4a, 0x90, 0x7b, 0xb2, 0xd7,
0xfb, 0x60, 0x6f, 0xaf, 0xd3, 0xab, 0x68, 0x3b, 0x1f, 0x40, 0xd9, 0x76, 0x9b, 0x33, 0x9b, 0x11, 0x39, 0xd8, 0x69, 0xb5, 0x3f, 0x6e, 0xef, 0x3c, 0x2c, 0xbf, 0x86, 0x00, 0x52, 0x9d, 0xf6, 0xde,
0x4a, 0xc5, 0x9f, 0x83, 0x7e, 0xfc, 0x96, 0x6c, 0xd9, 0xee, 0x96, 0x78, 0xda, 0x1a, 0xba, 0x5b, 0xa3, 0xc7, 0x3b, 0x65, 0x05, 0x65, 0x21, 0xb9, 0xfb, 0xe4, 0x71, 0xb7, 0x5d, 0x56, 0xbd, 0xc7,
0x33, 0xb6, 0xc5, 0x7b, 0xb7, 0xc4, 0xa6, 0x38, 0xca, 0xf0, 0xd6, 0xfb, 0xff, 0x0f, 0x00, 0x00, 0xee, 0xd3, 0xfd, 0x83, 0x56, 0x59, 0xbb, 0xff, 0x21, 0xe4, 0x44, 0x5d, 0xb8, 0xef, 0xf6, 0x89,
0xff, 0xff, 0x43, 0xd4, 0xfe, 0x66, 0x8a, 0x24, 0x00, 0x00, 0xeb, 0x0d, 0xd8, 0xdb, 0xc7, 0xbb, 0x5b, 0x8f, 0xcb, 0xaf, 0xa1, 0x34, 0x68, 0x07, 0xd8, 0x1b,
0x99, 0x81, 0xc4, 0xc1, 0x7e, 0xa7, 0x5b, 0x56, 0x51, 0x11, 0x60, 0xeb, 0x49, 0x77, 0xbf, 0xb5,
0xbf, 0xbb, 0xdb, 0xee, 0x96, 0xb5, 0xed, 0x0f, 0xa0, 0x64, 0x39, 0x8d, 0xa9, 0xc5, 0x08, 0xa5,
0xe2, 0x43, 0xa9, 0x1f, 0xbe, 0x2d, 0x5b, 0x96, 0xb3, 0x29, 0x9e, 0x36, 0x07, 0xce, 0xe6, 0x94,
0x6d, 0x72, 0xe9, 0xa6, 0x48, 0x10, 0x47, 0x29, 0xde, 0x7a, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff,
0xff, 0x4b, 0xc0, 0xed, 0xac, 0xa8, 0x25, 0x00, 0x00,
} }
...@@ -83,7 +83,7 @@ import ( ...@@ -83,7 +83,7 @@ import (
var LogErrStacks bool var LogErrStacks bool
func init() { func init() {
flag.BoolVar(&LogErrStacks, "LogErrStacks", false, "log stack traces in errors") flag.BoolVar(&LogErrStacks, "log_err_stacks", false, "log stack traces for errors")
} }
// New returns an error with the supplied message. // New returns an error with the supplied message.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册