-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue #4111 - Bug: secret_exists column not added to secrets_policy i… #4116
Conversation
} | ||
|
||
var migrationSQL = map[int]SchemaUpdate{} | ||
var v2SchemaUpdate = SchemaUpdate{sql: []string{"ALTER TABLE secrets_policy ADD COLUMN \"secret_exists\" BOOLEAN NOT NULL DEFAULT true;", "ALTER TABLE secrets_pattern ADD COLUMN \"secret_exists\" BOOLEAN NOT NULL DEFAULT true;"}, description: "Add a column to the secrets table to indicate if the secret exists or not. This is necessary to support node-specific secrets.", exitOnFailure: false} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am wondering if it would be better to still fail on error but change the SQL to be
ALTER TABLE secrets_policy ADD COLUMN IF NOT EXISTS "secret_exists" BOOLEAN NOT NULL DEFAULT true
@@ -138,8 +138,10 @@ func (db *AgbotPostgresqlDB) Initialize(cfg *config.HorizonConfig) error { | |||
|
|||
// Run each SQL statement in the array of SQL statements for the current version. | |||
for si := 0; si < len(migrationSQL[v].sql); si++ { | |||
if _, err := db.db.Exec(migrationSQL[v].sql[si]); err != nil { | |||
if _, err := db.db.Exec(migrationSQL[v].sql[si]); err != nil && migrationSQL[v].exitOnFailure { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this logic is correct.. I think it needs to be
// Run each SQL statement in the array of SQL statements for the current version.
for si := 0; si < len(migrationSQL[v].sql); si++ {
if _, err := db.db.Exec(migrationSQL[v].sql[si]); err != nil && migrationSQL[v].exitOnFailure {
return errors.New(fmt.Sprintf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err))
} else if err != nil {
fmt.Printf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err)
}
}
if _, err := db.db.Exec(VERSION_UPDATE, HIGHEST_DATABASE_VERSION, migrationSQL[v].description); err != nil {
return errors.New(fmt.Sprintf("unable to create version table, error: %v", err))
} else {
glog.V(3).Infof("Postgresql database tables upgraded to version %v, %v", v, migrationSQL[v].description)
}
You don't want the version to be updated unless all the sql's were execute... Also, in my test, the version never actually got updated.
return errors.New(fmt.Sprintf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err)) | ||
} else if err != nil { | ||
fmt.Printf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be a log message
db20d7f
to
cf00a6c
Compare
…ets_policy if table already exists Signed-off-by: Max McAdam <[email protected]>
…f table already exists
Pull Request Template
Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (issue)
Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Additional Context (Please include any Screenshots/gifs if relevant)
...
Checklist: