From 1c4e887f8ec92fb5808de6b7a148d053800ec4ea Mon Sep 17 00:00:00 2001 From: tianzhou Date: Fri, 12 Sep 2025 14:34:43 +0800 Subject: [PATCH] Revert "fix: preserve column order in UNIQUE constraints (#17)" This reverts commit 109ca81eb514570f443c7c12cd0a2cad1e8cf988. --- internal/ir/inspector.go | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/internal/ir/inspector.go b/internal/ir/inspector.go index 9499af0d..5fd19ede 100644 --- a/internal/ir/inspector.go +++ b/internal/ir/inspector.go @@ -518,25 +518,9 @@ func (i *Inspector) buildConstraints(ctx context.Context, schema *IR, targetSche dbSchema := schema.getOrCreateSchema(key.schema) table, exists := dbSchema.Tables[key.table] if exists { - // Sort constraint columns by their position to preserve original order from database - // This ensures constraints maintain the correct column order as defined in PostgreSQL - if requiresPositionSorting(constraint.Type) { - sort.Slice(constraint.Columns, func(i, j int) bool { - return constraint.Columns[i].Position < constraint.Columns[j].Position - }) - - // Also sort referenced columns for foreign keys - if constraint.Type == ConstraintTypeForeignKey && len(constraint.ReferencedColumns) > 0 { - sort.Slice(constraint.ReferencedColumns, func(i, j int) bool { - return constraint.ReferencedColumns[i].Position < constraint.ReferencedColumns[j].Position - }) - } - } - table.Constraints[key.name] = constraint // For partitioned tables, ensure primary key columns are ordered with partition key first - // This special handling overrides the position-based sorting for partitioned tables if constraint.Type == ConstraintTypePrimaryKey && table.IsPartitioned && table.PartitionKey != "" { i.sortPrimaryKeyColumnsForPartitionedTable(constraint, table.PartitionKey) } @@ -553,16 +537,6 @@ func (i *Inspector) buildConstraints(ctx context.Context, schema *IR, targetSche return nil } -// requiresPositionSorting returns true if the constraint type requires columns to be sorted by position -func requiresPositionSorting(constraintType ConstraintType) bool { - switch constraintType { - case ConstraintTypeUnique, ConstraintTypePrimaryKey, ConstraintTypeForeignKey: - return true - default: - return false - } -} - // buildPartitionMapping builds a mapping from partition table names to their parent's partition keys func (i *Inspector) buildPartitionMapping(ctx context.Context, schema *IR, targetSchema string) map[string]string { partitionMapping := make(map[string]string)