Browse Source

* Patch from Ondrej Pokorny to fix TSQLScript in case of no final terminator

git-svn-id: trunk@37355 -
michael 7 years ago
parent
commit
488e7af362
2 changed files with 11 additions and 5 deletions
  1. 1 5
      packages/fcl-db/src/base/sqlscript.pp
  2. 10 0
      packages/fcl-db/tests/testsqlscript.pas

+ 1 - 5
packages/fcl-db/src/base/sqlscript.pp

@@ -519,10 +519,9 @@ function TCustomSQLScript.NextStatement: AnsiString;
 
 var
   pnt: AnsiString;
-  b,isExtra,terminator_found: Boolean;
+  b,isExtra: Boolean;
 
 begin
-  terminator_found:=False;
   ClearStatement;
   while FLine <= FSQL.Count do
     begin
@@ -530,7 +529,6 @@ begin
     if (pnt=FTerminator) then
       begin
       FCol:=FCol + length(pnt);
-      terminator_found:=True;
       break;
       end
     else if pnt = '/*' then
@@ -583,8 +581,6 @@ begin
         FCol:=FCol + length(pnt);
       end;
     end;
-  if not terminator_found then
-    ClearStatement;
   while (FCurrentStatement.Count > 0) and (trim(FCurrentStatement.Strings[0]) = '') do
     FCurrentStatement.Delete(0);
   while (FCurrentStripped.Count > 0) and (trim(FCurrentStripped.Strings[0]) = '') do

+ 10 - 0
packages/fcl-db/tests/testsqlscript.pas

@@ -76,6 +76,7 @@ type
   published
     procedure TestCreateDefaults;
     procedure TestTerminator;
+    procedure TestTerminatorNoFinal;
     procedure TestSetTerm;
     procedure TestUseSetTerm;
     procedure TestComments;
@@ -302,6 +303,15 @@ begin
   AssertStatDir('doe,iets,anders', '');
 end;
 
+procedure TTestSQLScript.TestTerminatorNoFinal;
+begin
+  script.terminator := '!';
+  Add('doe!iets!');
+  Add('anders');
+  script.execute;
+  AssertStatDir('doe,iets,anders', '');
+end;
+
 procedure TTestSQLScript.TestSetTerm;
 begin
   script.UseSetTerm:=true;