Skip to content

Commit fcc476e

Browse files
Snowflake: parse SHOW CONNECTIONS and SHOW SHARES [LIKE]
1 parent 18e99b5 commit fcc476e

4 files changed

Lines changed: 50 additions & 0 deletions

File tree

src/ast/mod.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5200,6 +5200,20 @@ pub enum Statement {
52005200
filter: Option<ShowStatementFilter>,
52015201
},
52025202
/// ```sql
5203+
/// SHOW CONNECTIONS [ LIKE '<pattern>' ]
5204+
/// ```
5205+
ShowConnections {
5206+
/// Optional `LIKE` filter.
5207+
filter: Option<ShowStatementFilter>,
5208+
},
5209+
/// ```sql
5210+
/// SHOW SHARES [ LIKE '<pattern>' ]
5211+
/// ```
5212+
ShowShares {
5213+
/// Optional `LIKE` filter.
5214+
filter: Option<ShowStatementFilter>,
5215+
},
5216+
/// ```sql
52035217
/// CREATE [OR REPLACE] CATALOG INTEGRATION [IF NOT EXISTS] <name> ...
52045218
/// ```
52055219
/// See <https://docs.snowflake.com/en/sql-reference/sql/create-catalog-integration>
@@ -7428,6 +7442,20 @@ impl fmt::Display for Statement {
74287442
}
74297443
Ok(())
74307444
}
7445+
Statement::ShowConnections { filter } => {
7446+
write!(f, "SHOW CONNECTIONS")?;
7447+
if let Some(filter) = filter {
7448+
write!(f, " {filter}")?;
7449+
}
7450+
Ok(())
7451+
}
7452+
Statement::ShowShares { filter } => {
7453+
write!(f, "SHOW SHARES")?;
7454+
if let Some(filter) = filter {
7455+
write!(f, " {filter}")?;
7456+
}
7457+
Ok(())
7458+
}
74317459
Statement::CreateCatalogIntegration {
74327460
or_replace,
74337461
if_not_exists,

src/ast/spans.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,8 @@ impl Spanned for Statement {
562562
Statement::DescribeRowAccessPolicy { .. } => Span::empty(),
563563
Statement::ShowRowAccessPolicies { .. } => Span::empty(),
564564
Statement::ShowProcedures { .. } => Span::empty(),
565+
Statement::ShowConnections { .. } => Span::empty(),
566+
Statement::ShowShares { .. } => Span::empty(),
565567
Statement::CreateCatalogIntegration { .. } => Span::empty(),
566568
Statement::DropCatalogIntegration { .. } => Span::empty(),
567569
Statement::ShowCatalogIntegrations { .. } => Span::empty(),

src/dialect/snowflake.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,12 @@ impl Dialect for SnowflakeDialect {
514514
if parser.parse_keyword(Keyword::PROCEDURES) {
515515
return Some(parse_show_procedures(parser));
516516
}
517+
if parser.parse_keyword(Keyword::CONNECTIONS) {
518+
return Some(parse_show_connections(parser));
519+
}
520+
if parser.parse_keyword(Keyword::SHARES) {
521+
return Some(parse_show_shares(parser));
522+
}
517523
//Give back Keyword::TERSE
518524
if terse {
519525
parser.prev_token();
@@ -2709,6 +2715,18 @@ fn parse_show_warehouses(parser: &mut Parser) -> Result<Statement, ParserError>
27092715
Ok(Statement::ShowWarehouses { filter })
27102716
}
27112717

2718+
/// Parse `SHOW CONNECTIONS [LIKE '<pattern>']`
2719+
fn parse_show_connections(parser: &mut Parser) -> Result<Statement, ParserError> {
2720+
let filter = parser.parse_show_statement_filter()?;
2721+
Ok(Statement::ShowConnections { filter })
2722+
}
2723+
2724+
/// Parse `SHOW SHARES [LIKE '<pattern>']`
2725+
fn parse_show_shares(parser: &mut Parser) -> Result<Statement, ParserError> {
2726+
let filter = parser.parse_show_statement_filter()?;
2727+
Ok(Statement::ShowShares { filter })
2728+
}
2729+
27122730
/// Parse `SHOW ACCOUNTS [HISTORY] [LIKE '<pattern>']`
27132731
fn parse_show_accounts(parser: &mut Parser) -> Result<Statement, ParserError> {
27142732
let history = parser.parse_keyword(Keyword::HISTORY);

src/keywords.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ define_keywords!(
268268
CONFLICT,
269269
CONNECT,
270270
CONNECTION,
271+
CONNECTIONS,
271272
CONNECTOR,
272273
CONNECT_BY_ROOT,
273274
CONSTRAINT,
@@ -998,6 +999,7 @@ define_keywords!(
998999
SETTINGS,
9991000
SHARE,
10001001
SHARED,
1002+
SHARES,
10011003
SHARING,
10021004
SHOW,
10031005
SIGNED,

0 commit comments

Comments
 (0)