From 7967783aaf7428cbc0be780e319417ec8b6b332b Mon Sep 17 00:00:00 2001 From: osipovartem Date: Sat, 12 Sep 2026 23:21:04 +0300 Subject: [PATCH] Snowflake: parse ORDER BY ALL --- src/dialect/snowflake.rs | 5 +++++ tests/sqlparser_snowflake.rs | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/dialect/snowflake.rs b/src/dialect/snowflake.rs index 99d7fe498..ce2a8c440 100644 --- a/src/dialect/snowflake.rs +++ b/src/dialect/snowflake.rs @@ -149,6 +149,11 @@ impl Dialect for SnowflakeDialect { true } + /// See + fn supports_order_by_all(&self) -> bool { + true + } + // Snowflake supports double-dot notation when the schema name is not specified // In this case the default PUBLIC schema is used // diff --git a/tests/sqlparser_snowflake.rs b/tests/sqlparser_snowflake.rs index 2e537a71a..69ac21d14 100644 --- a/tests/sqlparser_snowflake.rs +++ b/tests/sqlparser_snowflake.rs @@ -44,6 +44,19 @@ fn test_snowflake_create_table() { } } +#[test] +fn parse_order_by_all() { + let query = snowflake() + .verified_query("SELECT value + 1 AS computed FROM source ORDER BY ALL DESC NULLS FIRST"); + assert_eq!( + query.order_by.expect("ORDER BY expected").kind, + OrderByKind::All(OrderByOptions { + asc: Some(false), + nulls_first: Some(true), + }) + ); +} + #[test] fn test_snowflake_create_table_timestamp_ntz_precision_ctas_values() { let sql = "CREATE TABLE t (x TIMESTAMP_NTZ(3)) AS SELECT * FROM VALUES ('2025-04-09T21:11:23')";