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

Method parseShow

rel/parse_sql.go:545–667  ·  view source on GitHub ↗

First keyword was SHOW

()

Source from the content-addressed store, hash-verified

543
544// First keyword was SHOW
545func (m *Sqlbridge) parseShow() (*SqlShow, error) {
546
547 /*
548 don't currently support all these
549 http://dev.mysql.com/doc/refman/5.7/en/show.html
550
551 SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
552 SHOW CREATE DATABASE db_name
553 SHOW CREATE TABLE tbl_name
554 SHOW CREATE TRIGGER trigger_name
555 SHOW CREATE VIEW view_name
556 SHOW DATABASES [like_or_where]
557 SHOW ENGINE engine_name {STATUS | MUTEX}
558 SHOW [STORAGE] ENGINES
559 SHOW INDEX FROM tbl_name [FROM db_name]
560 SHOW [FULL] TABLES [FROM db_name] [like_or_where]
561 SHOW TRIGGERS [FROM db_name] [like_or_where]
562 SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
563 SHOW [GLOBAL | SESSION | SLAVE] STATUS [like_or_where]
564 SHOW WARNINGS [LIMIT [offset,] row_count]
565 */
566 likeLhs := "Table"
567 req := &SqlShow{}
568 req.Raw = m.l.RawInput()
569 m.Next() // Consume Show
570
571 //u.Infof("cur: %v", m.Cur())
572 switch strings.ToLower(m.Cur().V) {
573 case "full":
574 req.Full = true
575 m.Next()
576 case "global", "session", "slave":
577 req.Scope = strings.ToLower(m.Next().V)
578 //u.Infof("scope:%q next:%v", req.Scope, m.Cur())
579 case "create":
580 // SHOW CREATE TABLE `temp_schema`.`users`
581 req.ShowType = "create"
582 m.Next() // consume create
583 req.Create = true
584 //u.Debugf("create what %v", m.Cur())
585 req.CreateWhat = m.Next().V // {TABLE | DATABASE | EVENT ...}
586 //u.Debugf("create which %v", m.Cur())
587 if m.Cur().T == lex.TokenIdentity {
588 req.Identity = m.Next().V
589 return req, nil
590 }
591 return nil, m.ErrMsg("Expected IDENTITY for SHOW CREATE {TABLE | DATABASE | EVENT} IDENTITY")
592 }
593
594 //u.Debugf("show %v", m.Cur())
595 objectType := strings.ToLower(m.Cur().V)
596 switch objectType {
597 case "databases":
598 req.ShowType = "databases"
599 m.Next()
600 case "indexes", "keys":
601 req.ShowType = "indexes"
602 m.Next()

Callers 1

parseMethod · 0.95

Calls 9

parseShowFromTableMethod · 0.95
parseShowFromDatabaseMethod · 0.95
ParseExpressionFunction · 0.92
ParseExprWithFuncsFunction · 0.92
RawInputMethod · 0.80
ErrorfMethod · 0.80
NextMethod · 0.65
CurMethod · 0.65
ErrMsgMethod · 0.65

Tested by

no test coverage detected