MCPcopy Create free account
hub / github.com/AfterShip/clickhouse-sql-parser / parseCreateView

Method parseCreateView

parser/parser_view.go:205–260  ·  view source on GitHub ↗

(ATTACH | CREATE) (OR REPLACE)? VIEW (IF NOT EXISTS)? tableIdentifier uuidClause? clusterClause? tableSchemaClause? subqueryClause

(pos Pos, orReplace bool)

Source from the content-addressed store, hash-verified

203
204// (ATTACH | CREATE) (OR REPLACE)? VIEW (IF NOT EXISTS)? tableIdentifier uuidClause? clusterClause? tableSchemaClause? subqueryClause
205func (p *Parser) parseCreateView(pos Pos, orReplace bool) (*CreateView, error) {
206 createView := &CreateView{CreatePos: pos, OrReplace: orReplace}
207 if err := p.expectKeyword(KeywordView); err != nil {
208 return nil, err
209 }
210
211 var err error
212 createView.IfNotExists, err = p.tryParseIfNotExists()
213 if err != nil {
214 return nil, err
215 }
216
217 tableIdentifier, err := p.parseTableIdentifier(p.Pos())
218 if err != nil {
219 return nil, err
220 }
221 createView.Name = tableIdentifier
222
223 uuid, err := p.tryParseUUID()
224 if err != nil {
225 return nil, err
226 }
227 createView.UUID = uuid
228
229 onCluster, err := p.tryParseClusterClause(p.Pos())
230 if err != nil {
231 return nil, err
232 }
233 createView.OnCluster = onCluster
234
235 if p.matchTokenKind(TokenKindLParen) {
236 tableSchema, err := p.parseTableSchemaClause(p.Pos())
237 if err != nil {
238 return nil, err
239 }
240 createView.TableSchema = tableSchema
241 }
242
243 // parse COMMENT clause if exists (before AS SELECT)
244 comment, err := p.tryParseComment()
245 if err != nil {
246 return nil, err
247 }
248 createView.Comment = comment
249
250 if p.tryConsumeKeywords(KeywordAs) {
251 subQuery, err := p.parseSubQuery(p.Pos())
252 if err != nil {
253 return nil, err
254 }
255 createView.SubQuery = subQuery
256 createView.StatementEnd = subQuery.End()
257 }
258
259 return createView, nil
260}
261
262// # CreateLiveViewStmt

Callers 1

parseDDLMethod · 0.95

Calls 12

expectKeywordMethod · 0.95
tryParseIfNotExistsMethod · 0.95
parseTableIdentifierMethod · 0.95
PosMethod · 0.95
tryParseUUIDMethod · 0.95
tryParseClusterClauseMethod · 0.95
matchTokenKindMethod · 0.95
tryParseCommentMethod · 0.95
tryConsumeKeywordsMethod · 0.95
parseSubQueryMethod · 0.95
EndMethod · 0.65

Tested by

no test coverage detected