Versions in this module Expand all Collapse all v0 v0.11.0 Sep 9, 2026 Changes in this version + const CatalogSnapshotContractVersion + const RuleCodeBreakingDropColumn + const RuleCodeBreakingDropTable + const RuleCodeBreakingRenameColumn + const RuleCodeBreakingRenameTable + const RuleCodeBreakingTypeChange + const RuleCodeHygienePreferBigInt + const RuleCodeHygienePreferText + const RuleCodeMetaUnusedIgnoreDirective + const RuleCodeSafetyConcurrentIndex + const RuleCodeSafetyConstraintFlow + const RuleCodeSafetyConstraintNotValid + const RuleCodeSafetyMissingWhere + func ListRuleCodes() []string + func RegisterRule(rule ValidationRule) + func ResolveEnabledRules(baseEnabled, enableRules, disableRules []string) ([]string, error) + func SortValidationResults(result *ValidationResult) + type BanDropColumn struct + func (r *BanDropColumn) Category() ViolationCategory + func (r *BanDropColumn) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *BanDropColumn) Code() string + func (r *BanDropColumn) Name() string + type BanDropTable struct + func (r *BanDropTable) Category() ViolationCategory + func (r *BanDropTable) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *BanDropTable) Code() string + func (r *BanDropTable) Name() string + type BanRenameColumn struct + func (r *BanRenameColumn) Category() ViolationCategory + func (r *BanRenameColumn) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *BanRenameColumn) Code() string + func (r *BanRenameColumn) Name() string + type BanRenameTable struct + func (r *BanRenameTable) Category() ViolationCategory + func (r *BanRenameTable) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *BanRenameTable) Code() string + func (r *BanRenameTable) Name() string + type BanTypeChange struct + func (r *BanTypeChange) Category() ViolationCategory + func (r *BanTypeChange) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *BanTypeChange) Code() string + func (r *BanTypeChange) Name() string + type BlockMissingWhere struct + func (r *BlockMissingWhere) Category() ViolationCategory + func (r *BlockMissingWhere) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *BlockMissingWhere) Code() string + func (r *BlockMissingWhere) Name() string + type CatalogSnapshot struct + ContractVersion string + PostgreSQLVersion string + Signature []string + type ConstraintMissingNotValid struct + func (r *ConstraintMissingNotValid) Category() ViolationCategory + func (r *ConstraintMissingNotValid) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *ConstraintMissingNotValid) Code() string + func (r *ConstraintMissingNotValid) Name() string + type ConstraintValidateFlow struct + func (r *ConstraintValidateFlow) Category() ViolationCategory + func (r *ConstraintValidateFlow) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *ConstraintValidateFlow) Code() string + func (r *ConstraintValidateFlow) Name() string + type ContainerInfo struct + ID string + Port int + type DockerValidationResult struct + ComparisonValid bool + Differences string + Duration time.Duration + Error string + HasDifferences bool + OriginalApplyFailed bool + OriginalDB string + OriginalMigrationsError string + SquashedDB string + Success bool + type ExternalValidationOptions struct + AllowedSchemas []string + type Fix struct + End int32 + Replacement string + Start int32 + type Logger interface + Errorf func(format string, args ...any) + Infof func(format string, args ...any) + Warnf func(format string, args ...any) + type ObjectID struct + Name string + Schema string + Type types.ObjectType + type PreferBigInt struct + func (r *PreferBigInt) Category() ViolationCategory + func (r *PreferBigInt) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *PreferBigInt) Code() string + func (r *PreferBigInt) Name() string + type PreferText struct + func (r *PreferText) Category() ViolationCategory + func (r *PreferText) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *PreferText) Code() string + func (r *PreferText) Name() string + type RequireConcurrentIndex struct + func (r *RequireConcurrentIndex) Category() ViolationCategory + func (r *RequireConcurrentIndex) Check(sql string, tree *pg_query.ParseResult) ([]Violation, error) + func (r *RequireConcurrentIndex) Code() string + func (r *RequireConcurrentIndex) Name() string + type RuleRegistry struct + func (r *RuleRegistry) Get(code string) (ValidationRule, bool) + func (r *RuleRegistry) GetAll() []ValidationRule + func (r *RuleRegistry) Register(rule ValidationRule) + type SchemaComparator struct + func NewSchemaComparator(logger Logger) *SchemaComparator + func (sc *SchemaComparator) CompareDatabases(ctx context.Context, sourceDB, targetDB *sql.DB) (*SchemaDiff, error) + type SchemaComparisonResult struct + Differences []SchemaDifference + ExtensionsMatch bool + FunctionsMatch bool + IndexesMatch bool + Summary string + TablesMatch bool + type SchemaDiff struct + Differences []string + HasDifferences bool + func CompareCatalogSnapshots(original, candidate *CatalogSnapshot) (*SchemaDiff, error) + func CompareSchemasDirectly(schema1, schema2 string) (*SchemaDiff, error) + type SchemaDifference struct + Details string + Difference string + Name string + Severity string + Type string + type SchemaValidator struct + func NewSchemaValidator(config *ValidationConfig, db *sql.DB, reporter performance.ProgressReporter) *SchemaValidator + func (sv *SchemaValidator) ApplyAndSnapshot(ctx context.Context, migrationPath, dsn string, ...) (*CatalogSnapshot, error) + func (sv *SchemaValidator) Close() error + func (sv *SchemaValidator) Errorf(format string, args ...any) + func (sv *SchemaValidator) Infof(format string, args ...any) + func (sv *SchemaValidator) ValidateMigrations(ctx context.Context, migrations []*types.Migration) (*ValidationResult, error) + func (sv *SchemaValidator) ValidateWithDocker(ctx context.Context, originalPath, squashedPath string) (*ValidationResult, error) + func (sv *SchemaValidator) Warnf(format string, args ...any) + type StaticValidator struct + func NewStaticValidator(conf *config.StaticValidatorConfig) *StaticValidator + func (v *StaticValidator) ApplyFixes(sql string, violations []Violation) (string, error) + func (v *StaticValidator) Check(sql string) ([]Violation, error) + type ValidationApproach string + const ApproachSchemaDiff + const ApproachTwoContainers + const ApproachTwoDatabases + type ValidationConfig struct + AuthCompatibilitySQL string + AutoInstallExtensions bool + ContainerReadyTimeout time.Duration + CustomDockerImage string + CustomExtensions map[string]string + DatabaseURL string + DockerApproach ValidationApproach + EnableExtensionDetection bool + EnablePreprocessing bool + EnableSQLFixes bool + IgnoreWarnings bool + Level ValidationLevel + MaxConcurrentQueries int + MaxPortSearchAttempts int + PostgreSQLVersion string + QueryTimeout time.Duration + StopOnError bool + ValidateConstraints bool + ValidateDependencies bool + ValidateExpressions bool + ValidatePerformance bool + ValidatePermissions bool + Verbose bool + func DefaultValidationConfig() *ValidationConfig + type ValidationError struct + Code string + Context map[string]any + File string + Line int + Message string + ObjectID ObjectID + SQLQuery string + Severity string + Suggestion string + type ValidationFix struct + Description string + Fix string + Issue string + Success bool + type ValidationLevel string + const ValidationLevelBasic + const ValidationLevelComprehensive + const ValidationLevelStandard + const ValidationLevelThorough + type ValidationMetrics struct + ApproachUsage map[string]int64 + AverageQueryDuration time.Duration + CPUTimeUsed time.Duration + ConstraintsValidated int64 + DockerContainersSpun int64 + DockerFailures int64 + DockerValidationTime time.Duration + ErrorsByCode map[string]int64 + ErrorsBySeverity map[string]int64 + ErrorsFound int64 + ExtensionInstallAttempts int64 + ExtensionInstallFailures int64 + ExtensionInstallTime time.Duration + ExtensionsDetected int64 + FailedValidations int64 + FixesAttempted int64 + FixesFailed int64 + FixesSucceeded int64 + FunctionsValidated int64 + IndexesValidated int64 + LastUpdated time.Time + ObjectsValidated int64 + PeakMemoryUsage int64 + PostgreSQLVersion string + QueriesExecuted int64 + SlowestQueryDuration time.Duration + SuccessfulValidations int64 + TablesValidated int64 + TotalDuration time.Duration + TotalValidations int64 + TriggersValidated int64 + ValidationEndTime time.Time + ValidationLevel string + ValidationStartTime time.Time + ViewsValidated int64 + WarningsByCode map[string]int64 + WarningsFound int64 + func NewValidationMetrics() *ValidationMetrics + func (m *ValidationMetrics) ExportJSON(w io.Writer) error + func (m *ValidationMetrics) ExportPrometheus(w io.Writer) error + func (m *ValidationMetrics) GetSnapshot() *ValidationMetrics + func (m *ValidationMetrics) RecordDockerValidation(approach string, duration time.Duration, success bool) + func (m *ValidationMetrics) RecordError(code, severity string) + func (m *ValidationMetrics) RecordExtensionInstall(success bool, duration time.Duration) + func (m *ValidationMetrics) RecordFix(success bool) + func (m *ValidationMetrics) RecordQuery(duration time.Duration) + func (m *ValidationMetrics) RecordSchemaObject(objectType string) + func (m *ValidationMetrics) RecordValidation(success bool, duration time.Duration) + func (m *ValidationMetrics) RecordWarning(code string) + func (m *ValidationMetrics) Reset() + func (m *ValidationMetrics) SetPostgreSQLVersion(version string) + func (m *ValidationMetrics) SetValidationLevel(level string) + func (m *ValidationMetrics) SetValidationTimes(start, end time.Time) + func (m *ValidationMetrics) UpdateResourceMetrics(memoryBytes int64, cpuTime time.Duration) + type ValidationResult struct + ApproachUsed ValidationApproach + Details map[string]any + DockerValidation *DockerValidationResult + Duration time.Duration + EndTime time.Time + Errors []ValidationError + ExtensionsDetected []string + ExtensionsInstalled []string + FixesApplied []ValidationFix + Level ValidationLevel + StartTime time.Time + Statistics ValidationStatistics + Success bool + Warnings []ValidationWarning + type ValidationRule interface + Category func() ViolationCategory + Check func(sql string, tree *pg_query.ParseResult) ([]Violation, error) + Code func() string + Name func() string + func GetAllRules() []ValidationRule + func GetRule(code string) (ValidationRule, bool) + type ValidationStatistics struct + ConstraintsChecked int + DependenciesResolved int + ErrorsFound int + ExpressionsValidated int + ObjectsValidated int + QueriesExecuted int + WarningsFound int + type ValidationWarning struct + Code string + Context map[string]any + Message string + ObjectID ObjectID + Suggestion string + type Violation struct + Category ViolationCategory + Code string + Fix *Fix + Line int32 + Message string + Statement string + StmtEnd int32 + StmtStart int32 + Suggestion string + type ViolationCategory string + const CategoryBreaking + const CategoryHygiene + const CategorySafety