diff --git a/cmd/setup/31.go b/cmd/setup/31.go new file mode 100644 index 0000000000..640c11b1c0 --- /dev/null +++ b/cmd/setup/31.go @@ -0,0 +1,27 @@ +package setup + +import ( + "context" + _ "embed" + + "github.com/zitadel/zitadel/internal/database" + "github.com/zitadel/zitadel/internal/eventstore" +) + +var ( + //go:embed 31.sql + addAggregateIndexToFields string +) + +type AddAggregateIndexToFields struct { + dbClient *database.DB +} + +func (mig *AddAggregateIndexToFields) Execute(ctx context.Context, _ eventstore.Event) error { + _, err := mig.dbClient.ExecContext(ctx, addAggregateIndexToFields) + return err +} + +func (mig *AddAggregateIndexToFields) String() string { + return "31_add_aggregate_index_to_fields" +} diff --git a/cmd/setup/31.sql b/cmd/setup/31.sql new file mode 100644 index 0000000000..4198f2326e --- /dev/null +++ b/cmd/setup/31.sql @@ -0,0 +1 @@ +CREATE INDEX CONCURRENTLY IF NOT EXISTS f_aggregate_object_type_idx ON eventstore.fields (aggregate_type, aggregate_id, object_type); \ No newline at end of file diff --git a/cmd/setup/config.go b/cmd/setup/config.go index 2f4f47c768..2bee4642aa 100644 --- a/cmd/setup/config.go +++ b/cmd/setup/config.go @@ -114,6 +114,7 @@ type Steps struct { s28AddFieldTable *AddFieldTable s29FillFieldsForProjectGrant *FillFieldsForProjectGrant s30FillFieldsForOrgDomainVerified *FillFieldsForOrgDomainVerified + s31AddAggregateIndexToFields *AddAggregateIndexToFields } func MustNewSteps(v *viper.Viper) *Steps { diff --git a/cmd/setup/setup.go b/cmd/setup/setup.go index a36ccfbe0c..f9a40697a2 100644 --- a/cmd/setup/setup.go +++ b/cmd/setup/setup.go @@ -159,6 +159,7 @@ func Setup(ctx context.Context, config *Config, steps *Steps, masterKey string) steps.s28AddFieldTable = &AddFieldTable{dbClient: esPusherDBClient} steps.s29FillFieldsForProjectGrant = &FillFieldsForProjectGrant{eventstore: eventstoreClient} steps.s30FillFieldsForOrgDomainVerified = &FillFieldsForOrgDomainVerified{eventstore: eventstoreClient} + steps.s31AddAggregateIndexToFields = &AddAggregateIndexToFields{dbClient: esPusherDBClient} err = projection.Create(ctx, projectionDBClient, eventstoreClient, config.Projections, nil, nil, nil) logging.OnError(err).Fatal("unable to start projections") @@ -182,6 +183,7 @@ func Setup(ctx context.Context, config *Config, steps *Steps, masterKey string) steps.s1ProjectionTable, steps.s2AssetsTable, steps.s28AddFieldTable, + steps.s31AddAggregateIndexToFields, steps.FirstInstance, steps.s5LastFailed, steps.s6OwnerRemoveColumns,