check_fk_test.go 1.1 KB

1234567891011121314151617181920212223242526272829
  1. package executor
  2. import (
  3. "errors"
  4. "testing"
  5. "github.com/danfragoso/pizzasql-next/pkg/pgerror"
  6. )
  7. func TestForeignKeyConstraintsRejectedAtDDL(t *testing.T) {
  8. _, schema, table := newTestDB(t)
  9. e := newExec(schema, table)
  10. execMust(t, e, "CREATE TABLE parent (id INTEGER PRIMARY KEY)")
  11. for _, sql := range []string{
  12. "CREATE TABLE child1 (id INTEGER PRIMARY KEY, parent_id INTEGER REFERENCES parent(id))",
  13. "CREATE TABLE child2 (id INTEGER PRIMARY KEY, parent_id INTEGER, FOREIGN KEY (parent_id) REFERENCES parent(id))",
  14. "CREATE TABLE child3 (id INTEGER PRIMARY KEY, parent_id INTEGER, CONSTRAINT child_parent FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE)",
  15. } {
  16. if _, err := execSQL(e, sql); !errors.Is(err, pgerror.ErrFeatureNotSupported) {
  17. t.Fatalf("%s: error = %v, want ErrFeatureNotSupported", sql, err)
  18. }
  19. }
  20. execMust(t, e, "CREATE TABLE t (id INTEGER PRIMARY KEY)")
  21. if _, err := execSQL(e, "ALTER TABLE t ADD COLUMN parent_id INTEGER REFERENCES parent(id)"); !errors.Is(err, pgerror.ErrFeatureNotSupported) {
  22. t.Fatalf("ALTER FK error = %v, want ErrFeatureNotSupported", err)
  23. }
  24. }