Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ca1810d07 |
@@ -4,6 +4,7 @@ import (
|
|||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@@ -155,8 +156,15 @@ func (w *Writer) mapTableFields(table *models.Table) models.DCTXTable {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
columnNames := make([]string, 0, len(table.Columns))
|
||||||
|
for name := range table.Columns {
|
||||||
|
columnNames = append(columnNames, name)
|
||||||
|
}
|
||||||
|
sort.Strings(columnNames)
|
||||||
|
|
||||||
i := 0
|
i := 0
|
||||||
for _, column := range table.Columns {
|
for _, colName := range columnNames {
|
||||||
|
column := table.Columns[colName]
|
||||||
dctxTable.Fields[i] = w.mapField(column)
|
dctxTable.Fields[i] = w.mapField(column)
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
@@ -165,12 +173,27 @@ func (w *Writer) mapTableFields(table *models.Table) models.DCTXTable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *Writer) mapTableKeys(table *models.Table) []models.DCTXKey {
|
func (w *Writer) mapTableKeys(table *models.Table) []models.DCTXKey {
|
||||||
keys := make([]models.DCTXKey, len(table.Indexes))
|
indexes := make([]*models.Index, 0, len(table.Indexes))
|
||||||
i := 0
|
|
||||||
for _, index := range table.Indexes {
|
for _, index := range table.Indexes {
|
||||||
keys[i] = w.mapKey(index, table)
|
indexes = append(indexes, index)
|
||||||
i++
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Stable ordering for deterministic output and test reproducibility:
|
||||||
|
// primary keys first, then lexicographic by index name.
|
||||||
|
sort.Slice(indexes, func(i, j int) bool {
|
||||||
|
iPrimary := strings.HasSuffix(indexes[i].Name, "_pkey")
|
||||||
|
jPrimary := strings.HasSuffix(indexes[j].Name, "_pkey")
|
||||||
|
if iPrimary != jPrimary {
|
||||||
|
return iPrimary
|
||||||
|
}
|
||||||
|
return indexes[i].Name < indexes[j].Name
|
||||||
|
})
|
||||||
|
|
||||||
|
keys := make([]models.DCTXKey, len(indexes))
|
||||||
|
for i, index := range indexes {
|
||||||
|
keys[i] = w.mapKey(index, table)
|
||||||
|
}
|
||||||
|
|
||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user