Skip to content

Commit

Permalink
Add postgres schema to the search_path on database connection
Browse files Browse the repository at this point in the history
Rather than rely on the user running the gitea server and db setting the
schema search_path correctly - if gitea is run with a schema we should
simply set the search_path to have that schema first in the path.

Fix #12505

Signed-off-by: Andrew Thornton <art27@cantab.net>
  • Loading branch information
zeripath committed Aug 29, 2020
1 parent e1eee2d commit 1e75afc
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 15 deletions.
10 changes: 0 additions & 10 deletions integrations/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,16 +198,6 @@ func initIntegrationTest() {
}
}

// Make the user's default search path the created schema; this will affect new connections
if _, err = db.Exec(fmt.Sprintf(`ALTER USER "%s" SET search_path = %s`, setting.Database.User, setting.Database.Schema)); err != nil {
log.Fatalf("db.Exec: ALTER USER SET search_path: %v", err)
}

// Make the current connection's search the created schema
if _, err = db.Exec(fmt.Sprintf(`SET search_path = %s`, setting.Database.Schema)); err != nil {
log.Fatalf("db.Exec: ALTER USER SET search_path: %v", err)
}

case setting.Database.UseMSSQL:
host, port := setting.ParseMSSQLHostPort(setting.Database.Host)
db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
Expand Down
5 changes: 0 additions & 5 deletions integrations/migration-test/migration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,11 +194,6 @@ func restoreOldDB(t *testing.T, version string) bool {
assert.NoError(t, err)
}
schrows.Close()

// Make the user's default search path the created schema; this will affect new connections
_, err = db.Exec(fmt.Sprintf(`ALTER USER "%s" SET search_path = %s`, setting.Database.User, setting.Database.Schema))
assert.NoError(t, err)

db.Close()
}

Expand Down
10 changes: 10 additions & 0 deletions models/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,16 @@ func getEngine() (*xorm.Engine, error) {
engine.Dialect().SetParams(map[string]string{"DEFAULT_VARCHAR": "nvarchar"})
}
engine.SetSchema(setting.Database.Schema)
if setting.Database.UsePostgreSQL && len(setting.Database.Schema) > 0 {
// Add the schema to the search path
if _, err := engine.Exec(`SELECT set_config(
'search_path',
? || ',' || current_setting('search_path'),
false)`,
setting.Database.Schema); err != nil {
return nil, err
}
}
return engine, nil
}

Expand Down

0 comments on commit 1e75afc

Please sign in to comment.