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

Method parseJoinTableExpr

parser/parser_query.go:249–280  ·  view source on GitHub ↗
(_ Pos)

Source from the content-addressed store, hash-verified

247}
248
249func (p *Parser) parseJoinTableExpr(_ Pos) (Expr, error) {
250 switch {
251 case p.matchTokenKind(TokenKindIdent), p.matchTokenKind(TokenKindString), p.matchTokenKind(TokenKindLParen):
252 tableExpr, err := p.parseTableExpr(p.Pos())
253 if err != nil {
254 return nil, err
255 }
256 statementEnd := tableExpr.End()
257
258 hasFinal := p.matchKeyword(KeywordFinal)
259 if hasFinal {
260 statementEnd = p.End()
261 _ = p.lexer.consumeToken()
262 }
263
264 sampleRatio, err := p.tryParseSampleClause(p.Pos())
265 if err != nil {
266 return nil, err
267 }
268 if sampleRatio != nil {
269 statementEnd = sampleRatio.End()
270 }
271 return &JoinTableExpr{
272 Table: tableExpr,
273 SampleRatio: sampleRatio,
274 HasFinal: hasFinal,
275 StatementEnd: statementEnd,
276 }, nil
277 default:
278 return nil, fmt.Errorf("expected table name or subquery, got %s", fmt.Sprintf("%v", p.lastTokenKind()))
279 }
280}
281
282func (p *Parser) parseJoinRightExpr(pos Pos) (expr Expr, err error) {
283 var rightExpr Expr

Callers 2

parseJoinRightExprMethod · 0.95
parseJoinExprMethod · 0.95

Calls 9

matchTokenKindMethod · 0.95
parseTableExprMethod · 0.95
PosMethod · 0.95
matchKeywordMethod · 0.95
EndMethod · 0.95
tryParseSampleClauseMethod · 0.95
lastTokenKindMethod · 0.95
consumeTokenMethod · 0.80
EndMethod · 0.65

Tested by

no test coverage detected