sql_validator.go 811 B

123456789101112131415161718192021222324252627282930313233
  1. package xsql
  2. import "fmt"
  3. func Validate(stmt *SelectStatement) error {
  4. if HasAggFuncs(stmt.Condition) {
  5. return fmt.Errorf("Not allowed to call aggregate functions in WHERE clause.")
  6. }
  7. if HasNoAggFuncs(stmt.Having) {
  8. return fmt.Errorf("Not allowed to call none-aggregate functions in HAVING clause.")
  9. }
  10. //Cannot GROUP BY alias fields with aggregate funcs
  11. //if stmt.Dimensions != nil {
  12. // for _, d := range stmt.Dimensions {
  13. // if f, ok := d.Expr.(*FieldRef); ok {
  14. // for _, f1 := range stmt.Fields {
  15. // if f.Name == f1.Name || f.Name == f1.AName {
  16. // if HasAggFuncs(f1.Expr) {
  17. // return fmt.Errorf("Cannot group on %s.", f.Name)
  18. // }
  19. // break
  20. // }
  21. // }
  22. // } else {
  23. // return fmt.Errorf("Invalid use of group function")
  24. // }
  25. //
  26. // }
  27. //}
  28. return nil
  29. }