Skip to content

Commit 9f51bfe

Browse files
committed
Add SHOW FIELDS and SHOW FULL COLUMNS parsing (#118)
Handle FIELDS as an alias for COLUMNS in SHOW statements, and support FULL modifier before COLUMNS/FIELDS. Both parse to ShowColumns type.
1 parent de977f9 commit 9f51bfe

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

parser/parser.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6389,6 +6389,13 @@ func (p *Parser) parseShow() ast.Statement {
63896389
case token.SETTINGS:
63906390
show.ShowType = ast.ShowSettings
63916391
p.nextToken()
6392+
case token.FULL:
6393+
// SHOW FULL COLUMNS/FIELDS FROM table - treat as ShowColumns
6394+
p.nextToken()
6395+
if p.currentIs(token.COLUMNS) || (p.currentIs(token.IDENT) && strings.ToUpper(p.current.Value) == "FIELDS") {
6396+
p.nextToken()
6397+
}
6398+
show.ShowType = ast.ShowColumns
63926399
default:
63936400
// Handle SHOW PROCESSLIST, SHOW DICTIONARIES, SHOW FUNCTIONS, etc.
63946401
if p.currentIs(token.IDENT) {
@@ -6402,9 +6409,18 @@ func (p *Parser) parseShow() ast.Statement {
64026409
show.ShowType = ast.ShowFunctions
64036410
case "SETTING":
64046411
show.ShowType = ast.ShowSetting
6405-
case "INDEXES", "INDICES", "KEYS":
6406-
// SHOW INDEXES/INDICES/KEYS FROM table - treat as ShowColumns
6412+
case "INDEXES", "INDICES", "KEYS", "FIELDS":
6413+
// SHOW INDEXES/INDICES/KEYS/FIELDS FROM table - treat as ShowColumns
64076414
show.ShowType = ast.ShowColumns
6415+
case "FULL":
6416+
// SHOW FULL COLUMNS/FIELDS FROM table - treat as ShowColumns
6417+
p.nextToken()
6418+
if p.currentIs(token.COLUMNS) || (p.currentIs(token.IDENT) && strings.ToUpper(p.current.Value) == "FIELDS") {
6419+
p.nextToken()
6420+
}
6421+
show.ShowType = ast.ShowColumns
6422+
// Don't consume another token, fall through to FROM parsing
6423+
goto parseFrom
64086424
case "EXTENDED":
64096425
// SHOW EXTENDED INDEX FROM table - treat as ShowColumns
64106426
p.nextToken()
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1 @@
1-
{
2-
"explain_todo": {
3-
"stmt5": true,
4-
"stmt9": true
5-
}
6-
}
1+
{}

0 commit comments

Comments
 (0)