From c7219efd02ddcd8da3a1d91d1e06809fa75d7a79 Mon Sep 17 00:00:00 2001 From: joost Date: Sat, 22 Dec 2007 14:40:49 +0000 Subject: [PATCH] * Implemented TBufDataset.UpdateIndexDefs git-svn-id: trunk@9515 - --- packages/fcl-db/src/base/bufdataset.pas | 21 ++++++++++++++++--- .../src/sqldb/interbase/ibconnection.pp | 1 - packages/fcl-db/src/sqldb/mysql/mysqlconn.inc | 1 - packages/fcl-db/src/sqldb/odbc/odbcconn.pas | 1 - .../fcl-db/src/sqldb/postgres/pqconnection.pp | 1 - 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/fcl-db/src/base/bufdataset.pas b/packages/fcl-db/src/base/bufdataset.pas index 1697756acf..53a706b8c3 100644 --- a/packages/fcl-db/src/base/bufdataset.pas +++ b/packages/fcl-db/src/base/bufdataset.pas @@ -108,8 +108,10 @@ type TBufIndex = record Name : String; - SortField : TField; - SortFieldName : String; + Fields : TField; + FieldsName : String; + CaseinsFields : String; + DescFields : String; {$IFDEF ARRAYBUF} FCurrentRecInd : integer; FRecordArray : array of Pointer; @@ -158,6 +160,7 @@ type FUpdateBlobBuffers: array of PBlobBuffer; function GetIndexDefs : TIndexDefs; + procedure UpdateIndexDefs; override; procedure AddRecordToIndex(var AIndex: TBufIndex; ARecBuf: pchar); function GetCurrentBuffer: PChar; procedure CalcRecordSize; @@ -309,7 +312,6 @@ end; destructor TBufDataset.Destroy; begin FreeAndNil(FIndexDefs); - inherited destroy; end; @@ -319,6 +321,19 @@ begin Result := FIndexDefs; end; +procedure TBufDataset.UpdateIndexDefs; +var i : integer; +begin + FIndexDefs.Clear; + for i := 0 to length(FIndexes) do with FIndexDefs.AddIndexDef do + begin + Name := FIndexes[i].Name; + Fields := FIndexes[i].FieldsName; + DescFields:= FIndexes[i].DescFields; + CaseInsFields:=FIndexes[i].CaseinsFields; + end; +end; + Function TBufDataset.GetCanModify: Boolean; begin Result:= False; diff --git a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp index 036f453aa5..12b4325ff9 100644 --- a/packages/fcl-db/src/sqldb/interbase/ibconnection.pp +++ b/packages/fcl-db/src/sqldb/interbase/ibconnection.pp @@ -1031,7 +1031,6 @@ begin 'ind.rdb$index_name;'); open; end; - IndexDefs.Clear; while not qry.eof do with IndexDefs.AddIndexDef do begin Name := trim(qry.fields[0].asstring); diff --git a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc index 47b50e2c29..224524c053 100644 --- a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc +++ b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc @@ -843,7 +843,6 @@ begin sql.add('show index from ' + TableName); open; end; - IndexDefs.Clear; while not qry.eof do with IndexDefs.AddIndexDef do begin Name := trim(qry.fieldbyname('Key_name').asstring); diff --git a/packages/fcl-db/src/sqldb/odbc/odbcconn.pas b/packages/fcl-db/src/sqldb/odbc/odbcconn.pas index 7425ec06db..23c34e137d 100644 --- a/packages/fcl-db/src/sqldb/odbc/odbcconn.pas +++ b/packages/fcl-db/src/sqldb/odbc/odbcconn.pas @@ -1098,7 +1098,6 @@ begin ODBCCheckResult(SQLBindCol(StmtHandle, 10, SQL_C_CHAR , @AscOrDesc , 1, @AscOrDescIndOrLen ), SQL_HANDLE_STMT, StmtHandle, 'Could not bind index metadata column ASC_OR_DESC.'); // clear index defs - IndexDefs.Clear; IndexDef:=nil; // fetch result diff --git a/packages/fcl-db/src/sqldb/postgres/pqconnection.pp b/packages/fcl-db/src/sqldb/postgres/pqconnection.pp index a1e05bd00a..42d09f22db 100644 --- a/packages/fcl-db/src/sqldb/postgres/pqconnection.pp +++ b/packages/fcl-db/src/sqldb/postgres/pqconnection.pp @@ -803,7 +803,6 @@ begin 'ic.relname;'); open; end; - IndexDefs.Clear; while not qry.eof do with IndexDefs.AddIndexDef do begin Name := trim(qry.fields[0].asstring);