Skip to content

Commit ceb8012

Browse files
committed
Add SHOW REDACTED CREATE ...
1 parent e5165bb commit ceb8012

File tree

12 files changed

+413
-41
lines changed

12 files changed

+413
-41
lines changed

doc/user/content/sql/show-create-connection.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ menu:
1111
## Syntax
1212

1313
```sql
14-
SHOW CREATE CONNECTION <connection_name>
14+
SHOW [REDACTED] CREATE CONNECTION <connection_name>
1515
```
1616

1717
For available connection names, see [`SHOW CONNECTIONS`](/sql/show-connections).

doc/user/content/sql/show-create-index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ menu:
1111
## Syntax
1212

1313
```sql
14-
SHOW CREATE INDEX <index_name>
14+
SHOW [REDACTED] CREATE INDEX <index_name>
1515
```
1616

1717
For available index names, see [`SHOW INDEXES`](/sql/show-indexes).

doc/user/content/sql/show-create-materialized-view.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ menu:
1111
## Syntax
1212

1313
```sql
14-
SHOW CREATE MATERIALIZED VIEW <view_name>
14+
SHOW [REDACTED] CREATE MATERIALIZED VIEW <view_name>
1515
```
1616

1717
For available materialized view names, see [`SHOW MATERIALIZED VIEWS`](/sql/show-materialized-views).

doc/user/content/sql/show-create-sink.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ menu:
1111
## Syntax
1212

1313
```sql
14-
SHOW CREATE SINK <sink_name>
14+
SHOW [REDACTED] CREATE SINK <sink_name>
1515
```
1616

1717
For available sink names, see [`SHOW SINKS`](/sql/show-sinks).

doc/user/content/sql/show-create-source.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ menu:
1111
## Syntax
1212

1313
```sql
14-
SHOW CREATE SOURCE <source_name>
14+
SHOW [REDACTED] CREATE SOURCE <source_name>
1515
```
1616

1717
For available source names, see [`SHOW SOURCES`](/sql/show-sources).

doc/user/content/sql/show-create-table.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ menu:
1111
## Syntax
1212

1313
```sql
14-
SHOW CREATE TABLE <table_name>
14+
SHOW [REDACTED] CREATE TABLE <table_name>
1515
```
1616

1717
For available table names, see [`SHOW TABLES`](/sql/show-tables).

doc/user/content/sql/show-create-view.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ menu:
1111
## Syntax
1212

1313
```sql
14-
SHOW CREATE VIEW <view_name>
14+
SHOW [REDACTED] CREATE VIEW <view_name>
1515
```
1616

1717
For available view names, see [`SHOW VIEWS`](/sql/show-views).

src/sql-parser/src/ast/defs/statement.rs

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3561,98 +3561,134 @@ impl<T: AstInfo> AstDisplay for ShowColumnsStatement<T> {
35613561
}
35623562
impl_display_t!(ShowColumnsStatement);
35633563

3564-
/// `SHOW CREATE VIEW <view>`
3564+
/// `SHOW [REDACTED] CREATE VIEW <view>`
35653565
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
35663566
pub struct ShowCreateViewStatement<T: AstInfo> {
35673567
pub view_name: T::ItemName,
3568+
pub redacted: bool,
35683569
}
35693570

35703571
impl<T: AstInfo> AstDisplay for ShowCreateViewStatement<T> {
35713572
fn fmt<W: fmt::Write>(&self, f: &mut AstFormatter<W>) {
3572-
f.write_str("SHOW CREATE VIEW ");
3573+
f.write_str("SHOW ");
3574+
if self.redacted {
3575+
f.write_str("REDACTED ");
3576+
}
3577+
f.write_str("CREATE VIEW ");
35733578
f.write_node(&self.view_name);
35743579
}
35753580
}
35763581
impl_display_t!(ShowCreateViewStatement);
35773582

3578-
/// `SHOW CREATE MATERIALIZED VIEW <name>`
3583+
/// `SHOW [REDACTED] CREATE MATERIALIZED VIEW <name>`
35793584
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
35803585
pub struct ShowCreateMaterializedViewStatement<T: AstInfo> {
35813586
pub materialized_view_name: T::ItemName,
3587+
pub redacted: bool,
35823588
}
35833589

