diff --git a/parser/ast.go b/parser/ast.go index 448f8f6..cda83ec 100644 --- a/parser/ast.go +++ b/parser/ast.go @@ -2478,6 +2478,11 @@ func (t *TTLPolicyRule) Accept(visitor ASTVisitor) error { return err } } + if t.Action != nil { + if err := t.Action.Accept(visitor); err != nil { + return err + } + } return visitor.VisitTTLPolicyRule(t) } @@ -3165,6 +3170,11 @@ func (c *ColumnDef) Accept(visitor ASTVisitor) error { return err } } + if c.CompressionCodec != nil { + if err := c.CompressionCodec.Accept(visitor); err != nil { + return err + } + } return visitor.VisitColumnDef(c) } @@ -4504,14 +4514,27 @@ func (w *WithTimeoutClause) Pos() Pos { } func (w *WithTimeoutClause) End() Pos { - return w.Number.End() + if w.Number != nil { + return w.Number.End() + } + if w.Expr != nil { + return w.Expr.End() + } + return w.WithTimeoutPos } func (w *WithTimeoutClause) Accept(visitor ASTVisitor) error { visitor.Enter(w) defer visitor.Leave(w) - if err := w.Number.Accept(visitor); err != nil { - return err + if w.Expr != nil { + if err := w.Expr.Accept(visitor); err != nil { + return err + } + } + if w.Number != nil { + if err := w.Number.Accept(visitor); err != nil { + return err + } } return visitor.VisitWithTimeoutExpr(w) } diff --git a/parser/format.go b/parser/format.go index 7fe0bbd..2f33c4a 100644 --- a/parser/format.go +++ b/parser/format.go @@ -2859,5 +2859,9 @@ func (w *WithClause) FormatSQL(formatter *Formatter) { func (w *WithTimeoutClause) FormatSQL(formatter *Formatter) { formatter.WriteString("WITH TIMEOUT ") - formatter.WriteExpr(w.Number) + if w.Number != nil { + formatter.WriteExpr(w.Number) + return + } + formatter.WriteExpr(w.Expr) } diff --git a/parser/walk.go b/parser/walk.go index 63f5929..d57bb11 100644 --- a/parser/walk.go +++ b/parser/walk.go @@ -1059,6 +1059,9 @@ func Walk(node Expr, fn WalkFunc) bool { if !Walk(n.Comment, fn) { return false } + if !Walk(n.CompressionCodec, fn) { + return false + } case *ScalarType: if !Walk(n.Name, fn) { return false @@ -1174,6 +1177,9 @@ func Walk(node Expr, fn WalkFunc) bool { if !Walk(n.ToDisk, fn) { return false } + if !Walk(n.Action, fn) { + return false + } case *TTLPolicyRuleAction: if !Walk(n.Codec, fn) { return false @@ -1257,6 +1263,9 @@ func Walk(node Expr, fn WalkFunc) bool { } } case *WithTimeoutClause: + if !Walk(n.Expr, fn) { + return false + } if !Walk(n.Number, fn) { return false }