From d3c48713227e85f97011aec98ff6241e6d0cf33f Mon Sep 17 00:00:00 2001 From: Ernesto Rodriguez Ortiz <ernesto.ortiz@tracktik.com> Date: Thu, 26 Mar 2020 19:42:16 -0400 Subject: [PATCH] feat: add support for quoted alias --- src/sqlParser.jison | 3 +++ test/main.test.js | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/sqlParser.jison b/src/sqlParser.jison index e3cb798..ee5b329 100644 --- a/src/sqlParser.jison +++ b/src/sqlParser.jison @@ -127,6 +127,7 @@ UNION return 'UNION' [a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]* return 'IDENTIFIER' \. return 'DOT' ['"][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*["'] return 'QUOTED_IDENTIFIER' +[`].+[`] return 'QUOTED_IDENTIFIER' <<EOF>> return 'EOF' . return 'INVALID' @@ -279,6 +280,8 @@ selectExprAliasOpt : { $$ = {alias: null, hasAs: null} } | AS IDENTIFIER { $$ = {alias: $2, hasAs: true} } | IDENTIFIER { $$ = {alias: $1, hasAs: false} } + | AS QUOTED_IDENTIFIER { $$ = {alias: $2, hasAs: true} } + | QUOTED_IDENTIFIER { $$ = {alias: $1, hasAs: false} } ; string diff --git a/test/main.test.js b/test/main.test.js index 988c1cc..558d133 100644 --- a/test/main.test.js +++ b/test/main.test.js @@ -387,4 +387,14 @@ describe('select grammar support', function() { 'select a from dual order by a desc limit 1, 1 union distinct select a from foo order by a limit 1' ); }); + + it('support quoted alias', function() { + testParser('select a as `A-A` from b limit 2;'); + testParser('select a as `A#A` from b limit 2;'); + testParser('select a as `A?A` from b limit 2;'); + testParser('select a as `A/B` from b limit 2;'); + testParser('select a as `A.A` from b limit 2;'); + testParser('select a as `A|A` from b limit 2;'); + testParser('select a as `A A` from b limit 2;'); + }); });