Skip to content

Commit 13bc999

Browse files
committed
feat: support show columns in mysql
1 parent cb1b3ee commit 13bc999

4 files changed

Lines changed: 32 additions & 0 deletions

File tree

pegjs/mariadb.pegjs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1259,6 +1259,17 @@ show_stmt
12591259
}
12601260
}
12611261
}
1262+
/ KW_SHOW __ 'COLUMNS'i __ from:from_clause {
1263+
return {
1264+
tableList: Array.from(tableList),
1265+
columnList: columnListTableAlias(columnList),
1266+
ast: {
1267+
type: 'show',
1268+
keyword: 'columns',
1269+
from
1270+
}
1271+
};
1272+
}
12621273
/ KW_SHOW __ KW_CREATE __ k:(KW_VIEW / KW_TABLE) __ t:table_name {
12631274
const suffix = k.toLowerCase()
12641275
return {

pegjs/mysql.pegjs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,6 +1566,17 @@ show_stmt
15661566
}
15671567
}
15681568
}
1569+
/ KW_SHOW __ 'COLUMNS'i __ from:from_clause {
1570+
return {
1571+
tableList: Array.from(tableList),
1572+
columnList: columnListTableAlias(columnList),
1573+
ast: {
1574+
type: 'show',
1575+
keyword: 'columns',
1576+
from
1577+
}
1578+
};
1579+
}
15691580
/ KW_SHOW __ KW_CREATE __ k:(KW_VIEW / KW_TABLE) __ t:table_name {
15701581
const suffix = k.toLowerCase()
15711582
return {

src/show.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ function showToSQL(showExpr) {
4141
case 'COLLATION':
4242
str = showLikeAndWhereToSQL(showExpr)
4343
break
44+
case 'COLUMNS':
45+
str = commonOptionConnector('FROM', tablesToSQL, showExpr.from)
46+
break
4447
case 'GRANTS':
4548
str = showGrantsForUser(showExpr)
4649
break

test/mysql-mariadb.spec.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,13 @@ describe('mysql', () => {
636636
'CREATE TRIGGER `trigger1` BEFORE UPDATE ON `merge` FOR EACH ROW FOLLOWS `trigger2` SET `NEW`.`updated_at` = current_timestamp()'
637637
]
638638
},
639+
{
640+
title: 'show columns from table',
641+
sql: [
642+
'SHOW COLUMNS FROM table_name',
643+
'SHOW COLUMNS FROM `table_name`'
644+
]
645+
},
639646
]
640647
SQL_LIST.forEach(sqlInfo => {
641648
const { title, sql } = sqlInfo

0 commit comments

Comments
 (0)