Ver código fonte

Use FPC trunk sqlscript instead of modified 2.6.4 version

Reinier Olislagers 11 anos atrás
pai
commit
29e8959873
3 arquivos alterados com 26 adições e 13 exclusões
  1. 6 1
      TurboBird.lpi
  2. 2 1
      TurboBird.lpr
  3. 18 11
      modsqlscript.pas

+ 6 - 1
TurboBird.lpi

@@ -101,7 +101,7 @@
         <PackageName Value="LCL"/>
       </Item6>
     </RequiredPackages>
-    <Units Count="40">
+    <Units Count="41">
       <Unit0>
         <Filename Value="TurboBird.lpr"/>
         <IsPartOfProject Value="True"/>
@@ -400,6 +400,11 @@
         <Filename Value="turbocommon.inc"/>
         <IsPartOfProject Value="True"/>
       </Unit39>
+      <Unit40>
+        <Filename Value="trunksqlscript.pas"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="trunksqlscript"/>
+      </Unit40>
     </Units>
   </ProjectOptions>
   <CompilerOptions>

+ 2 - 1
TurboBird.lpr

@@ -22,7 +22,8 @@ uses
   NewDomain, SysTables, NewConstraint, NewEditField, Calen, Scriptdb,
   UserPermissions, TableManage, BackupRestore, CreateUser, ChangePass,
   PermissionManage, SQLHistory, CopyTable, dynlibs, ibase60dyn, dbInfo,
-  sysutils, Comparison, Update, topologicalsort, UnitFirebirdServices;
+  sysutils, Comparison, Update, topologicalsort, UnitFirebirdServices, 
+trunksqlscript;
 
 const
   Major = 1;

+ 18 - 11
modsqlscript.pas

@@ -42,8 +42,12 @@ unit modsqlscript;
 
 interface
 
+{$IF FPC_FULLVERSION<20701}
 uses
-  Classes, SysUtils, sqlscript, db, dbconst, sqldb;
+  Classes, SysUtils, sqlscript, db, dbconst, sqldb, trunksqlscript;
+{$ELSE}
+// no uses
+{$ENDIF}
 
 {$IF FPC_FULLVERSION<20701}
 type
@@ -57,8 +61,7 @@ type
     end;
 
   { TModSQLScript }
-
-    TModSQLScript = class (TCustomSQLscript)
+    TModSQLScript = class (TTrunkCustomSQLScript)
     private
       FOnDirective: TSQLScriptDirectiveEvent;
       FQuery   : TModCustomSQLQuery;
@@ -67,7 +70,7 @@ type
     protected
       procedure ExecuteStatement (SQLStatement: TStrings; var StopExecution: Boolean); override;
       procedure ExecuteDirective (Directive, Argument: String; var StopExecution: Boolean); override;
-      procedure ExecuteCommit; override;
+      procedure ExecuteCommit(CommitRetaining: boolean=true); override;
       Procedure SetDatabase (Value : TDatabase); virtual;
       Procedure SetTransaction(Value : TDBTransaction); virtual;
       Procedure CheckDatabase;
@@ -91,6 +94,7 @@ type
       property OnException;
     end;
 
+
 implementation
 
 
@@ -98,8 +102,6 @@ implementation
 
 procedure TModSQLScript.ExecuteStatement(SQLStatement: TStrings;
   var StopExecution: Boolean);
-var
-  statementtext: string;
 begin
   fquery.SQL.assign(SQLStatement);
   fquery.ExecSQL;
@@ -112,10 +114,16 @@ begin
     FOnDirective (Self, Directive, Argument, StopExecution);
 end;
 
-procedure TModSQLScript.ExecuteCommit;
+procedure TModSQLScript.ExecuteCommit(CommitRetaining: boolean=true);
 begin
   if FTransaction is TSQLTransaction then
-    TSQLTransaction(FTransaction).CommitRetaining
+    if CommitRetaining then
+      TSQLTransaction(FTransaction).CommitRetaining
+    else
+      begin
+      TSQLTransaction(FTransaction).Commit;
+      TSQLTransaction(FTransaction).StartTransaction;
+      end
   else
     begin
     FTransaction.Active := false;
@@ -143,9 +151,8 @@ constructor TModSQLScript.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);
   FQuery := TModCustomSQLQuery.Create(nil);
-  // Corrections to fix parameter error:
-  FQuery.ParamCheck := false;
-  FQuery.ParseSQL := false;
+  FQuery.ParamCheck := false; // Do not parse for parameters; breaks use of e.g. select bla into :bla in Firebird procedures
+  FQuery.ParseSQL:= false; //added for extra protection against messing with parameters
 end;
 
 destructor TModSQLScript.Destroy;