提交 442f4147 编写于 作者: martianzhang's avatar martianzhang

vendor daily update

  1. update vendor
  2. `use db` can't be explain, it will print err log at explain.go
上级 af21009e
......@@ -1059,6 +1059,9 @@ func (db *Connector) Explain(sql string, explainType int, formatType int) (exp *
// 执行EXPLAIN请求
exp.SQL = db.explainQuery(sql, explainType, formatType)
if exp.SQL == "" {
return exp, nil
}
res, err := db.Query(exp.SQL)
if err != nil {
return exp, err
......
......@@ -1399,7 +1399,39 @@ type WindowSpec struct {
// Restore implements Node interface.
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.
......@@ -1442,7 +1474,16 @@ type PartitionByClause struct {
// Restore implements Node interface.
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.
......@@ -1483,7 +1524,24 @@ type FrameClause struct {
// Restore implements Node interface.
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.
......
......@@ -725,7 +725,31 @@ type WindowFuncExpr struct {
// Restore implements Node interface.
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.
......
......@@ -113,104 +113,104 @@
{
"checksumSHA1": "oPVvRBag6XbaB4dN38RkdejKr70=",
"path": "github.com/pingcap/parser",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "8hcQ9TZ4Uy3ucYasBUPUTA/Km34=",
"checksumSHA1": "+KVexpbQ1kxBZA/iUahnFkIUGsU=",
"path": "github.com/pingcap/parser/ast",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "skWGV4FNvD3vr+5olepaPPnylUw=",
"path": "github.com/pingcap/parser/auth",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "t4UHo966WzU9Z0IJkyGHRp0loOk=",
"path": "github.com/pingcap/parser/charset",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "SInoXbsRe0tnBwmatmtZYfSFbdk=",
"path": "github.com/pingcap/parser/format",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "ZADwr2/PcEd9VI3XF9OvN4HkJ+8=",
"path": "github.com/pingcap/parser/model",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "kkqyRzO7TCqnABxjJEo+JclJZLM=",
"path": "github.com/pingcap/parser/mysql",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "mxpiJJ3b08I0o0Sd2rJLYMwz7uw=",
"path": "github.com/pingcap/parser/opcode",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "XvnUllvwMYd6HrMvMiKnn4cGN2M=",
"path": "github.com/pingcap/parser/terror",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "CpuZhpMNeho4tIFPwY2GUDvuEfQ=",
"path": "github.com/pingcap/parser/types",
"revision": "24cab7ea76283def175c657d7572bf4764fead4c",
"revisionTime": "2019-01-04T04:24:18Z"
"revision": "5f15dc90ca5964d59634063e29c22ff6c7d9e49e",
"revisionTime": "2019-01-05T06:04:45Z"
},
{
"checksumSHA1": "MxoLdFWi8nwd0uqTJnYqw+JaDAY=",
"path": "github.com/pingcap/tidb/sessionctx/stmtctx",
"revision": "7ee6811d9777bc2ae281292bf2f6313abb64b5c3",
"revisionTime": "2019-01-04T07:15:18Z"
"revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5",
"revisionTime": "2019-01-05T02:32:10Z"
},
{
"checksumSHA1": "wlD7aGqTJ5eBQYK0ub4b2Ick1j8=",
"path": "github.com/pingcap/tidb/types",
"revision": "7ee6811d9777bc2ae281292bf2f6313abb64b5c3",
"revisionTime": "2019-01-04T07:15:18Z"
"revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5",
"revisionTime": "2019-01-05T02:32:10Z"
},
{
"checksumSHA1": "DWVD7+ygtT66IQ+cqXmMJ5OVqUk=",
"path": "github.com/pingcap/tidb/types/json",
"revision": "7ee6811d9777bc2ae281292bf2f6313abb64b5c3",
"revisionTime": "2019-01-04T07:15:18Z"
"revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5",
"revisionTime": "2019-01-05T02:32:10Z"
},
{
"checksumSHA1": "6vi/eCZXqNTa5eAUpxDZet4LPlY=",
"path": "github.com/pingcap/tidb/types/parser_driver",
"revision": "7ee6811d9777bc2ae281292bf2f6313abb64b5c3",
"revisionTime": "2019-01-04T07:15:18Z"
"revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5",
"revisionTime": "2019-01-05T02:32:10Z"
},
{
"checksumSHA1": "SS7twHZofFKr8w/pwIKmkp3u5qU=",
"path": "github.com/pingcap/tidb/util/execdetails",
"revision": "7ee6811d9777bc2ae281292bf2f6313abb64b5c3",
"revisionTime": "2019-01-04T07:15:18Z"
"revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5",
"revisionTime": "2019-01-05T02:32:10Z"
},
{
"checksumSHA1": "nUC7zVoAMNR2a+z2iGqHoN2AkFE=",
"path": "github.com/pingcap/tidb/util/hack",
"revision": "7ee6811d9777bc2ae281292bf2f6313abb64b5c3",
"revisionTime": "2019-01-04T07:15:18Z"
"revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5",
"revisionTime": "2019-01-05T02:32:10Z"
},
{
"checksumSHA1": "xSyepiuqsoaaeDch7cXeumvVHKM=",
"path": "github.com/pingcap/tidb/util/memory",
"revision": "7ee6811d9777bc2ae281292bf2f6313abb64b5c3",
"revisionTime": "2019-01-04T07:15:18Z"
"revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5",
"revisionTime": "2019-01-05T02:32:10Z"
},
{
"checksumSHA1": "SmYeIK/fIYXNu8IKxD6HOVQVTuU=",
......@@ -407,62 +407,62 @@
{
"checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=",
"path": "vitess.io/vitess/go/bytes2",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "JVCEN4UGRmg3TofIBdzZMZ3G0Ww=",
"path": "vitess.io/vitess/go/hack",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "F5pcGq+2W1FHEjgktTdKOE6W8mk=",
"path": "vitess.io/vitess/go/sqltypes",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "ntFIQYkBS51G6y+FEkjFW40+HOU=",
"path": "vitess.io/vitess/go/vt/log",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "HHIcl3lpWkzLARkkNv94fVaObjo=",
"path": "vitess.io/vitess/go/vt/proto/query",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "YLWTmL+rvz0htn0niRMrIUI6rKc=",
"path": "vitess.io/vitess/go/vt/proto/topodata",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "tNNlcSFFnlOauS2hXnrz/zA/wfk=",
"path": "vitess.io/vitess/go/vt/proto/vtgate",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "qz32abYdmm9NfKTc++K0l1EvXXM=",
"path": "vitess.io/vitess/go/vt/proto/vtrpc",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "IDe+9Bn42lZVsuoYO/epdguiErk=",
"path": "vitess.io/vitess/go/vt/sqlparser",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
},
{
"checksumSHA1": "Jx+gOh/kiBDSZxEIWHyYn9brjdo=",
"path": "vitess.io/vitess/go/vt/vterrors",
"revision": "6cf46db00d35072b69e7dcbec207d99836da0419",
"revisionTime": "2019-01-03T03:49:25Z"
"revision": "ae79dd48f3157c96d083c890f670011cdebf0a2b",
"revisionTime": "2019-01-04T23:32:40Z"
}
],
"rootPath": "github.com/XiaoMi/soar"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册