* Merging revisions r48711 from trunk:

------------------------------------------------------------------------
    r48711 | michael | 2021-02-18 16:10:05 +0100 (Thu, 18 Feb 2021) | 1 line
    
    * Fix from mattias Gartner for issue ID #38509, correctly rest index on close/reopen
    ------------------------------------------------------------------------

git-svn-id: branches/fixes_3_2@49304 -
This commit is contained in:
michael 2021-05-01 08:58:51 +00:00
parent 0fc1640e1d
commit 08aeecc05d

View File

@ -1449,6 +1449,7 @@ var
i,r : integer; i,r : integer;
iGetResult : TGetResult; iGetResult : TGetResult;
pc : TRecordBuffer; pc : TRecordBuffer;
CurBufIndex: TBufDatasetIndex;
begin begin
FOpen:=False; FOpen:=False;
@ -1498,10 +1499,17 @@ begin
if FAutoIncValue>-1 then FAutoIncValue:=1; if FAutoIncValue>-1 then FAutoIncValue:=1;
if assigned(FParser) then FreeAndNil(FParser); if assigned(FParser) then FreeAndNil(FParser);
For I:=FIndexes.Count-1 downto 0 do For I:=FIndexes.Count-1 downto 0 do
if (BufIndexDefs[i].IndexType in [itDefault,itCustom]) or (BufIndexDefs[i].DiscardOnClose) then begin
BufIndexDefs[i].Free CurBufIndex:=BufIndexDefs[i];
if (CurBufIndex.IndexType in [itDefault,itCustom]) or (CurBufIndex.DiscardOnClose) then
begin
if FCurrentIndexDef=CurBufIndex then
FCurrentIndexDef:=nil;
CurBufIndex.Free;
end
else else
FreeAndNil(BufIndexDefs[i].FBufferIndex); FreeAndNil(CurBufIndex.FBufferIndex);
end;
end; end;
procedure TCustomBufDataset.InternalFirst; procedure TCustomBufDataset.InternalFirst;
@ -3058,16 +3066,18 @@ function TCustomBufDataset.GetIndexFieldNames: String;
var var
i, p: integer; i, p: integer;
s: string; s: string;
IndexBuf: TBufIndex;
begin begin
Result := FIndexFieldNames; Result := FIndexFieldNames;
if (CurrentIndexBuf=Nil) then IndexBuf:=CurrentIndexBuf;
if (IndexBuf=Nil) then
Exit; Exit;
Result:=''; Result:='';
for i := 1 to WordCount(CurrentIndexBuf.FieldsName, [Limiter]) do for i := 1 to WordCount(IndexBuf.FieldsName, [Limiter]) do
begin begin
s := ExtractDelimited(i, CurrentIndexBuf.FieldsName, [Limiter]); s := ExtractDelimited(i, IndexBuf.FieldsName, [Limiter]);
p := Pos(s, CurrentIndexBuf.DescFields); p := Pos(s, IndexBuf.DescFields);
if p>0 then if p>0 then
s := s + Desc; s := s + Desc;
Result := Result + Limiter + s; Result := Result + Limiter + s;