MCPcopy Create free account
hub / github.com/araddon/qlbridge / parseSourceJoin

Method parseSourceJoin

rel/parse_sql.go:1264–1300  ·  view source on GitHub ↗
(src *SqlSource)

Source from the content-addressed store, hash-verified

1262}
1263
1264func (m *Sqlbridge) parseSourceJoin(src *SqlSource) error {
1265
1266 switch m.Cur().T {
1267 case lex.TokenLeft, lex.TokenRight:
1268 src.LeftOrRight = m.Cur().T
1269 m.Next()
1270 }
1271
1272 // Optional Inner/Outer
1273 switch m.Cur().T {
1274 case lex.TokenInner, lex.TokenOuter:
1275 src.JoinType = m.Cur().T
1276 m.Next()
1277 }
1278
1279 if m.Cur().T == lex.TokenJoin {
1280 m.Next() // Consume join keyword
1281 } else {
1282 return m.ErrMsg("Requires join")
1283 }
1284
1285 switch m.Cur().T {
1286 case lex.TokenLeftParenthesis:
1287 // SELECT [columns] FROM [table] AS t1
1288 // INNER JOIN (select a,b,c from users WHERE d is not null) u ON u.user_id = t1.user_id
1289 if err := m.parseSourceSubQuery(src); err != nil {
1290 return err
1291 }
1292 case lex.TokenIdentity:
1293 // Name of table
1294 src.Name = m.Cur().V
1295 m.Next()
1296 default:
1297 return m.ErrMsg("unrecognized kw in join")
1298 }
1299 return nil
1300}
1301
1302func (m *Sqlbridge) parseInto(req *SqlSelect) error {
1303

Callers 1

parseSourcesMethod · 0.95

Calls 4

parseSourceSubQueryMethod · 0.95
CurMethod · 0.65
NextMethod · 0.65
ErrMsgMethod · 0.65

Tested by

no test coverage detected