MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / parse_show

Method parse_show

src/sql-parser/src/parser.rs:8042–8253  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

8040 }
8041
8042 fn parse_show(&mut self) -> Result<ShowStatement<Raw>, ParserError> {
8043 let redacted = self.parse_keyword(REDACTED);
8044 if redacted && !self.peek_keyword(CREATE) {
8045 return parser_err!(
8046 self,
8047 self.peek_pos(),
8048 "SHOW REDACTED is only supported for SHOW REDACTED CREATE ..."
8049 );
8050 }
8051 if self.parse_one_of_keywords(&[COLUMNS, FIELDS]).is_some() {
8052 self.parse_show_columns()
8053 } else if self.parse_keyword(OBJECTS) {
8054 let from = if self.parse_keywords(&[FROM]) {
8055 Some(self.parse_schema_name()?)
8056 } else {
8057 None
8058 };
8059 Ok(ShowStatement::ShowObjects(ShowObjectsStatement {
8060 object_type: ShowObjectType::Object,
8061 from,
8062 filter: self.parse_show_statement_filter()?,
8063 }))
8064 } else if let Some(object_type) = self.parse_plural_object_type() {
8065 let from = if object_type.lives_in_schema() {
8066 if self.parse_keywords(&[FROM]) {
8067 Some(self.parse_schema_name()?)
8068 } else {
8069 None
8070 }
8071 } else {
8072 None
8073 };
8074
8075 let show_object_type = match object_type {
8076 ObjectType::Database => ShowObjectType::Database,
8077 ObjectType::Schema => {
8078 let from = if self.parse_keyword(FROM) {
8079 Some(self.parse_database_name()?)
8080 } else {
8081 None
8082 };
8083 ShowObjectType::Schema { from }
8084 }
8085 ObjectType::Table => {
8086 let on_source = if self.parse_one_of_keywords(&[ON]).is_some() {
8087 Some(self.parse_raw_name()?)
8088 } else {
8089 None
8090 };
8091 ShowObjectType::Table { on_source }
8092 }
8093 ObjectType::View => ShowObjectType::View,
8094 ObjectType::Source => {
8095 let in_cluster = self.parse_optional_in_cluster()?;
8096 ShowObjectType::Source { in_cluster }
8097 }
8098 ObjectType::Subsource => {
8099 let on_source = if self.parse_one_of_keywords(&[ON]).is_some() {

Callers 2

parse_statement_innerMethod · 0.80
parse_query_bodyMethod · 0.80

Calls 15

parse_keywordMethod · 0.80
peek_keywordMethod · 0.80
is_someMethod · 0.80
parse_one_of_keywordsMethod · 0.80
parse_show_columnsMethod · 0.80
parse_keywordsMethod · 0.80
parse_schema_nameMethod · 0.80
lives_in_schemaMethod · 0.80
parse_database_nameMethod · 0.80
parse_raw_nameMethod · 0.80

Tested by

no test coverage detected