[fpc-pascal] Documentation for sqldb - More Questions

Michael Van Canneyt michael at freepascal.org
Tue Jul 3 17:38:16 CEST 2007

On Tue, 3 Jul 2007, Joost van der Sluis wrote:

> On Tue, 2007-07-03 at 14:13 +0200, Martin Schreiber wrote:
> > > I aggree with Michael on this. Besides, last time I looked at your
> > > 'TBufDataset' (which is a actually a fork, offcourse) it only
> > > implemented blob-fields, on top of the existing TBufDataset.
> > >
> > > The current TBufDataset also supports blob-fields, in a (in my
> > opinion)
> > > better way, now. Are there any other changes/additions?
> > >
> > It is completely rewritten. Buffer organisation is not a linked list,
> > the 
> > record pointers are hold in arrays to allow simple record accessing
> > by 
> > locally builded indexes and easy recno handling. String fields are
> > stored as 
> > widestrings, there are no fixed string field sizes in the record
> > buffer. It 
> > has the possibility to work comparable to TClientDataset with a local
> > change 
> > log and data file.
> I had the 'old' tmbufdataset in mind. The TMSEbufDataset is indeed very
> different.
> As you can probably remember, the TBufDataset also used a array to store
> the record buffers. I changed that because benchmarks showed that the
> current solution is much faster. Even if you want to address a record
> immediately, as long as you use a bookmark, and not the recno directly.
> Which is imho not always a good idea.

Recno should never be used for positioning.

> But there are no indexes yet, that's completely true. 
> What I do like is the idea of storing strings in a
> widestring/ansistring. I tried to implement that earlier, but it's not
> doable in a Delphi-compatible way. As you said, you don't have that
> problem. But it's still something on my whish-list for
> sqldb/TDataset/TBufDataset. There must be a solution, without using the
> blob-system...

I do not think this is a good idea: the amount of memory used for this is 
a multiple of the classic buffer scheme, the heap will be terribly fragmented.
The buffer system is exactly meant to save memory (blobs excepted).

> What do you mean with the local change log and data file?

Like TClientDataset: the changes to the records (the delta) are kept in a 
separate index. All can be written to file. It's a briefcase model.


More information about the fpc-pascal mailing list