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

Method parse_create

src/sql-parser/src/parser.rs:2038–2135  ·  view source on GitHub ↗

Parse a SQL CREATE statement

(&mut self)

Source from the content-addressed store, hash-verified

2036
2037 /// Parse a SQL CREATE statement
2038 fn parse_create(&mut self) -> Result<Statement<Raw>, ParserStatementError> {
2039 if self.peek_keyword(DATABASE) {
2040 self.parse_create_database()
2041 .map_parser_err(StatementKind::CreateDatabase)
2042 } else if self.peek_keyword(SCHEMA) {
2043 self.parse_create_schema()
2044 .map_parser_err(StatementKind::CreateSchema)
2045 } else if self.peek_keyword(SINK) {
2046 self.parse_create_sink()
2047 .map_parser_err(StatementKind::CreateSink)
2048 } else if self.peek_keyword(TYPE) {
2049 self.parse_create_type()
2050 .map_parser_err(StatementKind::CreateType)
2051 } else if self.peek_keyword(ROLE) {
2052 self.parse_create_role()
2053 .map_parser_err(StatementKind::CreateRole)
2054 } else if self.peek_keyword(CLUSTER) {
2055 self.next_token();
2056 if self.peek_keyword(REPLICA) {
2057 self.parse_create_cluster_replica()
2058 .map_parser_err(StatementKind::CreateClusterReplica)
2059 } else {
2060 self.parse_create_cluster()
2061 .map_parser_err(StatementKind::CreateCluster)
2062 }
2063 } else if self.peek_keyword(INDEX) || self.peek_keywords(&[DEFAULT, INDEX]) {
2064 self.parse_create_index()
2065 .map_parser_err(StatementKind::CreateIndex)
2066 } else if self.peek_keyword(SOURCE) {
2067 self.parse_create_source()
2068 .map_parser_err(StatementKind::CreateSource)
2069 } else if self.peek_keyword(SUBSOURCE) {
2070 self.parse_create_subsource()
2071 .map_parser_err(StatementKind::CreateSubsource)
2072 } else if self.peek_keyword(TABLE)
2073 || self.peek_keywords(&[TEMP, TABLE])
2074 || self.peek_keywords(&[TEMPORARY, TABLE])
2075 {
2076 if self.peek_keywords_lookahead(&[FROM, SOURCE])
2077 || self.peek_keywords_lookahead(&[FROM, WEBHOOK])
2078 {
2079 self.parse_create_table_from_source()
2080 .map_parser_err(StatementKind::CreateTableFromSource)
2081 } else {
2082 self.parse_create_table()
2083 .map_parser_err(StatementKind::CreateTable)
2084 }
2085 } else if self.peek_keyword(SECRET) {
2086 self.parse_create_secret()
2087 .map_parser_err(StatementKind::CreateSecret)
2088 } else if self.peek_keyword(CONNECTION) {
2089 self.parse_create_connection()
2090 .map_parser_err(StatementKind::CreateConnection)
2091 } else if self.peek_keywords(&[MATERIALIZED, VIEW])
2092 || self.peek_keywords(&[OR, REPLACE, MATERIALIZED, VIEW])
2093 || self.peek_keywords(&[REPLACEMENT, MATERIALIZED, VIEW])
2094 || self.peek_keywords(&[OR, REPLACE, REPLACEMENT, MATERIALIZED, VIEW])
2095 {

Callers 1

parse_statement_innerMethod · 0.80

Calls 15

peek_keywordMethod · 0.80
map_parser_errMethod · 0.80
parse_create_databaseMethod · 0.80
parse_create_schemaMethod · 0.80
parse_create_sinkMethod · 0.80
parse_create_typeMethod · 0.80
parse_create_roleMethod · 0.80
next_tokenMethod · 0.80
parse_create_clusterMethod · 0.80
peek_keywordsMethod · 0.80
parse_create_indexMethod · 0.80

Tested by

no test coverage detected