First keyword was SHOW
()
| 543 | |
| 544 | // First keyword was SHOW |
| 545 | func (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() |
no test coverage detected