mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-12-18 19:37:33 +00:00
Fix listing of deep paths in PostgreSQL backend (#2393)
This change addresses an issue where deep paths would not be enumerated if parent paths did not contain a key. Given the keys `shallow` and `deep` at the following paths... ``` secret/shallow secret/path/deep ``` ... a `LIST` request against `/v1/secret` would produce only one result, `shallow`. With this change, the same list request will now list `shallow` and `path/`.
This commit is contained in:
committed by
Jeff Mitchell
parent
cda27d5834
commit
b9e1ef142c
@@ -71,7 +71,8 @@ func newPostgreSQLBackend(conf map[string]string, logger log.Logger) (Backend, e
|
||||
get_query: "SELECT value FROM " + quoted_table + " WHERE path = $1 AND key = $2",
|
||||
delete_query: "DELETE FROM " + quoted_table + " WHERE path = $1 AND key = $2",
|
||||
list_query: "SELECT key FROM " + quoted_table + " WHERE path = $1" +
|
||||
"UNION SELECT substr(path, length($1)+1) FROM " + quoted_table + "WHERE parent_path = $1",
|
||||
"UNION SELECT DISTINCT substring(substr(path, length($1)+1) from '^.*?/') FROM " +
|
||||
quoted_table + " WHERE parent_path LIKE concat($1, '%')",
|
||||
logger: logger,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user