Subject | New release IBO 4.9.3 |
---|---|
Author | Jason Wharton |
Post date | 2009-06-19T05:19:20Z |
I just put the following release in all download areas.
6/18/2009 Release 4.9 Build 3 (beta)
I made extensive fixes and improvements to full text searching. Most notable is the inclusion of two new search types. tstWordLike and tstWordContaining. I also made it so the AUX column can be left blank in the IB_FTS utility app. I also have the beginnings of an OR operator for word pairs, triplets, etc. This is bringing about a SQLUnionItems property that will work similar to the SQLWhereItems property. That is the only way to make it fully optimizable is to have a UNION for each OR condition.
I fixed the bug having to do with the TIB_Grid making use of the private members of TCustomGrid by way of a fake class patterned after it to poke into the values. I had not yet made it consistent with the new version of Delphi 2009.
I added the OnCustomizeTPB event to the TIB_Database component. This surfaced it from the underlying transation object it contains.
I ported over the unit for handling the log files for the service class and the web server base classes I use for the community web-site.
I ported over the unit for handling SQL tracing.
I finished up support for alternate key handling and integrated it into the IB_FTS (full text search) utility application so that keys can be selected more easily.
I added in support for calculated fields that are BLOB columns. This involved changing the FieldNo variable from type word to integer.
I altered the behavior of BlobNodes. A freshly initialized blob node will show a BlobSize of -1 for being uninitialized in order to distinguish from a BLOB being deliberately set to zero length.
I included some MD5 hashing routines in the IB_Utils.pas unit.
I added the following methods below for easier access to the values in the buffers. This is also a way to directly tweak the values in calculated and COMPUTED field buffers.
{: Similar as in TDataset }
function Lookup( const ABookmark: AnsiString;
const AResultFields: AnsiString ): Variant; overload;
{: PokeValues is a quick and dirty way to directly alter the contents of the
buffers without going through the whole process of going into an edit state and
posting. This is a way to tweak the values in the buffers and should only be
used under special circumstances that warrent such. <br><br>
The function returns true if the record is found in the buffer and the new values
were actually written in.}
function PokeValues( const AKeyFields: AnsiString;
const AKeyValues: Variant;
const APokeFields: AnsiString;
const APokeValues: Variant ): boolean; overload;
{: PokeValues is a quick and dirty way to directly alter the contents of the
buffers without going through the whole process of going into an edit state and
posting. This is a way to tweak the values in the buffers and should only be
used under special circumstances that warrent such. <br><br>
The function returns true if the record is found in the buffer and the new values
were actually written in.}
function PokeValues( const ABookmark: AnsiString;
const APokeFields: AnsiString;
const APokeValues: Variant ): boolean; overload;
I added the LikeCompare() function to simulate the server's LIKE operator on text in IB_Parse.pas.
function LikeCompare( const ALikeStr, AStr: ansistring;
AIgnoreCase: boolean = false;
AEscapeChar: ansichar = '\' ): boolean;
I included a fix from Paul Filmer who corrected a parsing problem having to do with returning the correct RelationAlias for some SQL statements.
I included the fix Andreas pointed out in IBODataset.pas where I converted a PChar to PAnsiString instead of PAnsiChar. This was in the SetBookmarkData() method. It was causing an access violation.
Enjoy,
Jason Wharton
[Non-text portions of this message have been removed]
6/18/2009 Release 4.9 Build 3 (beta)
I made extensive fixes and improvements to full text searching. Most notable is the inclusion of two new search types. tstWordLike and tstWordContaining. I also made it so the AUX column can be left blank in the IB_FTS utility app. I also have the beginnings of an OR operator for word pairs, triplets, etc. This is bringing about a SQLUnionItems property that will work similar to the SQLWhereItems property. That is the only way to make it fully optimizable is to have a UNION for each OR condition.
I fixed the bug having to do with the TIB_Grid making use of the private members of TCustomGrid by way of a fake class patterned after it to poke into the values. I had not yet made it consistent with the new version of Delphi 2009.
I added the OnCustomizeTPB event to the TIB_Database component. This surfaced it from the underlying transation object it contains.
I ported over the unit for handling the log files for the service class and the web server base classes I use for the community web-site.
I ported over the unit for handling SQL tracing.
I finished up support for alternate key handling and integrated it into the IB_FTS (full text search) utility application so that keys can be selected more easily.
I added in support for calculated fields that are BLOB columns. This involved changing the FieldNo variable from type word to integer.
I altered the behavior of BlobNodes. A freshly initialized blob node will show a BlobSize of -1 for being uninitialized in order to distinguish from a BLOB being deliberately set to zero length.
I included some MD5 hashing routines in the IB_Utils.pas unit.
I added the following methods below for easier access to the values in the buffers. This is also a way to directly tweak the values in calculated and COMPUTED field buffers.
{: Similar as in TDataset }
function Lookup( const ABookmark: AnsiString;
const AResultFields: AnsiString ): Variant; overload;
{: PokeValues is a quick and dirty way to directly alter the contents of the
buffers without going through the whole process of going into an edit state and
posting. This is a way to tweak the values in the buffers and should only be
used under special circumstances that warrent such. <br><br>
The function returns true if the record is found in the buffer and the new values
were actually written in.}
function PokeValues( const AKeyFields: AnsiString;
const AKeyValues: Variant;
const APokeFields: AnsiString;
const APokeValues: Variant ): boolean; overload;
{: PokeValues is a quick and dirty way to directly alter the contents of the
buffers without going through the whole process of going into an edit state and
posting. This is a way to tweak the values in the buffers and should only be
used under special circumstances that warrent such. <br><br>
The function returns true if the record is found in the buffer and the new values
were actually written in.}
function PokeValues( const ABookmark: AnsiString;
const APokeFields: AnsiString;
const APokeValues: Variant ): boolean; overload;
I added the LikeCompare() function to simulate the server's LIKE operator on text in IB_Parse.pas.
function LikeCompare( const ALikeStr, AStr: ansistring;
AIgnoreCase: boolean = false;
AEscapeChar: ansichar = '\' ): boolean;
I included a fix from Paul Filmer who corrected a parsing problem having to do with returning the correct RelationAlias for some SQL statements.
I included the fix Andreas pointed out in IBODataset.pas where I converted a PChar to PAnsiString instead of PAnsiChar. This was in the SetBookmarkData() method. It was causing an access violation.
Enjoy,
Jason Wharton
[Non-text portions of this message have been removed]