Menu

Changes for functionality, performance, compatibility and reliability

Paul Baker
2015-05-28
2015-08-31
  • Paul Baker

    Paul Baker - 2015-05-28

    I created a branch, /branches/paulenandrew, and committed a large number of changes affecting it.

    The changes are all documented in History.txt:
    https://sourceforge.net/p/tdbf/code/HEAD/tree/branches/paulenandrew/doc/history.txt

    Generally, the changes fall under one of these categories:
    - Add missing functionality that the BDE has, especially parser functions and indexes (but the BDE has bugs with certain + and - operations)
    - Better performance (in some cases, much better)
    - Better compatibility with the BDE, making it a more effective replacement
    - Better reliability
    - Miscellaneous bug fixes

    Although I committed a large number of changes over a short period of time, rest assured that I actually worked on them for about 1000 hours. Also, it is being used in a commercial product that has been thoroughly tested by professional test engineers and used by hundreds of customers daily for a period of about four years. As a replacement for the BDE, it has worked solidly and required no fixes during that period.

    I could use some help with merging it into the trunk. Should there be a code review before it is merged into the trunk? I am using SmartSVN 8.6.6, but am not familiar enough with Subversion to confidently merge it on my own anyway. Revisions 329-506 are by me, we need to make sure to preserve revisions 359-360 by lploeger and revisions 454-460 by twm.

     

    Last edit: Paul Baker 2015-05-28
    • Nashev

      Nashev - 2015-05-29

      Excellent! Big thanks!
      But about merge procedures and making release I'm personally can't advice anything. Let's hear community...

       
  • Paul Baker

    Paul Baker - 2015-05-29

    Git Extensions can clone a Subversion repository, and I am familiar with that. Would that work?

     
    • Nashev

      Nashev - 2015-05-29

      My experience with Git support of Subversion are very bad. I suggest do not use them.

       
  • Paul Baker

    Paul Baker - 2015-06-01

    Okay, I'll use Subversion (not Git) to merge my branch when we are ready.

    Let's hear what the community has to say about merging and release.

     
  • Paul Baker

    Paul Baker - 2015-08-06

    We did not hear anything in two months. What do you suggest?

     
  • Nashev

    Nashev - 2015-08-06

    As you can see now (https://sourceforge.net/p/tdbf/code/commit_browser), I just merged all Yours changes into trunk as single commit.
    If someone will be angry, they can revert it or update it..

     
  • Paul Baker

    Paul Baker - 2015-08-06

    Thanks. I am now using the trunk r515 for my project.

     
  • Peter Guth

    Peter Guth - 2015-08-13

    I just downloaded the r515 version (I had been using 507 trunk)

    I am using XE8.

    In dbf_prssupp, I note a number of new functions. Problems start at about line 240, where FloatRec.Digits is now an array of bytes for which StrLen does not work). I am pretty sure this is related to the new string types.

    Before I go down that rathole again, has anyone else run this with XE8 (and probably a few vesions back, as I handled this issue in my other code so long ago I forget the details, other than the overall pain), and did you have any problems?

     
  • LS Ploeger

    LS Ploeger - 2015-08-31

    Hi all,

    I found a bug in the Locate function, where e.g. Table.Locate('COLUMN', 'Value', []) did not work, while an entry with Value 'Value' was actually present in Column 'COLUMN'.

    The problem was caused by an issue in TMdxPage.GetEntry(). It should be implemented like:

      Result := PAnsiChar(@PMdxPage(PageBuffer)^.FirstEntry)
        + (SwapWordLE(PIndexHdr(IndexFile.IndexHeader)^.KeyRecLen) * AEntryNo);
    

    The PAnsiChar cast used to be a PChar cast, but this does not work correctly for Delphi 2009 and up (i.e. for PChar pointing to a Unicode string). Also, there is a flaw in TIndexFile.CompareKeysNumericMDX() where the value of zero is not derived correctly.

    To be able to find this problem I also ran the code with Delphi 5, also requiring a couple of adaptations to the code (e.g. System.Types does not exist in D5).

    Where can I upload my changes? To a branch or to the trunk?

    Best regards,

    Lennert.

     

Log in to post a comment.