func (stmt *Select) walkStmt(v Visitor) Statement {
	ret := stmt
	sel, changed := walkStmt(v, stmt.Select)
	if changed {
		ret = stmt.copyNode()
		ret.Select = sel.(SelectStatement)
	}
	order, changed := walkOrderBy(v, stmt.OrderBy)
	if changed {
		if ret == stmt {
			ret = stmt.copyNode()
		}
		ret.OrderBy = order
	}
	if stmt.Limit != nil {
		if stmt.Limit.Offset != nil {
			e, changed := WalkExpr(v, stmt.Limit.Offset)
			if changed {
				if ret == stmt {
					ret = stmt.copyNode()
				}
				ret.Limit.Offset = e
			}
		}
		if stmt.Limit.Count != nil {
			e, changed := WalkExpr(v, stmt.Limit.Count)
			if changed {
				if ret == stmt {
					ret = stmt.copyNode()
				}
				ret.Limit.Count = e
			}
		}
	}
	return ret
}
// walkStmt is part of the walkableStmt interface.
walkStmt is part of the walkableStmt interface.
// walkStmt is part of the walkableStmt interface .
func (stmt *Select) walkStmt(v Visitor) Statement {
	ret := stmt
	sel, changed := walkStmt(v, stmt.Select)
	if changed {
		ret = stmt.copyNode()
		ret.Select = sel.(SelectStatement)
	}
	order, changed := walkOrderBy(v, stmt.OrderBy)
	if changed {
		if ret == stmt {
			ret = stmt.copyNode()
		}
		ret.OrderBy = order
	}
	if stmt.Limit != nil {
		if stmt.Limit.Offset != nil {
			e, changed := WalkExpr(v, stmt.Limit.Offset)
			if changed {
				if ret == stmt {
					ret = stmt.copyNode()
				}
				ret.Limit.Offset = e
			}
		}
		if stmt.Limit.Count != nil {
			e, changed := WalkExpr(v, stmt.Limit.Count)
			if changed {
				if ret == stmt {
					ret = stmt.copyNode()
				}
				ret.Limit.Count = e
			}
		}
	}
	return ret
}
func ( stmt * Select ) walkStmt ( v Visitor ) Statement { ret := stmt sel , changed := walkStmt ( v , stmt . Select ) if changed { ret = stmt . copyNode ( ) ret . Select = sel . ( SelectStatement ) } order , changed := walkOrderBy ( v , stmt . OrderBy ) if changed { if ret == stmt { ret = stmt . copyNode ( ) } ret . OrderBy = order } if stmt . Limit != nil { if stmt . Limit . Offset != nil { e , changed := WalkExpr ( v , stmt . Limit . Offset ) if changed { if ret == stmt { ret = stmt . copyNode ( ) } ret . Limit . Offset = e } } if stmt . Limit . Count != nil { e , changed := WalkExpr ( v , stmt . Limit . Count ) if changed { if ret == stmt { ret = stmt . copyNode ( ) } ret . Limit . Count = e } } } return ret }
walkStmt is part of the walkableStmt interface.
walkStmt is part of the walkableStmt interface .