35843590
impl<T: AstInfo> AstDisplay for ShowCreateMaterializedViewStatement<T> {
35853591
fn fmt<W: fmt::Write>(&self, f: &mut AstFormatter<W>) {
3586-
f.write_str("SHOW CREATE MATERIALIZED VIEW ");
3592+
f.write_str("SHOW ");
3593+
if self.redacted {
3594+
f.write_str("REDACTED ");
3595+
}
3596+
f.write_str("CREATE MATERIALIZED VIEW ");
35873597
f.write_node(&self.materialized_view_name);
35883598
}
35893599
}
35903600
impl_display_t!(ShowCreateMaterializedViewStatement);
35913601

3592-
/// `SHOW CREATE SOURCE <source>`
3602+
/// `SHOW [REDACTED] CREATE SOURCE <source>`
35933603
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
35943604
pub struct ShowCreateSourceStatement<T: AstInfo> {
35953605
pub source_name: T::ItemName,
3606+
pub redacted: bool,
35963607
}
35973608

35983609
impl<T: AstInfo> AstDisplay for ShowCreateSourceStatement<T> {
35993610
fn fmt<W: fmt::Write>(&self, f: &mut AstFormatter<W>) {
3600-
f.write_str("SHOW CREATE SOURCE ");
3611+
f.write_str("SHOW ");
3612+
if self.redacted {
3613+
f.write_str("REDACTED ");
3614+
}
3615+
f.write_str("CREATE SOURCE ");
36013616
f.write_node(&self.source_name);
36023617
}
36033618
}
36043619
impl_display_t!(ShowCreateSourceStatement);
36053620

3606-
/// `SHOW CREATE TABLE <table>`
3621+
/// `SHOW [REDACTED] CREATE TABLE <table>`
36073622
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
36083623
pub struct ShowCreateTableStatement<T: AstInfo> {
36093624
pub table_name: T::ItemName,
3625+
pub redacted: bool,
36103626
}
36113627

36123628
impl<T: AstInfo> AstDisplay for ShowCreateTableStatement<T> {
36133629
fn fmt<W: fmt::Write>(&self, f: &mut AstFormatter<W>) {
3614-
f.write_str("SHOW CREATE TABLE ");
3630+
f.write_str("SHOW ");
3631+
if self.redacted {
3632+
f.write_str("REDACTED ");
3633+
}
3634+
f.write_str("CREATE TABLE ");
36153635
f.write_node(&self.table_name);
36163636
}
36173637
}
36183638
impl_display_t!(ShowCreateTableStatement);
36193639

3620-
/// `SHOW CREATE SINK <sink>`
3640+
/// `SHOW [REDACTED] CREATE SINK <sink>`
36213641
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
36223642
pub struct ShowCreateSinkStatement<T: AstInfo> {
36233643
pub sink_name: T::ItemName,
3644+
pub redacted: bool,
36243645
}
36253646

36263647
impl<T: AstInfo> AstDisplay for ShowCreateSinkStatement<T> {
36273648
fn fmt<W: fmt::Write>(&self, f: &mut AstFormatter<W>) {
3628-
f.write_str("SHOW CREATE SINK ");
3649+
f.write_str("SHOW ");
3650+
if self.redacted {
3651+
f.write_str("REDACTED ");
3652+
}
3653+
f.write_str("CREATE SINK ");
36293654
f.write_node(&self.sink_name);
36303655
}
36313656
}
36323657
impl_display_t!(ShowCreateSinkStatement);
36333658

3634-
/// `SHOW CREATE INDEX <index>`
3659+
/// `SHOW [REDACTED] CREATE INDEX <index>`
36353660
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
36363661
pub struct ShowCreateIndexStatement<T: AstInfo> {
36373662
pub index_name: T::ItemName,
3663+
pub redacted: bool,
36383664
}
36393665

36403666
impl<T: AstInfo> AstDisplay for ShowCreateIndexStatement<T> {
36413667
fn fmt<W: fmt::Write>(&self, f: &mut AstFormatter<W>) {
3642-
f.write_str("SHOW CREATE INDEX ");
3668+
f.write_str("SHOW ");
3669+
if self.redacted {
3670+
f.write_str("REDACTED ");
3671+
}
3672+
f.write_str("CREATE INDEX ");
36433673
f.write_node(&self.index_name);
36443674
}
36453675
}
36463676
impl_display_t!(ShowCreateIndexStatement);
36473677

