diff --git a/cmd/setup/52.go b/cmd/setup/52.go index 5b86ba1bad..f5fc238c93 100644 --- a/cmd/setup/52.go +++ b/cmd/setup/52.go @@ -2,15 +2,19 @@ package setup import ( "context" + "database/sql" _ "embed" + "errors" "github.com/zitadel/zitadel/internal/database" "github.com/zitadel/zitadel/internal/eventstore" ) var ( - //go:embed 52.sql + //go:embed 52/alter.sql renameTableIfNotExisting string + //go:embed 52/check.sql + checkIfTableIsExisting string ) type IDPTemplate6LDAP2 struct { @@ -18,7 +22,23 @@ type IDPTemplate6LDAP2 struct { } func (mig *IDPTemplate6LDAP2) Execute(ctx context.Context, _ eventstore.Event) error { - _, err := mig.dbClient.ExecContext(ctx, renameTableIfNotExisting) + var count int + err := mig.dbClient.QueryRowContext(ctx, + func(row *sql.Row) error { + if err := row.Scan(&count); err != nil { + return err + } + return row.Err() + }, + checkIfTableIsExisting, + ) + if err == nil { + return nil + } + if !errors.Is(err, sql.ErrNoRows) { + return err + } + _, err = mig.dbClient.ExecContext(ctx, renameTableIfNotExisting) return err } diff --git a/cmd/setup/52.sql b/cmd/setup/52/alter.sql similarity index 86% rename from cmd/setup/52.sql rename to cmd/setup/52/alter.sql index 1414b6386c..66df66d4e9 100644 --- a/cmd/setup/52.sql +++ b/cmd/setup/52/alter.sql @@ -1,2 +1,2 @@ ALTER TABLE IF EXISTS projections.idp_templates6_ldap3 RENAME COLUMN rootCA TO root_ca; -ALTER TABLE IF EXISTS projections.idp_templates6_ldap3 RENAME TO idp_templates6_ldap2; +ALTER TABLE IF EXISTS projections.idp_templates6_ldap3 RENAME TO idp_templates6_ldap2; \ No newline at end of file diff --git a/cmd/setup/52/check.sql b/cmd/setup/52/check.sql new file mode 100644 index 0000000000..f5eb07a341 --- /dev/null +++ b/cmd/setup/52/check.sql @@ -0,0 +1,4 @@ +SELECT 1 +FROM information_schema.tables +WHERE table_schema = 'projections' + AND table_name = 'idp_templates6_ldap2';