fix(session): CURRENT ROLE behavior with AUTH ROLE is set #8546
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I hereby agree to the terms of the CLA available at: https://databend.rs/dev/policies/cla/
Summary
The behaviour about CURRENT ROLE with auth_role is broken, as the auth_role is set as "account_admin", but
SELECT current_role()
still gets "public".The expected behaviour is that when the AUTH ROLE is set, it defaults as the CURRENT ROLE, except when X-DATABEND-ROLE is set (which must be one of the AUTH ROLE's children roles).
This PR also made a minor refactor: replace session.set_current_user to session.set_authed_user which plays as an unified entrypoint on authentication success. So instead of manage logics in different handlers, we can collect the works on authenticated success into this method.