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

daily update pingcap/parser

  support FULLTEXT INDEX syntax
上级 864305d5
......@@ -473,7 +473,58 @@ type Constraint struct {
// Restore implements Node interface.
func (n *Constraint) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
switch n.Tp {
case ConstraintNoConstraint:
return nil
case ConstraintPrimaryKey:
ctx.WriteKeyWord("PRIMARY KEY")
case ConstraintKey:
ctx.WriteKeyWord("KEY")
case ConstraintIndex:
ctx.WriteKeyWord("INDEX")
case ConstraintUniq:
ctx.WriteKeyWord("UNIQUE")
case ConstraintUniqKey:
ctx.WriteKeyWord("UNIQUE KEY")
case ConstraintUniqIndex:
ctx.WriteKeyWord("UNIQUE INDEX")
case ConstraintForeignKey:
ctx.WriteKeyWord("FOREIGN KEY")
case ConstraintFulltext:
ctx.WriteKeyWord("FULLTEXT")
}
if n.Name != "" {
ctx.WritePlain(" ")
ctx.WriteName(n.Name)
}
ctx.WritePlain("(")
for i, keys := range n.Keys {
if i > 0 {
ctx.WritePlain(", ")
}
if err := keys.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while splicing Constraint Keys: [%v]", i)
}
}
ctx.WritePlain(")")
if n.Refer != nil {
ctx.WritePlain(" ")
if err := n.Refer.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing Constraint Refer")
}
}
if n.Option != nil {
ctx.WritePlain(" ")
if err := n.Option.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while splicing Constraint Option")
}
}
return nil
}
// Accept implements Node Accept interface.
......@@ -955,7 +1006,20 @@ type ColumnPosition struct {
// Restore implements Node interface.
func (n *ColumnPosition) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
switch n.Tp {
case ColumnPositionNone:
// do nothing
case ColumnPositionFirst:
ctx.WriteKeyWord("FIRST")
case ColumnPositionAfter:
ctx.WriteKeyWord("AFTER ")
if err := n.RelativeColumn.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ColumnPosition.RelativeColumn")
}
default:
return errors.Errorf("invalid ColumnPositionType: %d", n.Tp)
}
return nil
}
// Accept implements Node Accept interface.
......
......@@ -579,7 +579,13 @@ type ByItem struct {
// Restore implements Node interface.
func (n *ByItem) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore ByItem.Expr")
}
if n.Desc {
ctx.WriteKeyWord(" DESC")
}
return nil
}
// Accept implements Node Accept interface.
......@@ -605,7 +611,16 @@ type GroupByClause struct {
// Restore implements Node interface.
func (n *GroupByClause) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
ctx.WriteKeyWord("GROUP 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 GroupByClause.Items[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
......@@ -633,7 +648,11 @@ type HavingClause struct {
// Restore implements Node interface.
func (n *HavingClause) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
ctx.WriteKeyWord("HAVING ")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore HavingClause.Expr")
}
return nil
}
// Accept implements Node Accept interface.
......@@ -660,7 +679,16 @@ type OrderByClause struct {
// Restore implements Node interface.
func (n *OrderByClause) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
ctx.WriteKeyWord("ORDER BY ")
for i, item := range n.Items {
if i != 0 {
ctx.WritePlain(",")
}
if err := item.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore OrderByClause.Items[%d]", i)
}
}
return nil
}
// Accept implements Node Accept interface.
......
......@@ -606,7 +606,30 @@ type PatternInExpr struct {
// Restore implements Node interface.
func (n *PatternInExpr) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
if err := n.Expr.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternInExpr.Expr")
}
if n.Not {
ctx.WriteKeyWord(" NOT IN ")
} else {
ctx.WriteKeyWord(" IN ")
}
ctx.WritePlain("(")
for i, expr := range n.List {
if i != 0 {
ctx.WritePlain(",")
}
if err := expr.Restore(ctx); err != nil {
return errors.Annotatef(err, "An error occurred while restore PatternInExpr.List[%d]", i)
}
}
if n.Sel != nil {
if err := n.Sel.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore PatternInExpr.Sel")
}
}
ctx.WritePlain(")")
return nil
}
// Format the ExprNode into a Writer.
......@@ -618,10 +641,10 @@ func (n *PatternInExpr) Format(w io.Writer) {
fmt.Fprint(w, " IN (")
}
for i, expr := range n.List {
expr.Format(w)
if i != len(n.List)-1 {
if i != 0 {
fmt.Fprint(w, ",")
}
expr.Format(w)
}
fmt.Fprint(w, ")")
}
......@@ -898,7 +921,8 @@ type PositionExpr struct {
// Restore implements Node interface.
func (n *PositionExpr) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
ctx.WritePlainf("%d", n.N)
return nil
}
// Format the ExprNode into a Writer.
......@@ -1134,7 +1158,29 @@ type VariableExpr struct {
// Restore implements Node interface.
func (n *VariableExpr) Restore(ctx *RestoreCtx) error {
return errors.New("Not implemented")
if n.IsSystem {
ctx.WritePlain("@@")
if n.ExplicitScope {
if n.IsGlobal {
ctx.WriteKeyWord("GLOBAL")
} else {
ctx.WriteKeyWord("SESSION")
}
ctx.WritePlain(".")
}
} else {
ctx.WritePlain("@")
}
ctx.WriteName(n.Name)
if n.Value != nil {
ctx.WritePlain(":=")
if err := n.Value.Restore(ctx); err != nil {
return errors.Annotate(err, "An error occurred while restore VariableExpr.Value")
}
}
return nil
}
// Format the ExprNode into a Writer.
......
......@@ -1600,7 +1600,7 @@ ConstraintElem:
}
$$ = c
}
| "FULLTEXT" KeyOrIndex IndexName '(' IndexColNameList ')' IndexOptionList
| "FULLTEXT" KeyOrIndexOpt IndexName '(' IndexColNameList ')' IndexOptionList
{
c := &ast.Constraint{
Tp: ast.ConstraintFulltext,
......
......@@ -111,106 +111,106 @@
"revisionTime": "2018-10-24T15:10:47Z"
},
{
"checksumSHA1": "FxmJCOCuTOYTN1ISPbT/W6Lrj+Y=",
"checksumSHA1": "KLFQyY05NrGhQCM+Lthp/X9/YcE=",
"path": "github.com/pingcap/parser",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "oXrBRlcgn7WLUQaAHjjygoP4bv4=",
"checksumSHA1": "s7vZWQ/fyhgaPag6j8hQnZ3t3SY=",
"path": "github.com/pingcap/parser/ast",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "skWGV4FNvD3vr+5olepaPPnylUw=",
"path": "github.com/pingcap/parser/auth",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "t4UHo966WzU9Z0IJkyGHRp0loOk=",
"path": "github.com/pingcap/parser/charset",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "SInoXbsRe0tnBwmatmtZYfSFbdk=",
"path": "github.com/pingcap/parser/format",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "WZYTGDMnc1UfTdjdZoBbISsnpRY=",
"path": "github.com/pingcap/parser/model",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "QBa9yiMDQNl2cLLwqlRoNTpCPNg=",
"path": "github.com/pingcap/parser/mysql",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "mxpiJJ3b08I0o0Sd2rJLYMwz7uw=",
"path": "github.com/pingcap/parser/opcode",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "XvnUllvwMYd6HrMvMiKnn4cGN2M=",
"path": "github.com/pingcap/parser/terror",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "YoDiJ3sniNqxkP5X/BDkx6efteA=",
"path": "github.com/pingcap/parser/types",
"revision": "fdccc3290b115557ceee44e21578b58005666fbf",
"revisionTime": "2018-12-25T12:12:10Z"
"revision": "60752e9154861ea1890cff3cdf84e75e67b02281",
"revisionTime": "2018-12-26T14:52:28Z"
},
{
"checksumSHA1": "Uv9aqrZqzNFUgUferYPfNGUxOmM=",
"path": "github.com/pingcap/tidb/sessionctx/stmtctx",
"revision": "b74d0283a2a6f780b75c7192e760b41a03e80884",
"revisionTime": "2018-12-25T14:40:38Z"
"revision": "e45e6999cbd29fbd14cf8c93669b2e45907b4154",
"revisionTime": "2018-12-27T06:12:19Z"
},
{
"checksumSHA1": "kXyszfR2fQ6bHvuCCFlHRkt1mF0=",
"path": "github.com/pingcap/tidb/types",
"revision": "b74d0283a2a6f780b75c7192e760b41a03e80884",
"revisionTime": "2018-12-25T14:40:38Z"
"revision": "e45e6999cbd29fbd14cf8c93669b2e45907b4154",
"revisionTime": "2018-12-27T06:12:19Z"
},
{
"checksumSHA1": "DWVD7+ygtT66IQ+cqXmMJ5OVqUk=",
"path": "github.com/pingcap/tidb/types/json",
"revision": "b74d0283a2a6f780b75c7192e760b41a03e80884",
"revisionTime": "2018-12-25T14:40:38Z"
"revision": "e45e6999cbd29fbd14cf8c93669b2e45907b4154",
"revisionTime": "2018-12-27T06:12:19Z"
},
{
"checksumSHA1": "6vi/eCZXqNTa5eAUpxDZet4LPlY=",
"path": "github.com/pingcap/tidb/types/parser_driver",
"revision": "b74d0283a2a6f780b75c7192e760b41a03e80884",
"revisionTime": "2018-12-25T14:40:38Z"
"revision": "e45e6999cbd29fbd14cf8c93669b2e45907b4154",
"revisionTime": "2018-12-27T06:12:19Z"
},
{
"checksumSHA1": "SS7twHZofFKr8w/pwIKmkp3u5qU=",
"path": "github.com/pingcap/tidb/util/execdetails",
"revision": "b74d0283a2a6f780b75c7192e760b41a03e80884",
"revisionTime": "2018-12-25T14:40:38Z"
"revision": "e45e6999cbd29fbd14cf8c93669b2e45907b4154",
"revisionTime": "2018-12-27T06:12:19Z"
},
{
"checksumSHA1": "nUC7zVoAMNR2a+z2iGqHoN2AkFE=",
"path": "github.com/pingcap/tidb/util/hack",
"revision": "b74d0283a2a6f780b75c7192e760b41a03e80884",
"revisionTime": "2018-12-25T14:40:38Z"
"revision": "e45e6999cbd29fbd14cf8c93669b2e45907b4154",
"revisionTime": "2018-12-27T06:12:19Z"
},
{
"checksumSHA1": "xSyepiuqsoaaeDch7cXeumvVHKM=",
"path": "github.com/pingcap/tidb/util/memory",
"revision": "b74d0283a2a6f780b75c7192e760b41a03e80884",
"revisionTime": "2018-12-25T14:40:38Z"
"revision": "e45e6999cbd29fbd14cf8c93669b2e45907b4154",
"revisionTime": "2018-12-27T06:12:19Z"
},
{
"checksumSHA1": "SmYeIK/fIYXNu8IKxD6HOVQVTuU=",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册