func (stmt *Update) walkStmt(v Visitor) Statement {
	ret := stmt
	for i, expr := range stmt.Exprs {
		e, changed := WalkExpr(v, expr.Expr)
		if changed {
			if ret == stmt {
				ret = stmt.copyNode()
			}
			ret.Exprs[i].Expr = e
		}
	}

	if stmt.Where != nil {
		e, changed := WalkExpr(v, stmt.Where.Expr)
		if changed {
			if ret == stmt {
				ret = stmt.copyNode()
			}
			ret.Where.Expr = e
		}
	}

	returning, changed := walkReturningClause(v, stmt.Returning)
	if changed {
		if ret == stmt {
			ret = stmt.copyNode()
		}
		ret.Returning = returning
	}
	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 *Update) walkStmt(v Visitor) Statement {
	ret := stmt
	for i, expr := range stmt.Exprs {
		e, changed := WalkExpr(v, expr.Expr)
		if changed {
			if ret == stmt {
				ret = stmt.copyNode()
			}
			ret.Exprs[i].Expr = e
		}
	}
	if stmt.Where != nil {
		e, changed := WalkExpr(v, stmt.Where.Expr)
		if changed {
			if ret == stmt {
				ret = stmt.copyNode()
			}
			ret.Where.Expr = e
		}
	}
	returning, changed := walkReturningClause(v, stmt.Returning)
	if changed {
		if ret == stmt {
			ret = stmt.copyNode()
		}
		ret.Returning = returning
	}
	return ret
}
func ( stmt * Update ) walkStmt ( v Visitor ) Statement { ret := stmt for i , expr := range stmt . Exprs { e , changed := WalkExpr ( v , expr . Expr ) if changed { if ret == stmt { ret = stmt . copyNode ( ) } ret . Exprs [ i ] . Expr = e } } if stmt . Where != nil { e , changed := WalkExpr ( v , stmt . Where . Expr ) if changed { if ret == stmt { ret = stmt . copyNode ( ) } ret . Where . Expr = e } } returning , changed := walkReturningClause ( v , stmt . Returning ) if changed { if ret == stmt { ret = stmt . copyNode ( ) } ret . Returning = returning } return ret }
walkStmt is part of the walkableStmt interface.
walkStmt is part of the walkableStmt interface .