提交 4e9b365a 编写于 作者: martianzhang's avatar martianzhang

update vendor

上级 b647d031
...@@ -1399,7 +1399,39 @@ type WindowSpec struct { ...@@ -1399,7 +1399,39 @@ type WindowSpec struct {
// Restore implements Node interface. // Restore implements Node interface.
func (n *WindowSpec) Restore(ctx *RestoreCtx) error { func (n *WindowSpec) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented") if name := n.Name.String(); name != "" {
ctx.WriteName(name)
ctx.WriteKeyWord(" AS ")
}
ctx.WritePlain("(")
sep := ""
if refName := n.Ref.String(); refName != "" {
ctx.WriteName(refName)
sep = " "
}
if n.PartitionBy != nil {
ctx.WritePlain(sep)
if err := n.PartitionBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowSpec.PartitionBy")
}
sep = " "
}
if n.OrderBy != nil {
ctx.WritePlain(sep)
if err := n.OrderBy.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowSpec.OrderBy")
}
sep = " "
}
if n.Frame != nil {
ctx.WritePlain(sep)
if err := n.Frame.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowSpec.Frame")
}
}
ctx.WritePlain(")")
return nil
} }
// Accept implements Node Accept interface. // Accept implements Node Accept interface.
...@@ -1442,7 +1474,16 @@ type PartitionByClause struct { ...@@ -1442,7 +1474,16 @@ type PartitionByClause struct {
// Restore implements Node interface. // Restore implements Node interface.
func (n *PartitionByClause) Restore(ctx *RestoreCtx) error { func (n *PartitionByClause) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented") ctx.WriteKeyWord("PARTITION BY ")
for i, v := range n.Items {
if i != 0 {
ctx.WritePlain(", ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PartitionByClause.Items[%d]", i)
}
}
return nil
} }
// Accept implements Node Accept interface. // Accept implements Node Accept interface.
...@@ -1483,7 +1524,24 @@ type FrameClause struct { ...@@ -1483,7 +1524,24 @@ type FrameClause struct {
// Restore implements Node interface. // Restore implements Node interface.
func (n *FrameClause) Restore(ctx *RestoreCtx) error { func (n *FrameClause) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented") switch n.Type {
case Rows:
ctx.WriteKeyWord("ROWS")
case Ranges:
ctx.WriteKeyWord("RANGE")
default:
return errors.New("Unsupported window function frame type")
}
ctx.WriteKeyWord(" BETWEEN ")
if err := n.Extent.Start.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore FrameClause.Extent.Start")
}
ctx.WriteKeyWord(" AND ")
if err := n.Extent.End.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore FrameClause.Extent.End")
}
return nil
} }
// Accept implements Node Accept interface. // Accept implements Node Accept interface.
......
...@@ -725,7 +725,31 @@ type WindowFuncExpr struct { ...@@ -725,7 +725,31 @@ type WindowFuncExpr struct {
// Restore implements Node interface. // Restore implements Node interface.
func (n *WindowFuncExpr) Restore(ctx *RestoreCtx) error { func (n *WindowFuncExpr) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented") ctx.WriteKeyWord(n.F)
ctx.WritePlain("(")
for i, v := range n.Args {
if i != 0 {
ctx.WritePlain(", ")
} else if n.Distinct {
ctx.WriteKeyWord("DISTINCT ")
}
if err := v.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore WindowFuncExpr.Args[%d]", i)
}
}
ctx.WritePlain(")")
if n.FromLast {
ctx.WriteKeyWord(" FROM LAST")
}
if n.IgnoreNull {
ctx.WriteKeyWord(" IGNORE NULLS")
}
ctx.WriteKeyWord(" OVER ")
if err := n.Spec.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore WindowFuncExpr.Spec")
}
return nil
} }
// Format formats the window function expression into a Writer. // Format formats the window function expression into a Writer.
......
...@@ -730,6 +730,7 @@ const ( ...@@ -730,6 +730,7 @@ const (
AdminChecksumTable AdminChecksumTable
AdminShowSlow AdminShowSlow
AdminShowNextRowID AdminShowNextRowID
AdminRestoreTable
) )
// HandleRange represents a range where handle value >= Begin and < End. // HandleRange represents a range where handle value >= Begin and < End.
......
...@@ -411,6 +411,7 @@ var tokenMap = map[string]int{ ...@@ -411,6 +411,7 @@ var tokenMap = map[string]int{
"RESPECT": respect, "RESPECT": respect,
"REPLICATION": replication, "REPLICATION": replication,
"RESTRICT": restrict, "RESTRICT": restrict,
"RESTORE": restore,
"REVERSE": reverse, "REVERSE": reverse,
"REVOKE": revoke, "REVOKE": revoke,
"RIGHT": right, "RIGHT": right,
......
...@@ -54,6 +54,7 @@ const ( ...@@ -54,6 +54,7 @@ const (
ActionModifyTableCharsetAndCollate ActionType = 22 ActionModifyTableCharsetAndCollate ActionType = 22
ActionTruncateTablePartition ActionType = 23 ActionTruncateTablePartition ActionType = 23
ActionDropView ActionType = 24 ActionDropView ActionType = 24
ActionRestoreTable ActionType = 25
) )
// AddIndexStr is a string related to the operation of "add index". // AddIndexStr is a string related to the operation of "add index".
...@@ -84,6 +85,7 @@ var actionMap = map[ActionType]string{ ...@@ -84,6 +85,7 @@ var actionMap = map[ActionType]string{
ActionModifyTableCharsetAndCollate: "modify table charset and collate", ActionModifyTableCharsetAndCollate: "modify table charset and collate",
ActionTruncateTablePartition: "truncate partition", ActionTruncateTablePartition: "truncate partition",
ActionDropView: "drop view", ActionDropView: "drop view",
ActionRestoreTable: "restore table",
} }
// String return current ddl action in string // String return current ddl action in string
......
...@@ -482,6 +482,7 @@ import ( ...@@ -482,6 +482,7 @@ import (
tidbHJ "TIDB_HJ" tidbHJ "TIDB_HJ"
tidbSMJ "TIDB_SMJ" tidbSMJ "TIDB_SMJ"
tidbINLJ "TIDB_INLJ" tidbINLJ "TIDB_INLJ"
restore "RESTORE"
builtinAddDate builtinAddDate
builtinBitAnd builtinBitAnd
...@@ -2995,7 +2996,7 @@ UnReservedKeyword: ...@@ -2995,7 +2996,7 @@ UnReservedKeyword:
TiDBKeyword: TiDBKeyword:
"ADMIN" | "BUCKETS" | "CANCEL" | "DDL" | "JOBS" | "JOB" | "STATS" | "STATS_META" | "STATS_HISTOGRAMS" | "STATS_BUCKETS" | "STATS_HEALTHY" | "TIDB" | "TIDB_HJ" | "TIDB_SMJ" | "TIDB_INLJ" "ADMIN" | "BUCKETS" | "CANCEL" | "DDL" | "JOBS" | "JOB" | "STATS" | "STATS_META" | "STATS_HISTOGRAMS" | "STATS_BUCKETS" | "STATS_HEALTHY" | "TIDB" | "TIDB_HJ" | "TIDB_SMJ" | "TIDB_INLJ" | "RESTORE"
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"
...@@ -5763,6 +5764,13 @@ AdminStmt: ...@@ -5763,6 +5764,13 @@ AdminStmt:
Index: string($5), Index: string($5),
} }
} }
| "ADMIN" "RESTORE" "TABLE" "BY" "JOB" NumList
{
$$ = &ast.AdminStmt{
Tp: ast.AdminRestoreTable,
JobIDs: $6.([]int64),
}
}
| "ADMIN" "CLEANUP" "INDEX" TableName Identifier | "ADMIN" "CLEANUP" "INDEX" TableName Identifier
{ {
$$ = &ast.AdminStmt{ $$ = &ast.AdminStmt{
......
...@@ -111,106 +111,106 @@ ...@@ -111,106 +111,106 @@
"revisionTime": "2018-10-24T15:10:47Z" "revisionTime": "2018-10-24T15:10:47Z"
}, },
{ {
"checksumSHA1": "/y8A3Ro/qdM6f7XFR0JADJl0sFw=", "checksumSHA1": "oPVvRBag6XbaB4dN38RkdejKr70=",
"path": "github.com/pingcap/parser", "path": "github.com/pingcap/parser",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "TmSk8q5zaa7SI3G9VJpal7z8o+4=", "checksumSHA1": "+KVexpbQ1kxBZA/iUahnFkIUGsU=",
"path": "github.com/pingcap/parser/ast", "path": "github.com/pingcap/parser/ast",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "skWGV4FNvD3vr+5olepaPPnylUw=", "checksumSHA1": "skWGV4FNvD3vr+5olepaPPnylUw=",
"path": "github.com/pingcap/parser/auth", "path": "github.com/pingcap/parser/auth",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "t4UHo966WzU9Z0IJkyGHRp0loOk=", "checksumSHA1": "t4UHo966WzU9Z0IJkyGHRp0loOk=",
"path": "github.com/pingcap/parser/charset", "path": "github.com/pingcap/parser/charset",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "SInoXbsRe0tnBwmatmtZYfSFbdk=", "checksumSHA1": "SInoXbsRe0tnBwmatmtZYfSFbdk=",
"path": "github.com/pingcap/parser/format", "path": "github.com/pingcap/parser/format",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "fMXmawvMELfwCuO/vrNtkUjQN/0=", "checksumSHA1": "ZADwr2/PcEd9VI3XF9OvN4HkJ+8=",
"path": "github.com/pingcap/parser/model", "path": "github.com/pingcap/parser/model",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "kkqyRzO7TCqnABxjJEo+JclJZLM=", "checksumSHA1": "kkqyRzO7TCqnABxjJEo+JclJZLM=",
"path": "github.com/pingcap/parser/mysql", "path": "github.com/pingcap/parser/mysql",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "mxpiJJ3b08I0o0Sd2rJLYMwz7uw=", "checksumSHA1": "mxpiJJ3b08I0o0Sd2rJLYMwz7uw=",
"path": "github.com/pingcap/parser/opcode", "path": "github.com/pingcap/parser/opcode",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "XvnUllvwMYd6HrMvMiKnn4cGN2M=", "checksumSHA1": "XvnUllvwMYd6HrMvMiKnn4cGN2M=",
"path": "github.com/pingcap/parser/terror", "path": "github.com/pingcap/parser/terror",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "CpuZhpMNeho4tIFPwY2GUDvuEfQ=", "checksumSHA1": "CpuZhpMNeho4tIFPwY2GUDvuEfQ=",
"path": "github.com/pingcap/parser/types", "path": "github.com/pingcap/parser/types",
"revision": "5d5a6dd34655f3d11723db47479541d32d2c76f2", "revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-03T13:14:33Z" "revisionTime": "2019-01-05T06:04:45Z"
}, },
{ {
"checksumSHA1": "MxoLdFWi8nwd0uqTJnYqw+JaDAY=", "checksumSHA1": "MxoLdFWi8nwd0uqTJnYqw+JaDAY=",
"path": "github.com/pingcap/tidb/sessionctx/stmtctx", "path": "github.com/pingcap/tidb/sessionctx/stmtctx",
"revision": "0147e0cece4481807289cc4cd867cb8d2abd3145", "revision": "78a51a4626999279749c460f3f42a2e92897c2e3",
"revisionTime": "2019-01-03T09:11:14Z" "revisionTime": "2019-01-05T13:32:32Z"
}, },
{ {
"checksumSHA1": "wlD7aGqTJ5eBQYK0ub4b2Ick1j8=", "checksumSHA1": "wlD7aGqTJ5eBQYK0ub4b2Ick1j8=",
"path": "github.com/pingcap/tidb/types", "path": "github.com/pingcap/tidb/types",
"revision": "0147e0cece4481807289cc4cd867cb8d2abd3145", "revision": "78a51a4626999279749c460f3f42a2e92897c2e3",
"revisionTime": "2019-01-03T09:11:14Z" "revisionTime": "2019-01-05T13:32:32Z"
}, },
{ {
"checksumSHA1": "DWVD7+ygtT66IQ+cqXmMJ5OVqUk=", "checksumSHA1": "DWVD7+ygtT66IQ+cqXmMJ5OVqUk=",
"path": "github.com/pingcap/tidb/types/json", "path": "github.com/pingcap/tidb/types/json",
"revision": "0147e0cece4481807289cc4cd867cb8d2abd3145", "revision": "78a51a4626999279749c460f3f42a2e92897c2e3",
"revisionTime": "2019-01-03T09:11:14Z" "revisionTime": "2019-01-05T13:32:32Z"
}, },
{ {
"checksumSHA1": "6vi/eCZXqNTa5eAUpxDZet4LPlY=", "checksumSHA1": "6vi/eCZXqNTa5eAUpxDZet4LPlY=",
"path": "github.com/pingcap/tidb/types/parser_driver", "path": "github.com/pingcap/tidb/types/parser_driver",
"revision": "0147e0cece4481807289cc4cd867cb8d2abd3145", "revision": "78a51a4626999279749c460f3f42a2e92897c2e3",
"revisionTime": "2019-01-03T09:11:14Z" "revisionTime": "2019-01-05T13:32:32Z"
}, },
{ {
"checksumSHA1": "SS7twHZofFKr8w/pwIKmkp3u5qU=", "checksumSHA1": "SS7twHZofFKr8w/pwIKmkp3u5qU=",
"path": "github.com/pingcap/tidb/util/execdetails", "path": "github.com/pingcap/tidb/util/execdetails",
"revision": "0147e0cece4481807289cc4cd867cb8d2abd3145", "revision": "78a51a4626999279749c460f3f42a2e92897c2e3",
"revisionTime": "2019-01-03T09:11:14Z" "revisionTime": "2019-01-05T13:32:32Z"
}, },
{ {
"checksumSHA1": "nUC7zVoAMNR2a+z2iGqHoN2AkFE=", "checksumSHA1": "nUC7zVoAMNR2a+z2iGqHoN2AkFE=",
"path": "github.com/pingcap/tidb/util/hack", "path": "github.com/pingcap/tidb/util/hack",
"revision": "0147e0cece4481807289cc4cd867cb8d2abd3145", "revision": "78a51a4626999279749c460f3f42a2e92897c2e3",
"revisionTime": "2019-01-03T09:11:14Z" "revisionTime": "2019-01-05T13:32:32Z"
}, },
{ {
"checksumSHA1": "xSyepiuqsoaaeDch7cXeumvVHKM=", "checksumSHA1": "xSyepiuqsoaaeDch7cXeumvVHKM=",
"path": "github.com/pingcap/tidb/util/memory", "path": "github.com/pingcap/tidb/util/memory",
"revision": "0147e0cece4481807289cc4cd867cb8d2abd3145", "revision": "78a51a4626999279749c460f3f42a2e92897c2e3",
"revisionTime": "2019-01-03T09:11:14Z" "revisionTime": "2019-01-05T13:32:32Z"
}, },
{ {
"checksumSHA1": "SmYeIK/fIYXNu8IKxD6HOVQVTuU=", "checksumSHA1": "SmYeIK/fIYXNu8IKxD6HOVQVTuU=",
...@@ -407,62 +407,62 @@ ...@@ -407,62 +407,62 @@
{ {
"checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=", "checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=",
"path": "vitess.io/vitess/go/bytes2", "path": "vitess.io/vitess/go/bytes2",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "JVCEN4UGRmg3TofIBdzZMZ3G0Ww=", "checksumSHA1": "JVCEN4UGRmg3TofIBdzZMZ3G0Ww=",
"path": "vitess.io/vitess/go/hack", "path": "vitess.io/vitess/go/hack",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "F5pcGq+2W1FHEjgktTdKOE6W8mk=", "checksumSHA1": "F5pcGq+2W1FHEjgktTdKOE6W8mk=",
"path": "vitess.io/vitess/go/sqltypes", "path": "vitess.io/vitess/go/sqltypes",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "ntFIQYkBS51G6y+FEkjFW40+HOU=", "checksumSHA1": "ntFIQYkBS51G6y+FEkjFW40+HOU=",
"path": "vitess.io/vitess/go/vt/log", "path": "vitess.io/vitess/go/vt/log",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "HHIcl3lpWkzLARkkNv94fVaObjo=", "checksumSHA1": "HHIcl3lpWkzLARkkNv94fVaObjo=",
"path": "vitess.io/vitess/go/vt/proto/query", "path": "vitess.io/vitess/go/vt/proto/query",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "YLWTmL+rvz0htn0niRMrIUI6rKc=", "checksumSHA1": "YLWTmL+rvz0htn0niRMrIUI6rKc=",
"path": "vitess.io/vitess/go/vt/proto/topodata", "path": "vitess.io/vitess/go/vt/proto/topodata",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "tNNlcSFFnlOauS2hXnrz/zA/wfk=", "checksumSHA1": "tNNlcSFFnlOauS2hXnrz/zA/wfk=",
"path": "vitess.io/vitess/go/vt/proto/vtgate", "path": "vitess.io/vitess/go/vt/proto/vtgate",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "qz32abYdmm9NfKTc++K0l1EvXXM=", "checksumSHA1": "qz32abYdmm9NfKTc++K0l1EvXXM=",
"path": "vitess.io/vitess/go/vt/proto/vtrpc", "path": "vitess.io/vitess/go/vt/proto/vtrpc",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "IDe+9Bn42lZVsuoYO/epdguiErk=", "checksumSHA1": "IDe+9Bn42lZVsuoYO/epdguiErk=",
"path": "vitess.io/vitess/go/vt/sqlparser", "path": "vitess.io/vitess/go/vt/sqlparser",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
}, },
{ {
"checksumSHA1": "Jx+gOh/kiBDSZxEIWHyYn9brjdo=", "checksumSHA1": "Jx+gOh/kiBDSZxEIWHyYn9brjdo=",
"path": "vitess.io/vitess/go/vt/vterrors", "path": "vitess.io/vitess/go/vt/vterrors",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419", "revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-03T03:49:25Z" "revisionTime": "2019-01-04T23:32:40Z"
} }
], ],
"rootPath": "github.com/XiaoMi/soar" "rootPath": "github.com/XiaoMi/soar"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册