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

@ -31,6 +31,15 @@ function splitSql (sql: string) {
queue: string;
sqls: number[];
}
function pushSql (parser: splitParser, sql: string) {
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: splitParser, sql: string): string {
let queue = parser.queue;
@ -81,13 +90,7 @@ function splitSql (sql: string) {
function splitToken (parser: splitParser, sql: string): string {
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;
@ -105,6 +108,9 @@ function splitSql (sql: string) {
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;
}