2
0

arrays_test.go 921 B

123456789101112131415161718192021222324252627282930313233
  1. package parser
  2. import (
  3. "errors"
  4. "testing"
  5. "github.com/danfragoso/pizzasql-next/pkg/lexer"
  6. "github.com/danfragoso/pizzasql-next/pkg/pgerror"
  7. )
  8. func TestArrayParametersAndAnyPredicatesRejected(t *testing.T) {
  9. for _, sql := range []string{
  10. "SELECT * FROM t WHERE id = ANY('{1,2,3}')",
  11. "SELECT * FROM t WHERE id <> ANY('{1,2,3}')",
  12. "SELECT * FROM t WHERE id = ALL('{1,2,3}')",
  13. "SELECT * FROM t WHERE id = ANY(ARRAY[1,2])",
  14. } {
  15. t.Run(sql, func(t *testing.T) {
  16. _, err := New(lexer.New(sql)).Parse()
  17. if !errors.Is(err, pgerror.ErrFeatureNotSupported) {
  18. t.Fatalf("error = %v, want ErrFeatureNotSupported", err)
  19. }
  20. })
  21. }
  22. }
  23. func TestAnyAsOrdinaryColumnStillParses(t *testing.T) {
  24. // ANY is only a predicate keyword when followed by "(". A column literally
  25. // named any must keep working.
  26. if _, err := New(lexer.New("SELECT any FROM t")).Parse(); err != nil {
  27. t.Fatalf("parse: %v", err)
  28. }
  29. }