Skip to content

Commit 199a1c6

Browse files
committed
feat(): unicode extended char support for column name or alias
1 parent f2524a0 commit 199a1c6

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

src/sqlParser.jison

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
[#]\s.*\n /* skip sql comments */
1212
\s+ /* skip whitespace */
1313

14-
[$][{](.*?)[}] return 'PLACE_HOLDER'
15-
[`][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*[`] return 'IDENTIFIER'
16-
[\w]+[\u4e00-\u9fa5]+[0-9a-zA-Z_\u4e00-\u9fa5]* return 'IDENTIFIER'
17-
[\u4e00-\u9fa5][0-9a-zA-Z_\u4e00-\u9fa5]* return 'IDENTIFIER'
14+
[$][{](.+?)[}] return 'PLACE_HOLDER'
15+
[`][a-zA-Z0-9_\u0080-\uFFFF]*[`] return 'IDENTIFIER'
16+
[\w]+[\u0080-\uFFFF]+[0-9a-zA-Z_\u0080-\uFFFF]* return 'IDENTIFIER'
17+
[\u0080-\uFFFF][0-9a-zA-Z_\u0080-\uFFFF]* return 'IDENTIFIER'
1818
SELECT return 'SELECT'
1919
ALL return 'ALL'
2020
ANY return 'ANY'
@@ -125,7 +125,7 @@ UNION return 'UNION'
125125
[-]?[0-9]+(\.[0-9]+)? return 'NUMERIC'
126126
[-]?[0-9]+(\.[0-9]+)?[eE][-][0-9]+(\.[0-9]+)? return 'EXPONENT_NUMERIC'
127127

128-
[a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]* return 'IDENTIFIER'
128+
[a-zA-Z_\u0080-\uFFFF][a-zA-Z0-9_\u0080-\uFFFF]* return 'IDENTIFIER'
129129
\. return 'DOT'
130130
["][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*["] return 'STRING'
131131
['][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*['] return 'STRING'

test/main.test.js

+12
Original file line numberDiff line numberDiff line change
@@ -436,4 +436,16 @@ describe('select grammar support', function () {
436436
it('test IDENTIFIER', function () {
437437
testParser('select `aa#sfs`(a) as \'A A\' from z');
438438
});
439+
440+
it('Support unicode extended char (U+0080..U+FFFF) as column name or alias', function() {
441+
testParser(`select
442+
país,
443+
MAX(produção) as maior_produção,
444+
Ĉapelo,
445+
Δάσος,
446+
Молоко,
447+
سلام,
448+
かわいい
449+
from table`)
450+
})
439451
});

0 commit comments

Comments
 (0)