Page 1 of 1

New ZeodLib: How to post?

Posted: 02.10.2006, 03:56
by bangfauzan
I have some new features and bug-fix, based on zeos 6.5.1 cvs rev 98 (mdeam), but I don't know how to post it. It's impossible to use attachment, becouse maximum size allowed only 512KB whereas the LIB size appoximately 8MB.

Best Regards.

Posted: 02.10.2006, 09:38
by mdaems
Hi bangfauzan,

Can't you just zip the changed source files? If that's more than 512Kb you rewrote the whole library.(joking) Even better is sending a SVN patch file, but then you should start using the SVN repository (testing branch), and not everybody wants to do so.

Please keep new features separated from bug fixes...

So, can you post the bug fix, together with a small description? Maybe as a new 'bug reports' forum post. -> Upon validation these changes will be applied ASAP to SVN.
Can you explain the new features you want to introduce? These should be added in the 'user contributions' forum, along with a description of what's changed. Here I can't promise it will be added to the library as not every nice-to-have should be allowed to keep it all maintainable.

Mark

Posted: 02.10.2006, 10:12
by bangfauzan
I have downloaded the latest CVS of Zeosdbo (rev 98) from this forum. I started to review and evaluate the advantage of the library. Then I conclude that zeosdbo is a very excellent database connection.

But I got that there are many features are not available in the library (dataset). For example, zeoslib has cachedupdates property, so every change in can be maintain in dataset until ApplyUpdates or CancelUpdates executed.
But Zeos dataset doesn't have BeforeApplyUpdates and AfterApplyUpdates events.

So I think, it's necessary even important to add and/or change many feature of ZeosDBO. Then I tried to make changes and modifications below based on other popular components like TClientDataSet and TSimpleDataSet and also to meet client/server compliant on ZeosDBO.

1. Adding BeforeApplyUpdate and AfterApplyUpdate events (adapted from TClientDataSet)
2. Adding EmptyDataSet procedures (like TClientDataSet), for clearing record set from dataset.
3. Adding SortType property (stAscending and stDescending), to control sorting behavior, either ascending or descending order.
4. Fixing InternalPost procedure to perform sorting when recordset being posted, depend upon SortedFields property (in original version this not work).
5. The last but not least, cause I used TUltimGrid from JEDI, which has TitleButton property, to perform sorting, and it work very well if I use ADODataSet but not others. Why? Because TUltimGrid sent a value to IndexFieldNames property of the dataset when title button being pressed, and... I think that IndexFieldNames property of ADODataset has two functions, first for master-detail relationship and second for performing sort. While Zeos was absolutely different, IndexFieldNames for master-detail relationship and SortedFields for performing sort. So, it's impossible to make title button of TUltimGrid works along with Zeos, except handled by our own UDF. To make it become true, I conducted a simulation. I rename the IndexFieldNames to LinkedFields property (for master detail relationship), and then I add "new" IndexFieldNames property for performing sort. so now sorting data can be conducted by setting IndexFieldNames or by SortedFieldNames and SortType combination.

In the next version, I wish that zeos dataset also has Changecount property like TClientDataSet, indicate number of changed recordset, and it is makesense because Zeos dataset has CachedUpdates property.
I still have a problem in opening table or query when I connected with MSSQL. I use MSSQL2000, and the message were ‘Invalid column name’.

Finally, if somebody has a better idea, I would be very glad and appreciate.

The revision and modification file will be attached tomorrow.

Thanks.

Posted: 02.10.2006, 13:33
by mdaems
Hi Bangfauzan,

The first 4 things you did seem quite straightforward to me, I don't think anybody could be 'contra'. (at least, when you provided the default 'ascending' for number 3)
I have some reservations for change number 5. What about compatibility? Will old code still work after your change without remapping every call to IndexFieldNames to LinkedFields? If not, please keep change 5 out of the patch at first. It's not because you use yourfavorite (and I suppose very good) components, all others should change their apps. Unless the new behaviour is more conforming to standard delphi components behaviour, of course.

Conclusion : please post numbers 1 to 4 and provide more compatibility information for number 5.
I'll apply the patch if it seems OK and do the standard tests. If it works your first 4 patches are committed to SVN (we're not using CVS anymore).
This is a slow way of working, but we want this version to get stable, so we avoid most risky stuff, for the moment.

Mark

Mark

New Features and Bug-Fixes

Posted: 03.10.2006, 09:14
by bangfauzan
Here the new features I added and/or modified. My Addition and/or modification always be marked by {bangfauzan addition} or {bangfauzan mofication}.

The features Added are:
1. BeforeApplyUpdates (event)
2. AfterApplyUpdates (event)
3. SortType (property)
4. EmptyDataSet (procedure)

While Bug-Fix is:
1. InternalPost (Procedure)

Modification to meet new features characteristics
1. InternalSort (procedure)
2. SetSortedFields.

hopely useful.

Enjoy it........

Posted: 03.10.2006, 09:43
by mdaems
Thanks bangfauzan,

All this changes are added to the SVN project repository. It will be available for download soon, but not today as I have to take into account the upload limits of my ISP. And I have allready released the packages today.
If you want it now you'll have to get it from SVN (Testing branch).

Thanks a lot and think about the fifth change you proposed. Did it really change behaviour?
Also, the 'changedcount' property would be nice as well. If you can do that, excellent. It is harmless and usefull.

Concerning the MSSQL thing, we have had this bug mentionned before, butfor the moment we don't have an active team member supporting MSSQL. Apparently it's a real bug. I think it was only a problem when using 'select *' instead of naming the fields one by one.

Mark