From 36c2e0cfaead878aaaea1915894351e88e0458c8 Mon Sep 17 00:00:00 2001 From: Georges Chaudy Date: Thu, 1 Aug 2024 10:27:01 +0200 Subject: [PATCH] unifiedStorage: sort by namespace/name ASC (#91314) * unified: sort by key asc * sort by key * keep tests commented --- pkg/storage/unified/resource/cdk_backend.go | 6 ++-- .../sql/data/resource_history_list.sql | 2 +- .../unified/sql/data/resource_list.sql | 2 +- .../unified/sql/test/integration_test.go | 30 +++++++++---------- .../resource_history_list_mysql_sqlite.sql | 2 +- .../testdata/resource_list_mysql_sqlite.sql | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/pkg/storage/unified/resource/cdk_backend.go b/pkg/storage/unified/resource/cdk_backend.go index 3fa6739d1a7..11f28870e2c 100644 --- a/pkg/storage/unified/resource/cdk_backend.go +++ b/pkg/storage/unified/resource/cdk_backend.go @@ -359,9 +359,9 @@ func buildTree(ctx context.Context, s *cdkBackend, key *ResourceKey) (*cdkListIt resources = append(resources, *res) } sort.Slice(resources, func(i, j int) bool { - a := resources[i].versions[0].rv - b := resources[j].versions[0].rv - return a > b + a := resources[i].prefix + b := resources[j].prefix + return a < b }) return &cdkListIterator{ diff --git a/pkg/storage/unified/sql/data/resource_history_list.sql b/pkg/storage/unified/sql/data/resource_history_list.sql index 62a9205e58d..5e5e9b507a4 100644 --- a/pkg/storage/unified/sql/data/resource_history_list.sql +++ b/pkg/storage/unified/sql/data/resource_history_list.sql @@ -46,7 +46,7 @@ SELECT AND kv.{{ .Ident "name" }} = {{ .Arg .Request.Options.Key.Name }} {{ end }} {{ end }} - ORDER BY kv.{{ .Ident "resource_version" }} DESC + ORDER BY kv.{{ .Ident "namespace" }} ASC, kv.{{ .Ident "name" }} ASC {{ if (gt .Request.Limit 0) }} LIMIT {{ .Arg .Request.Limit }} OFFSET {{ .Arg .Request.Offset }} {{ end }} diff --git a/pkg/storage/unified/sql/data/resource_list.sql b/pkg/storage/unified/sql/data/resource_list.sql index 5b09f8ba61f..07787335cfd 100644 --- a/pkg/storage/unified/sql/data/resource_list.sql +++ b/pkg/storage/unified/sql/data/resource_list.sql @@ -19,5 +19,5 @@ SELECT AND {{ .Ident "name" }} = {{ .Arg .Request.Options.Key.Name }} {{ end }} {{ end }} - ORDER BY {{ .Ident "resource_version" }} DESC + ORDER BY {{ .Ident "namespace" }} ASC, {{ .Ident "name" }} ASC ; diff --git a/pkg/storage/unified/sql/test/integration_test.go b/pkg/storage/unified/sql/test/integration_test.go index 5e02181d8c0..1636de069ad 100644 --- a/pkg/storage/unified/sql/test/integration_test.go +++ b/pkg/storage/unified/sql/test/integration_test.go @@ -220,12 +220,12 @@ func TestIntegrationBackendList(t *testing.T) { require.NoError(t, err) require.Nil(t, res.Error) require.Len(t, res.Items, 5) - // should be sorted by resource version DESC - require.Equal(t, "item6 ADDED", string(res.Items[0].Value)) + // should be sorted by key ASC + require.Equal(t, "item1 ADDED", string(res.Items[0].Value)) require.Equal(t, "item2 MODIFIED", string(res.Items[1].Value)) - require.Equal(t, "item5 ADDED", string(res.Items[2].Value)) - require.Equal(t, "item4 ADDED", string(res.Items[3].Value)) - require.Equal(t, "item1 ADDED", string(res.Items[4].Value)) + require.Equal(t, "item4 ADDED", string(res.Items[2].Value)) + require.Equal(t, "item5 ADDED", string(res.Items[3].Value)) + require.Equal(t, "item6 ADDED", string(res.Items[4].Value)) require.Empty(t, res.NextPageToken) }) @@ -245,9 +245,9 @@ func TestIntegrationBackendList(t *testing.T) { require.Len(t, res.Items, 3) continueToken, err := sql.GetContinueToken(res.NextPageToken) require.NoError(t, err) - require.Equal(t, "item6 ADDED", string(res.Items[0].Value)) + require.Equal(t, "item1 ADDED", string(res.Items[0].Value)) require.Equal(t, "item2 MODIFIED", string(res.Items[1].Value)) - require.Equal(t, "item5 ADDED", string(res.Items[2].Value)) + require.Equal(t, "item4 ADDED", string(res.Items[2].Value)) require.Equal(t, int64(8), continueToken.ResourceVersion) }) @@ -264,10 +264,10 @@ func TestIntegrationBackendList(t *testing.T) { require.NoError(t, err) require.Nil(t, res.Error) require.Len(t, res.Items, 4) - require.Equal(t, "item4 ADDED", string(res.Items[0].Value)) - require.Equal(t, "item3 ADDED", string(res.Items[1].Value)) - require.Equal(t, "item2 ADDED", string(res.Items[2].Value)) - require.Equal(t, "item1 ADDED", string(res.Items[3].Value)) + require.Equal(t, "item1 ADDED", string(res.Items[0].Value)) + require.Equal(t, "item2 ADDED", string(res.Items[1].Value)) + require.Equal(t, "item3 ADDED", string(res.Items[2].Value)) + require.Equal(t, "item4 ADDED", string(res.Items[3].Value)) require.Empty(t, res.NextPageToken) }) @@ -287,8 +287,8 @@ func TestIntegrationBackendList(t *testing.T) { require.Nil(t, res.Error) require.Len(t, res.Items, 3) t.Log(res.Items) - require.Equal(t, "item2 MODIFIED", string(res.Items[0].Value)) - require.Equal(t, "item5 ADDED", string(res.Items[1].Value)) + require.Equal(t, "item1 ADDED", string(res.Items[0].Value)) + require.Equal(t, "item2 MODIFIED", string(res.Items[1].Value)) require.Equal(t, "item4 ADDED", string(res.Items[2].Value)) continueToken, err := sql.GetContinueToken(res.NextPageToken) @@ -315,8 +315,8 @@ func TestIntegrationBackendList(t *testing.T) { require.Nil(t, res.Error) require.Len(t, res.Items, 2) t.Log(res.Items) - require.Equal(t, "item5 ADDED", string(res.Items[0].Value)) - require.Equal(t, "item4 ADDED", string(res.Items[1].Value)) + require.Equal(t, "item4 ADDED", string(res.Items[0].Value)) + require.Equal(t, "item5 ADDED", string(res.Items[1].Value)) continueToken, err = sql.GetContinueToken(res.NextPageToken) require.NoError(t, err) diff --git a/pkg/storage/unified/sql/testdata/resource_history_list_mysql_sqlite.sql b/pkg/storage/unified/sql/testdata/resource_history_list_mysql_sqlite.sql index d733a38f0c7..a7d2dd68e42 100644 --- a/pkg/storage/unified/sql/testdata/resource_history_list_mysql_sqlite.sql +++ b/pkg/storage/unified/sql/testdata/resource_history_list_mysql_sqlite.sql @@ -8,6 +8,6 @@ INNER JOIN ( ) AS maxkv ON maxkv."resource_version" = kv."resource_version" AND maxkv."namespace" = kv."namespace" AND maxkv."group" = kv."group" AND maxkv."resource" = kv."resource" AND maxkv."name" = kv."name" WHERE kv."action" != 3 AND kv."namespace" = ? -ORDER BY kv."resource_version" DESC +ORDER BY kv."namespace" ASC, kv."name" ASC LIMIT ? OFFSET ? ; diff --git a/pkg/storage/unified/sql/testdata/resource_list_mysql_sqlite.sql b/pkg/storage/unified/sql/testdata/resource_list_mysql_sqlite.sql index 2409a8cb40c..c19b0dc403b 100644 --- a/pkg/storage/unified/sql/testdata/resource_list_mysql_sqlite.sql +++ b/pkg/storage/unified/sql/testdata/resource_list_mysql_sqlite.sql @@ -1,5 +1,5 @@ SELECT "resource_version", "namespace", "name", "value" FROM "resource" WHERE 1 = 1 AND "namespace" = ? - ORDER BY "resource_version" DESC + ORDER BY "namespace" ASC, "name" ASC ;