Goose is a database schema versioning system and SQL migration tool designed for Go applications. It functions as a framework for tracking and applying incremental database changes through versioned SQL scripts, ensuring consistency across different environments.
The project distinguishes itself by providing a build-time capability to exclude unused database drivers to optimize binary size and a filesystem abstraction that allows migration scripts to be bundled directly into a compiled executable. It also supports out-of-order execution logic to apply missing scripts that were created after a newer version was already recorded.
The tool covers a broad range of schema evolution capabilities, including forward migrations, rollbacks, and the population of initial reference data through seeding utilities. It manages SQL execution with semicolon-aware statement grouping, transaction-aware processing with manual overrides for non-transactional operations, and the injection of dynamic values via environment variable substitution.