3678+
/// `SHOW [REDACTED] CREATE CONNECTION <connection>`
36483679
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
36493680
pub struct ShowCreateConnectionStatement<T: AstInfo> {
36503681
pub connection_name: T::ItemName,
3682+
pub redacted: bool,
36513683
}
36523684

36533685
impl<T: AstInfo> AstDisplay for ShowCreateConnectionStatement<T> {
36543686
fn fmt<W: fmt::Write>(&self, f: &mut AstFormatter<W>) {
3655-
f.write_str("SHOW CREATE CONNECTION ");
3687+
f.write_str("SHOW ");
3688+
if self.redacted {
3689+
f.write_str("REDACTED ");
3690+
}
3691+
f.write_str("CREATE CONNECTION ");
36563692
f.write_node(&self.connection_name);
36573693
}
36583694
}

src/sql-parser/src/parser.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7720,6 +7720,14 @@ impl<'a> Parser<'a> {
77207720
}
77217721

77227722
fn parse_show(&mut self) -> Result<ShowStatement<Raw>, ParserError> {
7723+
let redacted = self.parse_keyword(REDACTED);
7724+
if redacted && !self.peek_keyword(CREATE) {
7725+
return parser_err!(
7726+
self,
7727+
self.peek_pos(),
7728+
"SHOW REDACTED is only supported for SHOW REDACTED CREATE ..."
7729+
);
7730+
}
77237731
if self.parse_one_of_keywords(&[COLUMNS, FIELDS]).is_some() {
77247732
self.parse_show_columns()
77257733
} else if self.parse_keyword(OBJECTS) {
@@ -7860,36 +7868,50 @@ impl<'a> Parser<'a> {
78607868
} else if self.parse_keywords(&[CREATE, VIEW]) {
78617869
Ok(ShowStatement::ShowCreateView(ShowCreateViewStatement {
78627870
view_name: self.parse_raw_name()?,
7871+
redacted,
78637872
}))
78647873
} else if self.parse_keywords(&[CREATE, MATERIALIZED, VIEW]) {
78657874
Ok(ShowStatement::ShowCreateMaterializedView(
78667875
ShowCreateMaterializedViewStatement {
78677876
materialized_view_name: self.parse_raw_name()?,
7877+
redacted,
78687878
},
78697879
))
78707880
} else if self.parse_keywords(&[CREATE, SOURCE]) {
78717881
Ok(ShowStatement::ShowCreateSource(ShowCreateSourceStatement {
78727882
source_name: self.parse_raw_name()?,
7883+
redacted,
78737884
}))
78747885
} else if self.parse_keywords(&[CREATE, TABLE]) {
78757886
Ok(ShowStatement::ShowCreateTable(ShowCreateTableStatement {
78767887
table_name: self.parse_raw_name()?,
7888+
redacted,
78777889
}))
78787890
} else if self.parse_keywords(&[CREATE, SINK]) {
78797891
Ok(ShowStatement::ShowCreateSink(ShowCreateSinkStatement {
78807892
sink_name: self.parse_raw_name()?,
7893+
redacted,
78817894
}))
78827895
} else if self.parse_keywords(&[CREATE, INDEX]) {
78837896
Ok(ShowStatement::ShowCreateIndex(ShowCreateIndexStatement {
78847897
index_name: self.parse_raw_name()?,
7898+
redacted,
78857899
}))
78867900
} else if self.parse_keywords(&[CREATE, CONNECTION]) {
78877901
Ok(ShowStatement::ShowCreateConnection(
78887902
ShowCreateConnectionStatement {
78897903
connection_name: self.parse_raw_name()?,
7904+
redacted,
78907905
},
78917906
))
78927907
} else if self.parse_keywords(&[CREATE, CLUSTER]) {
7908+
if redacted {
7909+
return parser_err!(
7910+
self,
7911+
self.peek_prev_pos(),
7912+
"SHOW REDACTED CREATE CLUSTER is not supported"
7913+
);
7914+
}
78937915
Ok(ShowStatement::ShowCreateCluster(
78947916
ShowCreateClusterStatement {
78957917
cluster_name: RawClusterName::Unresolved(self.parse_identifier()?),

0 commit comments

Comments
 (0)