Adjust offset stuff in SQL splitter routine, DELIMITER department. Fixes issue #2053.

This commit is contained in:
Ansgar Becker
2010-07-01 19:45:23 +00:00
parent 4fb7f4cdc5
commit 63a69de637

View File

@ -379,9 +379,9 @@ begin
DelimLen := Length(Delim); DelimLen := Length(Delim);
Result := TSQLBatch.Create; Result := TSQLBatch.Create;
rx := TRegExpr.Create; rx := TRegExpr.Create;
rx.Expression := '^\s*DELIMITER\s+(\S+)\s*$'; rx.Expression := '^\s*DELIMITER\s+(\S+)\s*';
rx.ModifierI := True; rx.ModifierI := True;
rx.ModifierM := True; rx.ModifierM := False;
while i < AllLen do begin while i < AllLen do begin
Inc(i); Inc(i);
// Current and next char // Current and next char
@ -405,10 +405,10 @@ begin
if (CharInSet(c, NewLines) and (not CharInSet(n, NewLines))) or (i = 1) then begin if (CharInSet(c, NewLines) and (not CharInSet(n, NewLines))) or (i = 1) then begin
if i > 1 then if i > 1 then
InComment := False; InComment := False;
if (not InString) and (not InBigComment) and rx.Exec(copy(SQL, LastLeftOffset, 100)) then begin if (not InString) and (not InBigComment) and rx.Exec(copy(SQL, i, 100)) then begin
Delim := rx.Match[1]; Delim := rx.Match[1];
DelimLen := Length(Delim); DelimLen := rx.MatchLen[1];
Inc(i, rx.MatchLen[0]+1); Inc(i, rx.MatchLen[0]);
LastLeftOffset := i; LastLeftOffset := i;
continue; continue;
end; end;