This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-sqlparser-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new 982068ec Add support for INTERVAL keyword as unquoted identifier in 
PostgreSQL (#2238)
982068ec is described below

commit 982068ec51cbd60cb8489fb50286c344ba339e0c
Author: Luca Cappelletti <[email protected]>
AuthorDate: Wed Feb 25 15:01:39 2026 +0100

    Add support for INTERVAL keyword as unquoted identifier in PostgreSQL 
(#2238)
---
 src/dialect/postgresql.rs   | 10 ++++++++++
 tests/sqlparser_postgres.rs |  6 ++++++
 2 files changed, 16 insertions(+)

diff --git a/src/dialect/postgresql.rs b/src/dialect/postgresql.rs
index 13bd82bf..0b7ed2a7 100644
--- a/src/dialect/postgresql.rs
+++ b/src/dialect/postgresql.rs
@@ -33,6 +33,8 @@ use crate::keywords::Keyword;
 use crate::parser::{Parser, ParserError};
 use crate::tokenizer::Token;
 
+use super::keywords::RESERVED_FOR_IDENTIFIER;
+
 /// A [`Dialect`] for [PostgreSQL](https://www.postgresql.org/)
 #[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
@@ -81,6 +83,14 @@ impl Dialect for PostgreSqlDialect {
         true
     }
 
+    fn is_reserved_for_identifier(&self, kw: Keyword) -> bool {
+        if matches!(kw, Keyword::INTERVAL) {
+            false
+        } else {
+            RESERVED_FOR_IDENTIFIER.contains(&kw)
+        }
+    }
+
     /// See <https://www.postgresql.org/docs/current/sql-createoperator.html>
     fn is_custom_operator_part(&self, ch: char) -> bool {
         matches!(
diff --git a/tests/sqlparser_postgres.rs b/tests/sqlparser_postgres.rs
index 510f6ccc..7c19f51e 100644
--- a/tests/sqlparser_postgres.rs
+++ b/tests/sqlparser_postgres.rs
@@ -5777,6 +5777,12 @@ fn parse_interval_data_type() {
     }
 }
 
+#[test]
+fn parse_interval_keyword_as_unquoted_identifier() {
+    pg().verified_stmt("SELECT MAX(interval) FROM tbl");
+    pg().verified_expr("INTERVAL '1 day'");
+}
+
 #[test]
 fn parse_create_table_with_options() {
     let sql = "CREATE TABLE t (c INT) WITH (foo = 'bar', a = 123)";


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to