From fb13fcbece93b9d04dd74eb46e69765af2f6f72e Mon Sep 17 00:00:00 2001 From: Anton Nesterov Date: Fri, 9 Aug 2024 17:06:15 +0200 Subject: [PATCH] [fix] always use sorted map Signed-off-by: Anton Nesterov --- pkg/builder/convert_find.go | 4 +++- pkg/builder/convert_insert.go | 2 +- pkg/builder/utils.go | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/builder/convert_find.go b/pkg/builder/convert_find.go index 8216011..791ba17 100644 --- a/pkg/builder/convert_find.go +++ b/pkg/builder/convert_find.go @@ -15,8 +15,10 @@ func covert_find(ctx Context, find Find, join string) string { if join == "" { join = " AND " } + keys := AggregateSortedKeys([]Map{find}) expressions := []string{} - for key, value := range find { + for _, key := range keys { + value := find[key] if strings.Contains(key, "$and") { v := covert_find(ctx, value.(Find), "") expressions = append(expressions, fmt.Sprintf("(%s)", v)) diff --git a/pkg/builder/convert_insert.go b/pkg/builder/convert_insert.go index 38af29d..6bbd36b 100644 --- a/pkg/builder/convert_insert.go +++ b/pkg/builder/convert_insert.go @@ -11,7 +11,7 @@ type InsertData struct { } func ConvertInsert(ctx Context, inserts []Map) (InsertData, error) { - keys := AggregateKeys(inserts) + keys := AggregateSortedKeys(inserts) placeholder := make([]string, 0) for range keys { placeholder = append(placeholder, "?") diff --git a/pkg/builder/utils.go b/pkg/builder/utils.go index ec2619f..cedea80 100644 --- a/pkg/builder/utils.go +++ b/pkg/builder/utils.go @@ -2,7 +2,7 @@ package builder import "sort" -func AggregateKeys(maps []Map) []string { +func AggregateSortedKeys(maps []Map) []string { set := make(map[string]int) keys := make([]string, 0) for _, item := range maps {