fix escape bug

This commit is contained in:
HSunboy 2018-11-30 13:40:48 +08:00
parent ff77c1b0ac
commit 77bbf57d28
7 changed files with 23 additions and 12 deletions

View File

@ -97,3 +97,9 @@ console.log(dtSqlParser.parseSyntax("selet * form",'hive'));
ast生成代码来自[nquery](https://github.com/alibaba/nquery/)
hiveimpala等语法解析文件来自[Hue](https://github.com/cloudera/hue)
----
### ChangeLog
- 1.1.8 添加转义字符支持

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -521,7 +521,7 @@ ROW_NUMBER\s*\( { yy.lexer.unput('('); yytext = 'row_
<backtickedValue>\` { this.popState(); return 'BACKTICK'; }
\' { this.begin('singleQuotedValue'); return 'SINGLE_QUOTE'; }
<singleQuotedValue>(?:\\[']|[^'])+ {
<singleQuotedValue>(?:\\\\|\\[']|[^'])+ {
if (parser.handleQuotedValueWithCursor(this, yytext, yylloc, '\'')) {
return 'PARTIAL_VALUE';
}
@ -530,7 +530,7 @@ ROW_NUMBER\s*\( { yy.lexer.unput('('); yytext = 'row_
<singleQuotedValue>\' { this.popState(); return 'SINGLE_QUOTE'; }
\" { this.begin('doubleQuotedValue'); return 'DOUBLE_QUOTE'; }
<doubleQuotedValue>(?:\\["]|[^"])+ {
<doubleQuotedValue>(?:\\\\|\\["]|[^"])+ {
if (parser.handleQuotedValueWithCursor(this, yytext, yylloc, '"')) {
return 'PARTIAL_VALUE';
}

View File

@ -1,6 +1,6 @@
{
"name": "dt-sql-parser",
"version": "1.1.7",
"version": "1.1.8",
"description": "sql,hive,parser ",
"keywords":["hive","hql","sql","parser"],
"main": "index.js",

View File

@ -1,9 +1,12 @@
const example={
test0:`--alter table sx_622_1 add partition(pa=${"${bdp.system.bizdate}"});
SELECT muyun_test_down1.id, muyun_test_down1.name, muyun_test_down2.age
FROM muyun_test_down1
JOIN muyun_test_down2
ON muyun_test_down1.id = muyun_test_down2.id
test0:`create table t_csv(
id int,
name string,
address string,
sex tinyint
)row format serde'org.apache.hadoop.hive.serde2.OpenCSVSerde'with serdeproperties(
"separatorChar"=",",
"quoteChar"="'","escapeChar"="")stored as textfile;
`,
test1:`/*asf*/create table sql_task_comment_test(id int comment 'id') comment 'sql test';
--sdfsss`,

View File

@ -1,13 +1,15 @@
const dtSqlParser=require("../index");
const example=require("./example");
const testMap=Object.entries(example);
const filterSql=dtSqlParser.filter.filterComments;
const splitSql=dtSqlParser.filter.splitSql;
for(let [key,value] of testMap){
console.log(`******${key}********`)
console.log(value)
console.log(`******result********`)
console.log(dtSqlParser.parser.parseSyntax(value));
// console.log(dtSqlParser.filter.splitSql(value))
// console.log(dtSqlParser.parser.parseSyntax(value));
console.log(splitSql(filterSql(value)))
console.log(`********************`)
}