code: func ExtractColumns(expr Expression) (cols []*Column) {
  	switch v := expr.(type) {
  	case *Column:
  		return []*Column{v}
  	case *ScalarFunction:
  		for _, arg := range v.GetArgs() {
  			cols = append(cols, ExtractColumns(arg)...)
  		}
  	}
  	return
  }
docs: // ExtractColumns extracts all columns from an expression.