From e69b916e955f36c9965247d85c3dfc4d81895b9d Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Wed, 29 Jul 2026 17:05:18 +0200 Subject: [PATCH] Support PostgreSQL's `RESET SESSION AUTHORIZATION` --- src/ast/mod.rs | 6 +++++- src/parser/mod.rs | 6 ++++++ tests/sqlparser_common.rs | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/ast/mod.rs b/src/ast/mod.rs index 8a9a67a74..ffc3f7ec3 100644 --- a/src/ast/mod.rs +++ b/src/ast/mod.rs @@ -12179,13 +12179,16 @@ pub enum Reset { /// Resets all session parameters to their default values. ALL, + /// Resets session authorization to the session user. + SessionAuthorization, + /// Resets a specific session parameter to its default value. ConfigurationParameter(ObjectName), } /// Resets a session parameter to its default value. /// ```sql -/// RESET { ALL | } +/// RESET { ALL | SESSION AUTHORIZATION | } /// ``` #[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] @@ -12261,6 +12264,7 @@ impl fmt::Display for ResetStatement { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match &self.reset { Reset::ALL => write!(f, "RESET ALL"), + Reset::SessionAuthorization => write!(f, "RESET SESSION AUTHORIZATION"), Reset::ConfigurationParameter(param) => write!(f, "RESET {}", param), } } diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 74199c2d6..6869e226c 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -21138,6 +21138,12 @@ impl<'a> Parser<'a> { return Ok(ResetStatement { reset: Reset::ALL }); } + if self.parse_keywords(&[Keyword::SESSION, Keyword::AUTHORIZATION]) { + return Ok(ResetStatement { + reset: Reset::SessionAuthorization, + }); + } + let obj = self.parse_object_name(false)?; Ok(ResetStatement { reset: Reset::ConfigurationParameter(obj), diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index 97f5a0469..ef30d26aa 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -19210,6 +19210,12 @@ fn parse_reset_statement() { Statement::Reset(ResetStatement { reset }) => assert_eq!(reset, Reset::ALL), _ => unreachable!(), } + match verified_stmt("RESET SESSION AUTHORIZATION") { + Statement::Reset(ResetStatement { reset }) => { + assert_eq!(reset, Reset::SessionAuthorization) + } + _ => unreachable!(), + } } #[test]