Очередь job получила lease и fencing, телеметрия и прогресс deploy сохраняются, ревизия пишет manifest входов. Обновление префиксов не переписывает неизменённый снимок, большие наборы идут через COPY, а устаревшая ревизия не попадает в deploy. Бандл ноды кэшируется, prune и постановка job больше не держат горячий путь. Co-authored-by: Cursor <[email protected]>
64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package db
|
|
|
|
import (
|
|
"io/fs"
|
|
"path"
|
|
"strings"
|
|
"testing"
|
|
|
|
"evobgp/migrations"
|
|
)
|
|
|
|
func TestPostgresEmbeddedMigrationsTransactional(t *testing.T) {
|
|
entries, err := fs.ReadDir(migrations.Postgres, "postgres")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, entry := range entries {
|
|
if !strings.HasSuffix(entry.Name(), ".up.sql") {
|
|
continue
|
|
}
|
|
body, err := fs.ReadFile(migrations.Postgres, path.Join("postgres", entry.Name()))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if bad := unsupportedMigrationStatement(string(body)); bad != "" {
|
|
t.Errorf("%s contains unsupported transaction control or DDL: %q", entry.Name(), bad)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPostgresMigrationRejectsTransactionControl(t *testing.T) {
|
|
for _, statement := range []string{
|
|
"COMMIT;", "END;", "ROLLBACK;", "ABORT;", "BEGIN;",
|
|
"CREATE INDEX CONCURRENTLY idx ON t (id);", "VACUUM t;",
|
|
"CREATE TABLE t(id int); /* boundary */ COMMIT; SELECT 1/0;",
|
|
"/* comment */COMMIT;",
|
|
"-- comment\nCOMMIT;",
|
|
"/* nested /* comment */ still comment */ END;",
|
|
"CREATE TABLE foo$tag$ (id int); COMMIT; -- $tag$",
|
|
"-- comment\rCOMMIT;",
|
|
`foo$E'abc\'; COMMIT;`,
|
|
`éE'abc\'; COMMIT;`,
|
|
} {
|
|
if unsupportedMigrationStatement(statement) == "" {
|
|
t.Errorf("did not reject %q", statement)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPostgresMigrationIgnoresQuotedControlWords(t *testing.T) {
|
|
for _, statement := range []string{
|
|
"SELECT 'COMMIT;'::text;",
|
|
"SELECT $$COMMIT;$$;",
|
|
"SELECT $tag$END;$tag$;",
|
|
"SELECT E'ABORT;\\'';",
|
|
"SELECT \"ROLLBACK\" FROM t;",
|
|
"-- COMMIT;\nSELECT 1;",
|
|
} {
|
|
if bad := unsupportedMigrationStatement(statement); bad != "" {
|
|
t.Errorf("rejected quoted or commented SQL %q: %s", statement, bad)
|
|
}
|
|
}
|
|
}
|