Browse Source

--- Merging r22563 into '.':
U packages/fcl-db/src/sqldb/interbase/ibconnection.pp
--- Merging r22591 into '.':
U packages/ibase/src/ibase60.inc
--- Merging r22600 into '.':
U packages/fcl-db/src/base/db.pas
U packages/fcl-db/src/base/fields.inc

# revisions: 22563,22591,22600
r22563 | marco | 2012-10-06 16:25:02 +0200 (Sat, 06 Oct 2012) | 2 lines
Changed paths:
M /trunk/packages/fcl-db/src/sqldb/interbase/ibconnection.pp

* improve statementtype detection. Mantis #22723, patch by Lacak2
r22591 | michael | 2012-10-08 14:45:02 +0200 (Mon, 08 Oct 2012) | 1 line
Changed paths:
M /trunk/packages/ibase/src/ibase60.inc

* Improved and more consistent load order for libs (bug ID #22710)
r22600 | michael | 2012-10-09 13:04:44 +0200 (Tue, 09 Oct 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-db/src/base/db.pas
M /trunk/packages/fcl-db/src/base/fields.inc

* Patch from Luiz Americo for some cleanup (bug ID 22550)

git-svn-id: branches/fixes_2_6@22674 -

marco 13 years ago
parent
commit
b1ace0913b

+ 1 - 1
packages/fcl-db/src/base/db.pas

@@ -1067,7 +1067,7 @@ type
   Tfields = Class(TObject)
     Private
       FDataset : TDataset;
-      FFieldList : TList;
+      FFieldList : TFpList;
       FOnChange : TNotifyEvent;
       FValidFieldKinds : TFieldKinds;
     Protected

+ 10 - 8
packages/fcl-db/src/base/fields.inc

@@ -3135,14 +3135,14 @@ Constructor TFields.Create(ADataset : TDataset);
 
 begin
   FDataSet:=ADataset;
-  FFieldList:=TList.Create;
+  FFieldList:=TFpList.Create;
   FValidFieldKinds:=[fkData..fkInternalcalc];
 end;
 
 Destructor TFields.Destroy;
 
 begin
-  if FFieldList <> nil then Clear;
+  Clear;
   FFieldList.Free;
   inherited Destroy;
 end;
@@ -3235,13 +3235,15 @@ begin
 end;
 
 Procedure TFields.Clear;
-
+var
+  AField: TField;
 begin
-  with FFieldList do
-    while Count > 0 do begin
-      TField(Last).FDataSet := Nil;
-      TField(Last).Free;
-      FFieldList.Delete(Count - 1);
+  while FFieldList.Count > 0 do 
+    begin
+    AField := TField(FFieldList.Last);
+    AField.FDataSet := Nil;
+    AField.Free;
+    FFieldList.Delete(FFieldList.Count - 1);
     end;
   Changed;
 end;

+ 7 - 2
packages/fcl-db/src/sqldb/interbase/ibconnection.pp

@@ -591,8 +591,13 @@ begin
     // If the statementtype is isc_info_sql_stmt_exec_procedure then
     // override the statement type derrived by parsing the query.
     // This to recognize statements like 'insert into .. returning' correctly
-    if IBStatementType = isc_info_sql_stmt_exec_procedure then
-      FStatementType := stExecProcedure;
+    case IBStatementType of
+      isc_info_sql_stmt_select: FStatementType := stSelect;
+      isc_info_sql_stmt_insert: FStatementType := stInsert;
+      isc_info_sql_stmt_update: FStatementType := stUpdate;
+      isc_info_sql_stmt_delete: FStatementType := stDelete;
+      isc_info_sql_stmt_exec_procedure: FStatementType := stExecProcedure;
+    end;
 
     if FStatementType in [stSelect,stExecProcedure] then
       begin

+ 4 - 3
packages/ibase/src/ibase60.inc

@@ -2679,10 +2679,11 @@ begin
     end
   else
     begin
-    If (TryInitialiseIBase60(fbclib)=0) and
-       (TryInitialiseIBase60(gdslib)=0) and
+    If (TryInitialiseIBase60(fbembedlib)=0) and
+       (TryInitialiseIBase60(libem)=0) and
+       (TryInitialiseIBase60(fbclib)=0) and
        (TryInitialiseIBase60(libfc)=0) and
-       (TryInitialiseIBase60(fbembedlib)=0) then
+       (TryInitialiseIBase60(gdslib)=0) then
         Raise EInOutError.CreateFmt(SErrDefaultsFailed,[fbclib,gdslib,fbembedlib]);
     end;    
   Result := RefCount;