fix split bug

This commit is contained in:
HSunboy
2019-09-29 17:38:52 +08:00
parent 966a8d31f4
commit 3b6c224e0e
5 changed files with 91 additions and 18 deletions

View File

@ -25,6 +25,16 @@ function splitSql(sql) {
sql += ';';
haveEnd = false;
}
function pushSql(parser, sql) {
if (!haveEnd && parser.index == sql.length - 1) {
parser.sqls.push(parser.index - 1);
parser.queue = '';
}
else {
parser.sqls.push(parser.index);
parser.queue = '';
}
}
// 处理引号
function quoteToken(parser, sql) {
let queue = parser.queue;
@ -81,14 +91,7 @@ function splitSql(sql) {
function splitToken(parser, sql) {
let queue = parser.queue;
if (queue.endsWith(';')) {
if (!haveEnd && parser.index == sql.length - 1) {
parser.sqls.push(parser.index - 1);
queue = '';
}
else {
parser.sqls.push(parser.index);
queue = '';
}
pushSql(parser, sql);
}
else {
return null;
@ -106,6 +109,9 @@ function splitSql(sql) {
for (let i = 0; i < tokenFuncs.length; i++) {
tokenFuncs[i](parser, sql);
}
if (parser.index == sql.length - 1 && parser.queue) {
pushSql(parser, sql);
}
}
return parser.sqls;
}