2001-03-31 ############################################## MK 2.4.4
Various bug fixes and (blocked view) performance enhacements.
2001-03-28 More blocked optimizations, IRIX tweaks
Switched Slot() to binary search. This seems to slow down a few percentage point for smaller views, but with 5 millions rows this is reported to make a huge difference (from code by Zhang Dehua). Added header "bool" fix by Erik Hofman so MK compiles on IRIX (SGI).
2001-03-27 Added definitions for AIX
Added six operators defs before c4_Cursor class, to avoid compile errors on AIX. With apologies to Murat Berk for taking so long...
2001-03-26 Re-instated the c4_View::RelocateRows operation
Re-enabled code which supports efficient moves of rows from one view to another - avoiding copying of subviews. Strings/memos are still being copied for now. Also moved a slow test out into a new call "c4_View::IsCompatibleWith", this must be checked to make sure that RelocateRows can work. Passing incompatible views will still cause an assertion in debug mode, but must be avoided in release builds. This change ought to have a dramatic effect on inserts/deletes for blocked views with large subviews. Added examples/blockdels.tcl to thoroughly exercise this new code and all boundary conditions.
2001-03-22 Fixed a serious bug in serialization code
When serializing string/bytes columns with large strings using the c4_Storage::SaveTo function, memo's would sometimes not be written, leading to a *damaged* datafile (and incorrect free-space tracking).
2001-03-15 Better configure logic, "mk::view layout" fix
Many tweaks to configures, makes, and libtool setup. Get rid of the library version numbers and the special Mk4*.so targets. Instead of Mk4tcl.so use libmk4tcl.so (likewise Mk4py.so is now libmk4py.so). Fixed "mk::view layout", it was broken by the 10-2-2002 change.
2001-03-13 Extend partial access 'B' usage
Added code to Access and Modify to simulate partial data access the hard way when the underlying view does not support it (c4_Bytes only), i.e. copy via full temp. Added test s41, doing partial access on a blocked view.
2001-03-12 Add test for serialized input
The c4_Storage::LoadFrom() call (mk::file load) can be tricky. After a commit, the header is adjusted so that reading from the start works. This is not the case in commit-extend mode, where a load will read th state as it was before extending - it cannot know there is more. Added test s40 to verify this case. Also reorged a few more files (tbasics and tstore4 split into 2 each). Added test in mk4tl.cpp so LoadFrom failure generates an error return, instead of being ignored.
2001-03-10 Tweaked March 8 fix a tad further
The workaround implemented below wasn't 100% complete.
2001-03-08 Workaround for file extend on Win
There seems to be a bug when extending a file on at least NT4 with NTFS (file server works fine). When extending the file in such a way that a gap is created to save new data during commit, the file appears to get rounded up to the next 512-byte boundary. At that point, the datafile no longer has a valid end marker and is sort of corrupt. Wrote workaround for Win32 builds, see persist.cpp notes names "March 8, 2002". One way to force this bug is to run "mkhash Dmhs 250000" - after row 150000, it asserts on bad filesize when built in debug mode and run on NTFS.
2001-02-19 Fixed over-aggressive optimization
Change made on Feb 7 was releasing too many objects in a commit, causing it to detach empty top-level views, even when in use. Fixed, added s39 to test for this case.
2001-02-10 Improve Mk4tcl's "mk::view layout"
Avoid crash when asking for the layout of a non-existent view. Now returns an error instead.
2001-02-07 Fast commit with many empty subviews
Avoid creating subviews when committing, if these are empty anyway. Added new s38 test for this case.
2001-02-02 Small optimizations
Changed a few c4_Property instances to const& references to avoid copying (2 in view.cpp, 2 in custom.cpp).
2001-02-01 ############################################## MK 2.4.3