× News Cego SysMT Croom Web Statistics Impressum
SysMT Logo
Change log for Cego Database
Category Date Version Log
cego 21.01.2017 2.32.7 Version released
cego 21.01.2017 2.32.7 Fix in CegoFileHandler::releaseFiles. _tabSetId and _isReg vars have to be set to zero/false in any case. Otherwise, it might happen that old entries are still visible and in case of a tableset recreation obsolete file handle information is provided
cego 18.01.2017 2.32.7 Method CegoTransactionManager::hasOpenTransaction added to check for open transaction for a spedific table. This method is called now before a table can be dropped to ensure there are no open transaction for this table.
cego 04.01.2017 2.32.6 Version released
cego 02.01.2017 2.32.6 Small performance improvement in CegoBufferPool::bufferFix
Instead of copying the buffer head data to a local variable via memcpy, a pointer variable is used to access the data directly
Performance improvement just a few percent ...
cego 01.01.2017 2.32.5 Version released
cego 01.01.2017 2.32.5 Added another performance patch to CegoBTreeCursor.
The method compValue has been redesigned in a way, that comparison is prepared at cursor creation time and so could be executed in a optimized and faster way
This speeds up queries with joined tables, where the joined table is traced many times ( e.g. select count(*) from t1, t2 where t1.a = t2.a )
cego 30.12.2016 2.32.4 Version released
cego 30.12.2016 2.32.4 Fixes and improvements for table export added
In CegoXPorter::xmlExportable, the pOutStream pointer was deleted, which lead to a core dump ( pointer is already deleted by Element )
Row counter handling and messages have been improved
cego 30.12.2016 2.32.4 Fixes for CegoBTreeCursor added
cego 29.12.2016 2.32.4 Change back to memove call in CEgoBTreeNode:shiftEntries. Copying manually and bytewise decreased performance about two times for building up btree objects. This has been observed on native POSIX ( FreeBSD 11 ) but also on MSYS64 compiles
Thanks for Deutsche Bahn to provide ( free ) internet on train, so I was able to spent this time on the analysis :)
cego 28.12.2016 2.32.4 Improvements for CegoBTreeCursor. With the new introduced methods CegoBTreeNode::getMedPage and CegoBTreeNode::rightValue, the search for the appropriate subnode can be made with logarithmic efforts instead of linear search. To validate this improvement, the following query has been setup for a random filled table t1
select * from t1 ta where exists ( select * from t1 tb where tb.b = ta.b );
Execution time with the improved btree cursor was two times faster than with old implementation.
cego 26.12.2016 2.32.4 More performance improvements made for btree creation
- changed linear search efforts in CegoBTreeNode::getChildPage to logarithmic search efforts ( introduced lb /rb variable )
- Change in CegoBTreeManager::allocPage. Since for cache based creation, just a pageId must be allocated, the low level method CegoFileHandler::allocatePage is used.This avoids an unnessary bufferFix call for the new page - Introduced appendFid variable for CegoFileHandler class. In case of many managed datafiles, the last file with avaiable pages is used for the allocatePage method.
- Performance comparison to MariaDB indicates now a better scaling from 2 million rows and up ( by using cego btree cache )
cego 25.12.2016 2.32.4 Improvement modifications for btree implementation increased build up speed for just about 3 percent. It seems, the most time is used by calling shiftEntries method, where memory is moved via memmove.
I observed, that 8k page size ( instead of 16k ) brought up some performance improvement for btree creation of about 100% ( for type string(60) with random values )
cego 25.12.2016 2.32.4 More performance improvements in CegoBTreeManager and CegoBTreeNode, overall impact still has to be analysed
Fix in CegoTableManager added for alter table modify column, columns with existing btree or key objects can not be modified anymore
cego 24.12.2016 2.32.4 Further improvement approach in CegoBTreeManager to increase btree creation performance. BufferPage handles have been changed from native variables to pointer handles. This should reduce page access efforts in case of enabled btree cache
cego 24.12.2016 2.32.3 Version released
cego 23.12.2016 2.32.3 Fix in CegoAction::insertStore and CegoAction::insertValueSpecStore; for value array inserts via network, the ack for the protocol was no satisfied ( e.g. insert into t1 values ( 1, 'XXX'),(2,'YYY'),...) which leads to a hanging database client. Since class CegoQuey was already prepared for bulk inserts, this was a simple fix, just calling execQuery via insertStore parser method just one time.
cego 23.12.2016 2.32.3 Code cleanup in CegoBTReeManager and CegoBTreeNode, use of static method CegoDataPointer::getEncodingLength, ( define of DPENCODINGLENGTH )
cego 23.12.2016 2.32.3 Fix in CegoFileHandler::CleanDataFile,pageId was not calculated correctly ( missing offset )
cego 21.12.2016 2.32.2 Version released
cego 21.12.2016 2.32.2 Fix in CegoTranactionManager, replaced LONG_TYPE with PAGEID_TYPE, since this is the correct type for page entries. This was detected on MinGW64 compiles (seg fault occured), since the type size differs on this platform.
cego 18.12.2016 2.32.1 Version released
cego 17.12.2016 2.32.1 Fixes for CegoBTreeManager::deleteBTree ( changed int type to PageIdType for page vars ) and CegoBTreeManager::insertBTree ( propValue was not setup correctly for root node propagation in some cases, which might lead to corrupt btree structure )
cego 13.12.2016 2.32.0 Please note : Upgrade to this version requires tableset export / import ( XML mode recommended )
cego 13.12.2016 2.32.0 Version released
cego 13.12.2016 2.32.0 Functional tests with SysMT successful completed
cego 12.12.2016 2.32.0 All base checks passed, but there is still a page allocation leak for table drops
cego 12.12.2016 2.32.0 First performance analysis indicates a speedup of about 10% for btree creation, so significant speedup for full table scans.
cego 11.12.2016 2.32.0 This version brings a complete redesign of low level page handling.
Instead of page references identified by fileId and pageid, a database unique pageid is used now
This results in a complete reimplemtation of several low level classes like CegoFileHandler, CegoBufferPool, Blob handling, etc. Since pages are references by a single ( 64 bit ) id now, I expect an increased performance behaviour over all database operations.
Most code modifications are done, code complies and basic functionally works ( create tableset, create table, insert table )
cego 04.12.2016 2.31.7 Version released
cego 04.12.2016 2.31.7 Fix in CegoFieldValue for fixed value handling. In case of fixed value aggregations, the specified fixed dimension should be kept. This has been done be analysing the value dimension in the CegoFieldValue:add/sub/mu/div methods. In CegoQueryHelper::prepareFieldValue, fixed values are checked now for right dimension
cego 26.11.2016 2.31.6 Version released
cego 26.11.2016 2.31.6 Fix in CegoSelect::getQueyId added, for the ordering clause asc and desc ordering attributes were missing. This might lead to wrong ordering results if query caching is used
cego 21.11.2016 2.31.5 Version released
cego 20.11.2016 2.31.5 Changed CegoQueryHelper methods to static
cego 20.11.2016 2.31.5 Fix for CegoBTreeManager and friends regarding small string values ( string(1) )
Please note, that this fix invalidates btree format.
Btrees have to be recreated after this fix !

Type len check added in CegoAction for string, bigint, decimal and fixed types ( type len must be greater than 0 )
cego 19.11.2016 2.31.4 Version released
cego 19.11.2016 2.31.4 Fix some leaks in CegoXPorter regarding file handles and memory allocation ( improved exception handling )
cego 13.11.2016 2.31.3 Version released
cego 13.11.2016 2.31.3 Fixed a file handle leak for datafiles and logfiles ( CegoFileHandler, CegoTableManager and CegoLogManager ) After tableset creation ( or start and stop ), file handles have not cleaned up properly. This lead to file remove problems in case of a tableset drop. This effect was detected by building and testing the MinGW64 port
cego 13.11.2016 2.31.2 Version released
cego 13.11.2016 2.31.2 Fix in CegoClient for escape character handling in batch mode
cego 13.11.2016 2.31.2 Fix in CegoClient for dumpfile generation. Default values handling corrected
cego 13.11.2016 2.31.2 Join optimizer fix in CegoSelect, CegoAttrCond and CegoBtreeCursor. join attributes are checkd now in a more sophisticed way, which leads to improved execution performace for advanced joins
cego 06.11.2016 2.31.1 Version released
cego 06.11.2016 2.31.1 Fix in CegoBTreeManager::insertBTree, in case of a duplicate exception, a bufferpool leak occured ( buffer is not unfixed ).
cego 18.09.2016 2.31.0 Please note : null comparison has been changed with versio 2.31.0 . All index objects containing null values must be reorganized. I recommend export and import for the complete tableset
cego 08.09.2016 2.31.0 Version released
cego 07.09.2016 2.31.0 Added database flag DUPLICATENULL to allow duplicate null values for unique btree objects
cego 19.08.2016 2.30.26 Version released
cego 18.08.2016 2.30.26 Fix in CegoFunction::evalFieldValue, for functions date2str, date2int, int2date, type casting to appropriate type has been added. Without the cast, the functions might return wrong results
cego 14.08.2016 2.30.25 Version released
cego 14.08.2016 2.30.25 Adaptions for CegoBlowTab to use CegoNet API
cego 13.08.2016 2.30.25 Completion for blob methods in CegoNet
cego 13.08.2016 2.30.25 Improved flow control in CegoClient ( based on ncurses )
cego 12.08.2016 2.30.25 Optimization in CegoClient, just high level CegoNet API methods are used now for client implementation. Missing methods have been added to CegoNet API
cego 11.08.2016 2.30.24 Version released
cego 11.08.2016 2.30.24 Fix in CegoNet::connect, the global vars __dateTimeFormat, __currencySymbol and __decimalPoint are set up now to appropriate values
cego 26.07.2016 2.30.23 Version released
cego 26.07.2016 2.30.23 Added verify005.sql to dbcheck suite to verify cast operations
cego 26.07.2016 2.30.23 Fix in CegoClient, global vars __currencySymbol and __decimalPoint still have not been set up correctly, doen in the same way as for CegoMain on server side
cego 25.07.2016 2.30.22 Version released
cego 25.07.2016 2.30.22 Fixes for cast operations regarding values for type fixed
cego 22.07.2016 2.30.21 Version released
cego 22.07.2016 2.30.21 Fix in CegoProcedure::execute and CegoProcedure::getRetVal In the castTo method, the type dimension was still not treated. This might lead to wrong cast results especially for fixed values
cego 22.07.2016 2.30.21 Fixed cgadm online help for import command, the nologging option was not documented
cego 20.07.2016 2.30.21 In CegoRecoveryManager, added tableset argument line argument for calling the external log manager.
This makes it more easy in the log manager code, to implement tableset dependent restore strategies
cego 20.07.2016 2.30.20 Version released
cego 20.07.2016 2.30.20 A patch was needed in CegoBlowTab for MinGW compile. Since the functions srandom and random are ( still ) not provided, a define has added to map to srand and rand
cego 17.07.2016 2.30.19 Version released
cego 17.07.2016 2.30.19 The previous patch in lfcbase required a patch for CegoLogThreadPool::copyLog. Since the archfile file was not closed after trunc, the rename operation failed now. close method call was added
cego 17.07.2016 2.30.18 Version released
cego 16.07.2016 2.30.18 Catched server termination in CegoTableManager::writeCheckpoint. If log files could not be archived, the method does not recognized server termination ( runstate = OFFLINE )
cego 16.07.2016 2.30.18 Improvement added dor log file shipping in CegoLogThreadPool::copyLog. The archive log file is first writte to a temporary file and if finished, is moved than to its original file name. For the tape management, this is an indication, that the file is completely written and is ready for further processing
cego 14.07.2016 2.30.17 Version released
cego 13.07.2016 2.30.17 Fixed for point-in-time recovery, Date format handling was not done correectly
cego 13.07.2016 2.30.16 Version released
cego 13.07.2016 2.30.16 Elimination of BUFFERPOOLHASHKEY. The bufferpool position is now calculated based on the page offset of the corresponding datafile ( this information is provided by CegoFileHandler::getRegPageOffset )
This leads to a much better distribution and usage of the available buffer pool pages
cego 12.07.2016 2.30.16 Fix in CegoTableManager::createBTree, the creation of the btree object must be done in a dedicated exception block, otherwise the btree object is dropped, if it already exists.
cego 10.07.2016 2.30.15 Version released
cego 10.07.2016 2.30.15 Reactivation of rollback segment record locks in CegoLockHandler class.
In CegoObjectManager::insertData, in case of rollback segements insert operations, the RB record lock is used instead of the system record lock. This might avoid some deadlock situations.
cego 09.07.2016 2.30.15 Added update sync mode. With this mode, the user can decide, if an update or delete should be blocked until another concurrent transaction is finished or return immediatly without updating concurrent affected tuples
cego 09.07.2016 2.30.15 Made __dateFormatList in CegoMain threadsafe
For the point-in-time recovery timestamp format, now the server defined format is used ( variable CGPITFORMAT is obsolete )
cego 07.07.2016 2.30.14 Version released
cego 07.07.2016 2.30.14 Fix in CegoBufferPool::poolINfo, the spread rate calculation was not done correctly
cego 03.07.2016 2.30.13 Version released
cego 03.07.2016 2.30.13 Cast handling in CegoFieldValue::castTo completed.
This allows an any to any value casting, except lob values and some unsupported datetime casts ( e.g. bool to datetime really makes no sense )
cego 30.06.2016 2.30.13 Added more cast cases to CegoField::castTo, still not completed
cego 29.06.2016 2.30.13 Improvement for hash calculation in CegoBufferPool::calcSegement. For a better page spreading, the segment calculation was changed to a more linear approach
cego 27.06.2016 2.30.13 Added alter table modify command just for default values.
Usage :
 alter table t1 modify column a default 42; 
cego 27.06.2016 2.30.12 Version released
cego 26.06.2016 2.30.12 Added cast improvements to CegoFieldValue::castTo method, which are also checked now with check050
cego 26.06.2016 2.30.12 Evaluation of locale to find out decimal point character. E.g. for english locales this is ., for german this is ,. The character is used for float value handling in CegoFieldValue methods.

For default value handling in alter table statements, the cast methods are also called now. check050 has been added to verify this feature.
cego 22.06.2016 2.30.11 Version released
cego 22.06.2016 2.30.11 Fix in CegoRecoveryManager::recoverTableSet, the lsn was incremented which lead to leaks in the transaction log. This could result in an incomplete recovery procedure
cego 21.06.2016 2.30.11 Improvements for tableset recovery, external log manage fiel is checked in CegoAdminThread::medRecover before restore procedure is started.
cego 19.06.2016 2.30.10 Version released
cego 18.06.2016 2.30.10 Fix in CegoLogManager::logAction, if online redo log is full, the current log entry has to be written anyway, otherwise a checkpoint is written and subsequent logAction call in CegoTableManager::logIt might lead to duplicate entries in case of a crash recovery
cego 18.06.2016 2.30.9 Version released
cego 17.06.2016 2.30.9 Fixes for query and table cache added ( addEntry method was still not clean )
cego 17.06.2016 2.30.9 Added tableset runstate CHECKPOINT to be set during a tableset checkpoint is performed.
Since this is a critical section in terms of data consistency, no system crash should occur while writing a checkpoint.
If so, the tableset now is marked with status CHECKPOINT and cannot be used anymore ( tableset recovery from backup required )
cego 17.06.2016 2.30.9 Added tableset runstate CHECKPOINT to be set during a tableset checkpoint is performed.
Since this is a critical section in terms of data consistency, no system crash should occur while writing a checkpoint.
If so, the tableset now is marked with status CHECKPOINT and cannot be used anymore ( tableset recovery from backup required )
cego 16.06.2016 2.30.9 Patch in CegoDistManager::startTableSet, before starting redo log file recovery, the tableset state has to be set to RECOVERY
Otherwise, occupied redo logs are not archived by the log manager.
This problem might occur in case of a crash recovery with archive mode set to ON
cego 16.06.2016 2.30.9 Patch in CegoQueryCache and CegoTableCache ( for each method addEntry )
The usedSize calculation was not done correctly for replaces entries
cego 16.06.2016 2.30.8 Version released
cego 15.06.2016 2.30.8 Added table and cache used size information to show tableset admin command
This indicates the amount of memory, which is already allocated for cached data
cego 14.06.2016 2.30.8 Added synrchonization for query and table cache handling.
The lack of synchronization migth lead to core dumps, if a cache entry is freed but also be used by a query
So before cache cleanup, it has to be checked,
if the corresponding cache entry is still in use
If so, it has to be wait, until the cache is clean. For both caches ( query and table), the similar logic is used
cego 12.06.2016 2.30.8 Added improvement for query cache handling
If a stored function, which are used in the cached query, was modified, the cache entry will be invalidated
For this, the CegoSelect::getTableList method was changed to CegoSelect::getObjectList and also the used functions are evaluated and added to this list.
cego 12.06.2016 2.30.8 Cache cleanup in CegoQuery class is performed now AFTER the modifying action.Otherwise, it may appear, that a cache entry is made after cache cleanup but also before the modifying action.
This may lead to wrong results retrieved from obsolete query cache
cego 11.06.2016 2.30.7 Introduced cego web specials to discuss specific database issues
cego 11.06.2016 2.30.7 Version released
cego 11.06.2016 2.30.7 Fixed memory leak in CegoSelect::nextTuple. Since the querycache is allocated by the CegoQueryCache instance, the pCacheList variable has to be freed after calling the addEntry method. Actually, the logic is not very smart, since the cache element is build up two times ....
cego 04.06.2016 2.30.6 Version released
cego 03.06.2016 2.30.6 The following query may cause a core dump
create table t1(a string(100));
insert into t1 values ( 'Hugo Habicht');
insert into t1 values ( 'Kim Kaiser');
select substr(a, 1, getpos(a, ' ')) from t1;
For return value length evaluation, the method CegoFieldValue::asInteger is called on a null value which causes the dump. A fix has been added, so the method returns a value of 0 in case of null values.
cego 16.05.2016 2.30.5 Version released
cego 15.05.2016 2.30.5 Code optimizations tested. The performance improvements on subselects are achieved as expected. Strike !
cego 15.05.2016 2.30.5 Code optimization for join buffer handling. Now a double pointer list is used to just keep references on CegoField lists. This should avoid expensive memory copies in case of creating parent join buffers for sub selects. This modification had impact on many parts in the code and first must be tested intensive
cego 14.05.2016 2.30.4 Version released
cego 12.05.2016 2.30.4 More work on code format cleanup
cego 07.05.2016 2.30.4 Updated config.guess to timestamp='2016-04-02'
cego 07.05.2016 2.30.4 More work on code format cleanup. Still 80 modules ahead ...
cego 05.05.2016 2.30.4 Fix in CegoAdmMon, CGNOMONITOR definition was fixed defined ( should be defined via configure )
cego 05.05.2016 2.30.4 More work on code format cleanup
cego 01.05.2016 2.30.4 Code format cleanup fixes, elimination of obsolete commented code, no logical changes
cego 09.04.2016 2.30.3 Version released
cego 07.04.2016 2.30.3 Fix in CegoBufferPool::bufferFix. Small leak, since last page for each pool segment never could be used ( hashId calculation )
cego 06.04.2016 2.30.3 Cosmetic syntax change for set permission and remove permission admin command
cego 06.04.2016 2.30.3 Small information fix for query cache information in show tableset admin command
cego 03.04.2016 2.30.2 Version released
cego 03.04.2016 2.30.2 Changed default protocol from xml to serial. Date format handling completely implemented
cego 03.04.2016 2.30.2 Fixes for date format handling. The format string whihc is specified for the server is also used now for client formatting. This results in some network protocol fixes for serial but also xml network protocol.
cego 02.04.2016 2.30.1 Version released
cego 31.03.2016 2.30.0 Version released
cego 30.03.2016 2.30.0 - Fix in CegoDistCursor for quey plan calculation ( join objects )
- Fix in CegoAdminThreadPool and CegoLogThreadPool for thread load calculation - Major change for tablecache and querycache management, for both dedicated tableset entries are managed. Cache enabling, cache size and num entries can be controlled now on tableset level.
cego 20.03.2016 2.29.4 Version released
cego 13.03.2016 2.29.4 Fix in CegoAction and CegoDbHandler to handle query abort requests correctly ( initiated by cgadm via abort db thread command )
cego 06.03.2016 2.29.3 Version released
cego 06.03.2016 2.29.3 Fixes for table and query cache handling
cego 04.03.2016 2.29.3 Fix in CegoDistManager::dropDistObject, table and query cache have been checked for cleanup, if a table is dropped
cego 01.03.2016 2.29.3 Fix in CegoQuery.cc, added table and query cache cleanup for alter and rename queries
cego 25.02.2016 2.29.3 Fix in CegoClient to parse multi line statements correctly. Further multi line merge token ( \ ) has been added to merge long string or clob values.
Now the following statements are possible
insert into t1 values ( 1, 'this is\
a multi line \
message \
with four lines');
cego 15.02.2016 2.29.2 Added include of string.h in CegoAction.c ( compile error occured on Suse Linux )
cego 05.02.2016 2.29.1 Version released
cego 05.02.2016 2.29.1 Modification in cgclt for raw mode, Now just plain data is listed, with the command line option --raw=X, a separator token can be setup as a column separator
cego 02.02.2016 2.29.1 Very long strings are handled now in CegoAction and CegoClient to also parse large clob values
cego 02.02.2016 2.29.0 Version released
cego 01.02.2016 2.29.0 More work on lob handling. A fix was done for update operations on lob values in CegoTableManager::updateTuple method. Before updating the tuple, all lob references must be cloned, otherwise in case of untouched lobs, references are invalid. This approach is brute force, better would be, to stay on the untouched lob references. But in terms of transaction and recovery handling, this is not trivial
cego 31.01.2016 2.29.0 Required network protocol expansions done for clob handling ( putclob, getclob, delclob )
cego 30.01.2016 2.29.0 Basic clob handling works
cego 30.01.2016 2.29.0 Started with clob datatype implementation
cego 30.01.2016 2.29.0 Fix in CegoSelect constructor, _cacheEnabled var was not initialized in the decoding constructor, which might lead to core dumps in case of recovery of complex with enabled querycache Fix in CegoAdminThread constructor, disableAuth method for TableManger called, otherwise tableset recovery might fail with auth error
cego 03.01.2016 2.28.3 Version released ( also with fix in configure.ac as same as for lfcxml and dragon )
cego 03.01.2016 2.28.3 Since it is not enough jut checking the tuple header info for update deletes, a record locking has to be added to avoid duplicates. In this sense, record locking for setTupleInfo method call ( used in CegoTableManager and CegoTransactionManager ) was added. For this, the lockRecord and unlockRecord method have been reactivated in CegoLockManager class.
This lock avoids, that in case of concurrent tuple updates duplicate tuples are produced by an update.
cego 02.01.2016 2.28.2 Version released
cego 02.01.2016 2.28.2 Fix in CegoTableManager::deleteDataTable ( renamed to deleteDataTableEntry )
Since we allow now parallel updates, the method must check if the target tuple has already been touched by another transaction. Otherwise, invalid double entries could occur in case of concurrent updates on the same tuple.
If a concurrent transaction is detected, the method returns false. This return value is used by the updateTuple method to decide, if the subsequent insert operation must be performed.
cego 02.01.2016 2.28.2 Several changes from type int to type unsigned long long
cego 31.12.2015 2.28.1 Version released
cego 31.12.2015 2.28.1 Fix in configure.ac to set up library path for lfcbase and lfcxml in a right way
cego 30.12.2015 2.28.0 Version released
cego 28.12.2015 2.28.0 Change index objectype to btree, avl index objects must be created now explicit using the new introduced avltree object type
cego 28.12.2015 2.28.0 Please note, that this version make datafiles from older versions incompatible.
An upgrade requires a xml tableset export of existing data and a restore after succesful upgrade
This version also contains many code cleanup fixes and some fixes for btree handling.
cego 26.12.2015 2.28.0 Fix in CegoTableManager::createBTree, in case of an exception during build up, the allocated have to be cleanup up. For this the a rollback method was introduced in class CegoBTreeManager.
Fix in CegoTableCursor, invalid btree objects have not been ignored
cego 26.12.2015 2.28.0 Many adapations to make cego full 64bit ready also in combination with MSYS2 / MINGW64. This resulted in change of many variables from type long to type unsigned long long (type long is just 32 bit for Windows ) With an appropriate MSYS2 / MINGW64 installation, cego compiles proper and runs stable now.
Many thanks to the MSYS/MINGW developers for their amazing work !
cego 18.12.2015 2.27.4 Full time table scan performance for 2 mio tuples is now
CGCLT > select count(*) from t1;
|      AGGR |
|  count(*) |
|   2000000 |
1 tuples
ok ( 0.293 s )
cego 18.12.2015 2.27.4 Version released
cego 18.12.2015 2.27.4 Added performance fix for CegoQueryHelper::decodeFVL, since the tuple context information is already from the method called, the tid, tastep and ts parameters have been remove from this method. This saves some decoding time
cego 16.12.2015 2.27.3 Version released
cego 16.12.2015 2.27.3 Fix in CegoSelect::CegoSelect, the pCacheList variable was not initialized to 0 for all constructors. In case of system table selects, the variable might be undefined which might lead to segmetation faults.
cego 16.12.2015 2.27.3 Changed synchronization level for btree creation. So the base table can also be accessed while btree is created ( During creation btree status is invalid )
This also allows to perform on online btree reorganization, since a new btree can be build up in parallel
cego 15.12.2015 2.27.3 Fix in CegoSystemObject::createSystemSpace, id values for bustat table must start with id 1 instead of id 0, otherwise, bustat information retrievel fails or may result in a core dump ( select * from $bustat )
cego 12.12.2015 2.27.2 Version released
cego 12.12.2015 2.27.2 Fix for system tables in CegoAttrDesc::evalReferences, for system tables the evalTableReferences method has to be called, otherwise attributes for system tables can not be accessed
cego 11.12.2015 2.27.2 Add dbCheck for Fetch & Cache ( check047 ), all base checks are run now with querycache ON and OFF
cego 11.12.2015 2.27.2 Fix in CegoSelect::nextTuple, the cache schema was not set up properly, if nextTuple was just called with empty jfl. This happens in case of procedure cursors, ( CegoProcFetch ), where the field value list is for all method calls empty
cego 11.12.2015 2.27.2 Fix for CegoExpr::getAggregationList(), missing break operations in switch block. This bug might lead to error messages regarding aggregation queries like
CGCLT > select sum(a) + 0 from t1;
Error : Invalid expression sum(t1.a) + 0 for aggregation
cego 10.12.2015 2.27.2 Modification for admin command set tsroot. Also the base path for all defined datafiles is set now to new tsroot
cego 09.12.2015 2.27.1 Version released
cego 09.12.2015 2.27.1 Fix in CegoBTreeCursor and CegoBTreeManager. Several conditons have been changed from
fileId && pageId 
fileId || pageId
. This bug may results in invalid btree objects in case of btree spawn over several datafiles ( the pageId might be 0 in the next file )
cego 06.12.2015 2.27.1 Fix in CegoGroupSpace::insertTuple, the grouping tuple has to be search using getTableAlias instead of getTableName, otherwise the following query returns wrong results
select count(*), a from t1 group by a; --works
select count(*), a from t1 tx group by a; -- broken
A check for this has been added in dbcheck suite
cego 05.12.2015 BTree Cache test done with 100 million tuples.
bigts > select count(*) from t1;
|      AGGR |
|  count(*) |
| 100119314 |
1 tuples
ok ( 47.803 s )
bigts > create btree b1 on t1(a);
Btree b1 created
ok ( 9584.849 s )
In fact, this is a creation time of about 2.6 hours. It has been observed, hat without the btree cache, the creation takes about 20 hours.
cego 04.12.2015 2.27.0 Version released
cego 04.12.2015 2.27.0 Btree Cache are working now stable, performance tests with large tree still outstanding ...
cego 02.12.2015 2.27.0 Introduced BTree Cache to improve build up speed of large btree objects.This feature is now basically implemented and must be still tested
cego 01.12.2015 2.26.16 Version released
cego 01.12.2015 2.26.16 Ugly bug fixed in CegoObjectManager::releaseDataPtrUnlocked. The logical operator && must be replaced by ||, otherwise fix leak arises
cego 29.11.2015 2.26.16 Fix in CegoSelect::nextTuple for query cache to avoid, that queries including system tables are cached.
cego 29.11.2015 2.26.16 Error message fixes in CegoXPorter
cego 29.11.2015 2.26.15 Version released
cego 29.11.2015 2.26.15 Simulation status
testdb.nepustil.net> ./showSpace 
Total Size      = 1524 GB
Total Allocated = 78 GB
cego 29.11.2015 2.26.15 Introduced bufferpool distribution rate information in show pool output. This indicates, if the buffer pool is used in a balanced way. The behaviour can be changed with the BUFFERPOOLHASHKEY parameter.
The list pool command now receives the pool information in several chunk messages. This allows to print also very large buffer pool configurations
cego 28.11.2015 2.26.15 Introduced BUFFERPOOLHASHKEY as a database tuning parameter. Based on this parameter, the corresponding bufferpool slot for a fileId, pageId tuple is calculated. Depending on the configured datafile size, it might be useful to adjust this parameter
cego 28.11.2015 2.26.15 Simulation runs stable now
testdb.nepustil.net> ./showSpace 
Total Size      = 1524 GB
Total Allocated = 57 GB
cego 27.11.2015 2.26.15 Cego Terra Test started. Approach is to load about 1TB of random data through the whole stack ( via cgblow ). Actually we are running with 19 parallel processes loading concurrently 4 different tables. Estimated date to achieve TB-Size is in about one month
testdb.nepustil.net> ./showSpace 
Total Size      = 1524 GB
Total Allocated = 35 GB 
cego 27.11.2015 2.26.15
cego 27.11.2015 2.26.15 Changed command line argument --nolockstat to --lockstat. So the default value is lockstat disabled, since this has impact to the database performance
cego 26.11.2015 2.26.15 Modification of hash function in CegoBufferPool to achieve a better distribution for large buffer pool configurations
cego 18.11.2015 2.26.14 Version released
cego 18.11.2015 2.26.14 Added encoding implementation for CegoCaseCond to allow case conditions also for update operations like
update erp_disk set location = case when substr(wwn,20,1) = '1' then 'MD' else 'GV' end;
cego 17.11.2015 2.26.14 Cosmetic changes in CegoDefs, increased FILEMNG_MAXDATAFILE parameter to 5000
cego 15.11.2015 2.26.13 Version released
cego 15.11.2015 2.26.13 Fix in CegoAttrDesc::evalReferences. In case of join objects, the refCount was not calculated correcty, since just the join object was analysed but not the sub content object. For this, a new method was introduced ( evalTableReferences ) and in case of join object, evalReferences is called recursive for all sub content objects
cego 10.11.2015 2.26.12 Version released
cego 09.11.2015 2.26.12 cgsimload with 3 mio ops and 2 processes passed
cego 09.11.2015 2.26.12 Fix in CegoBTreeCursor::getFirst, if pAttrCond == 0 and btree is empty, the method call tries to claim a zero datapointer
Reorganization of CegoDistManager and CegoTabelManager, all methods, which are calling useObject/unuseObject are located in CegoTableManager class now.
cego 08.11.2015 2.26.11 Version released
cego 08.11.2015 2.26.11 Added more sophisticated corruption check for btrees ( CegoBTreeManager::verfiyBTree ), which also checks for any structure corructions in all btree nodes
cego 08.11.2015 2.26.11 Added btree check to CegoDistManager::verifyTable
cego 08.11.2015 2.26.10 Version released
cego 08.11.2015 2.26.10 Added make check feature for basic and gate tests
cego 07.11.2015 2.26.9 Version released
cego 07.11.2015 2.26.9 Version passed concurrent load test with 10 million concurrent operations ( random insert, update and delete on one table with 2 processes )
cego 07.11.2015 2.26.9 Fix in CegoFileHandler::allocatePage, In case of page exceed with appendMode = true, a second try is done with appendMode = false
cego 07.11.2015 2.26.9 Small fix in CegoObjectManager::reorgObject, ref page id information for append mode is set to new last page id
cego 07.11.2015 2.26.9 Small fix in CegoSelect::filterRefs, allow expressions with constant values ( getAttrRefList= 0 ) in aggregation
cego 07.11.2015 2.26.9 Locking improvements for delete and update operations. All delete operations are done now via transactions ( introduced CegoTableManager::deleteDataTableAtomic ). This allows to use a shared lock as the table lock for using the table ( CegoDistManager::deleteLocalDataTable and CegoDistManager::updateLocalDataTable )
As a result, a table can be accessed in parallel during a ( long running ) delete operation on the table( e.g. delete from table). E.g. select count(*) from table will not block anymore, rather indicates the remaining number of tuples in the table.
This modification is still under investigation and must verfied ( also in combination with btree/index objects on the table )
cego 06.11.2015 2.26.9 Fix in CegoBTreeManager::deleteBTree, the relevance value was not calculated correctly
Fix in CegoQuery, cache invalidation is done before query operations. Otherwise, if the query is aborted, an exception is thrown and the cache is not cleaned
cego 05.11.2015 2.26.8 Version released
cego 05.11.2015 2.26.8 Small modifications on cgblow load simulation client
cego 05.11.2015 2.26.8 Changed locking for delete an update operations to exclusive due to concurrency prpblems with btree operations
cego 04.11.2015 2.26.8 Added page locking to AVLIndexManager and AVLIndexCursor
cego 04.11.2015 2.26.8 Improvements for locking done.Since locking is done on page level, Insert and delete operations can be done now in parallel . For this locking had to be introduced in CegoBtreeManager::insertBTree and CegoBTreeManager::deleteBTree
cego 01.11.2015 2.26.8 Additional note : The previous patch improves performance for about 4% ( investigated on web stats for lemke-it.com )
cego 01.11.2015 2.26.8 Further performance path for grouping queries in CegoGroupSpace. Since the current grouping key is stored now in the class variable _groupSchema, some expensive list copy operations could be avoided
cego 31.10.2015 2.26.7 Version released
cego 31.10.2015 2.26.7 Performance fix has been done for record locking. In many cases, row locking could be avoided, since an appropriate locking is ensured on data page or object level. This brings another significant performance improvement close to commercial database products
cego 30.10.2015 2.26.6 Version released
cego 30.10.2015 2.26.2 The previous described performance fix results in an improved performance of about 80-90% for count aggregation queries
cego 30.10.2015 2.26.6 Added further performance fix for aggregation queries in CegoExpr and CegoQueryHelper. The aggregation list for CegoExpr now is stored in a class variable and is just evaluated the first time, it is retrieved. In the method CegoQueryHelper::aggregateTuple, the increment calculation of the count aggregation has been changed from memcpy calls to direkt pointer arithmetic
cego 24.10.2015 2.26.6 Added online help for query cache and table cache in cgadm
cego 23.10.2015 2.26.5 Version released
cego 23.10.2015 2.26.5 Performance improvement for nested queries ( exists select, in select) The tablecursor for the select statement is not released and reallocated for subsequent queries ( in CegoQueryHelper, the select handle is reset with argument false ) This has required a different locking strategy for the cursor object in CegoDistCursor. The cursor object has explicit to get in use, if the nextTuple method is called the first time.
cego 17.10.2015 2.26.4 Version released
cego 17.10.2015 2.26.4 Fix for CegoBtreeManager::insertBTree, duplicate handling did not work correctly, if CegoBTreeNode::addValue returns false ( node is full ) with a duplicate detection, we also have throw exception. Otherwise the node is split and a duplicate is added.
cego 17.10.2015 2.26.3 Version released
cego 17.10.2015 2.26.3 Improvements for query execution plan retrievel
cego 16.10.2015 2.26.3 Fix in CegoOutput for multline format ( e.g. execution plans have been cut off )
cego 15.10.2015 2.26.3 Performance patch in CegoTableCursor::setup. The getObjectListByTable method was called every time, when the attribute condition has been changed. Since this operation is pretty expensive, it was useful to cache the retrieved index/btree objet in a local class variables. This change results in significant query speedup for joins, where the table cursor has to be setup very often
cego 12.10.2015 2.26.3 Small fix in CegoAction::readChain, treating backslashes for quoteEscapeFlag=false was commented, reactivated
cego 11.10.2015 2.26.3 Small fix in CegoMain, Default value for csmode changed to value "ID"
cego 04.10.2015 2.26.2 Version released
cego 04.10.2015 2.26.2 Fix in CegoBufferPool::calcHas and CegoBufferPool::calcSegement
For large file id's the integer range for the hash key might be exceeded, which lead to wrong address calculation.
The hash key now is calculated in long based values
cego 03.10.2015 2.26.2 Introduced server mode with same behaviour as daemon mode, but no child process is forked and server can be terminated with Ctrl-C
cego 03.10.2015 2.26.2 Small formatting fix in CegoOutput
cego 02.10.2015 2.26.1 Version released
cego 02.10.2015 2.26.1 Fix in CegoDistCursor for inner and outer joins
Inner or outer joins with additional where condition might return incorrect result set since the condition was just evaluated inside the join.
To correct this, the where condition is also checked via evalCondition method. This required also a fix in the evalCondition method.
cego 30.09.2015 2.26.0 Version released
cego 28.09.2015 2.26.0 Added multi segment support to CegoBufferPool. Since the pool is divided now into several memory segments, this allows larger buffer pool configurations.
cego 26.09.2015 2.25.4 Improvements for output formatting regarding string functions ( egoFunction::getReturnTypeLen). Size of required column field size is now calculated, so the outlook looks more pretty
cego 24.09.2015 2.25.4 Added hints from David Binderman in CegoAction::backChar and CegoBufferPage::printPage ( changed pointer comparison to avoid -Wextra compile warnings ) Thanks !
cego 20.09.2015 2.25.3 Version released
cego 20.09.2015 2.25.3 Decreased default cache size values to 100k ( query + table )
cego 20.09.2015 2.25.3 Next fileId (CegoXMLSpace::nextFID ) calculation now analyses the existing fileId and uses the lowest available. The MAXFID attribute in the database xml file is no more used. This avoids, that file id exceeds in case of frequent creation and removement of tablesets.
cego 19.09.2015 2.25.3 Some format correction in CegoAdminHandler for
cego 18.09.2015 2.25.3 Increased parameter FILMNG_MAXDATAFILE to 10000 and TABMNG_MAXTABSET to 500
cego 16.09.2015 2.25.2 Version released
cego 13.09.2015 2.25.2 Optimization added in CegoDisCursor::distSetup(CegoAttrCond)
If the native table cursor could not set up either FULL or PART, the table cursor retrieved all available rows from the corresponding table
In this case, the table also can be cached to improve subsequent queries for this table. This fix is relevant for queries like select * from t1 where b like '%X%', since the like condition cannot be used by the table cursor
cego 13.09.2015 2.25.1 Version released
cego 13.09.2015 2.25.1 Fix in CegoSelect::nextTuple : in case of rowlimit > 0, the cached entry was not added to query cache
cego 12.09.2015 2.25.1 Added many columns sample to base test ( create, insert and select for table with 60 columns )
cego 10.09.2015 2.25.0 Version released
cego 30.08.2015 2.25.0 Added throw statement for stored procedures. This allows to throw exceptions on application level
cego 30.08.2015 2.24.4 Version released
cego 30.08.2015 2.24.4 Fix in CegoAction::execViewCreate. Views must be compiled successful now immediately after creation. Otherwise, the calculated schema is not stored correctly into dictionary.
cego 30.08.2015 2.24.4 Fix in CegoFactor::getId, if sysdate is used in queries, it should be resolved, otherwise query couldbe used from cache which returns invalid result
cego 28.08.2015 2.24.3 Version released
cego 28.08.2015 2.24.3 To improve cache performance, reduced STATICFIELDBUF defintion from 100 byte to 20 byte
cego 27.08.2015 2.24.2 Version released
cego 27.08.2015 2.24.2 Kurt Jaeger provided a modified scanner description to handle SQL keywords case insensitive
cego 27.08.2015 2.24.2 Modification for csmode, can be setup to ALL, STR ( just string compares are case sensitive ) or NONE now depending on the requirements
cego 26.08.2015 2.24.1 Version released
cego 26.08.2015 2.24.1 Added cleanup cache method to CegoTableCache and CegoQueryCache destructor. Improved formatting for cache list.
cego 23.08.2015 2.24.0 Version released
cego 21.08.2015 2.24.0 Changed CegoQueryCache from list struct to array struct to make it thread safe
cego 20.08.2015 2.24.0 QueryCache and TableCache are both working stable for single threaded requests. Still have to change some code in CegoQueryCache to make it threadsafe
cego 17.08.2015 2.24.0 TableCache implementation completed. Tests still ongoing
cego 09.08.2015 2.24.0 As a lower level cache option, started with TableCache implementation.
cego 07.08.2015 2.24.0 New version verified with SysMT. Fixes for query string generation done ( using _conjunctionList instead of _pPred to access also _viewConjunction ).
cego 05.08.2015 2.24.0 Added query cache info command to indicate max cache entry and max cache size
cego 04.08.2015 2.24.0 Several fixes on query cache implementation ( subselects still have not been handled correctly, query cleanup and reset handling ) Base check and gate are ok now
cego 03.08.2015 2.24.0 Another improvement for query cache. Instead of saving CegoField values in the query cache array, this has been reduced to storing CegoFieldValue values. Schema information is stored just one time for each query cache entry in the cacheSchema variable. This avoids memory consumption for the query cache.
cego 01.08.2015 2.24.0 Query Cache is basically working and actually meets expectations.
cego 01.08.2015 2.24.0 Proceed with QueryCache implementation. Basic admin functions ( show querycache, clean querycache ) working now, query content is stored to query cache
cego 28.07.2015 2.24.0 Started with query cache implementation
cego 26.07.2015 2.23.13 Documentation cleanup for Database XML description and SQL language description
cego 25.07.2015 2.23.13 Added gate D to gate check for checking modifying queries
cego 25.07.2015 2.23.12 Version released
cego 25.07.2015 2.23.12 Further patches in CegoTableManager::deleteDataTable, CegoFactor::evalReferences and CegoSelect::nextTuple for advanced query cache handling. All patches have impact on queries of the form
delete from t1 where a in ( select ....)
cego 25.07.2015 2.23.12 In CegoQueryHelper::evalPredicate fixed termination for INSUB- and NOTINB queries. There was no reset at the end of the evaluation, which might lead to open table cursors. In case of procedure queries, this might lead to locking problems.
Since the query is reset after evaluation, query caching is no more useful. This must be treated in an advanced way.
cego 21.07.2015 2.23.11 Version released
cego 20.07.2015 2.23.11 Added performance patch in CegoFieldValue. Value length up to STATICFIELDBUF size ( 100 bytes ) are handled using a static byte array. This saves expensive memory allocation calls in most cases. First very rough performances analysis has shown a performance improvement of about 5-10 percent
cego 19.07.2015 2.23.11 The local copy logix was shifted from CegoSelect::nextGroupedTuple to CegoGroupSpace::insertTuple.

Since the buffer page invalidation effect might also occur for plain ordering queries, local copies are also created now in CegoOrderSpace::insertTuple
cego 19.07.2015 2.23.10 Version released
cego 18.07.2015 2.23.10 Fix in CegoSelect::nextGroupedTuple.
For the grouping key values, a local copy of CegoFieldValue has to be created. Otherwise, grouping references might be invalate, which result in aborted grouping queries with strange error message ( No token available ) on client side.
For local copy creation, the CegoFieldValue::getLocalCopy method has been modified ( was not used until now ) This effect was observed in case of small buffer poolsize in combination with grouping queries on large tables. The probability of grouping key invalidation is higher then, because buffer pool pages are reloaded more often
cego 12.07.2015 2.23.9 Version released
cego 12.07.2015 2.23.9 The added performance fix also avoid infinite query loops for non-reference conditions, e.g. select a from t1 where 1 = 1;
cego 12.07.2015 2.23.9 Performance fix in CegoSelect::consolidateConjunctionList Inappropriate predicates are filtered and added to stack first. As a result, predicates are used for table join binding, where efficient tuple retrievel is ensured
cego 14.06.2015 2.23.8 Version released
cego 14.06.2015 2.23.8 More simplification done in CegoBTreeManager and CegoBTreeNode. Calculation of leaf node chain is now done much simpler. This ensures conistency and improves btree build up performance
cego 14.06.2015 2.23.8 Fix in CegoBTreeManager and CegoBTreeNode. The set up of the leaf chain was not done correctly. In case of CegoBTreeNode::addNode method calls, the follow up leaf information was not calculated correctly. This has tobe done in a similar way as for CegoBTreeNode::propagate. This effect might result in page leaks when an index is dropped. The current solution solves the problem but still has to be verified.
cego 13.06.2015 2.23.8 Fix for btree page count and btree page release. Some of the btree nodes have double references, which was not treated in the page count and page release algorithm
cego 12.06.2015 2.23.8 Changed default primary and secondary values for tableset definition command to the configured hostname. This simplies the define command in case of single node tableset configurations.
cego 08.06.2015 2.23.7 Version released
cego 08.06.2015 2.23.7 Fix in CegoClient for dump mode. BTrees habe not been dumped with the correct type ( primary, unique, normal )
cego 08.06.2015 2.23.7 Fix in CegoFieldValue for VARCHAR comparison. In case of exceeded string length for index values, the CegoFieldValue did not work correctly, which might lead to further problems. The comparison was changed to fix length compare. In this sense, strcmp was replaced by strncmp to with usage of the len value in the field value instance.
cego 05.06.2015 2.23.6 Version released
cego 05.06.2015 2.23.6 Added a fix in CegoTableManager::updateTuple. The core operation consists of a deleteDataTable and a insertDataTable method call. For the insertDataTable method call, the logging still was enabled. So in addition to an update operation, also an insert operation was done. In case of recovery operations, this lead to duplicate entries. Fix is pretty easy, just change isLogging parameter value for insertDataTable method from true to false.
cego 05.06.2015 2.23.5 Version released
cego 05.06.2015 2.23.5 Fix in CegoTableManager::insertDataTable, in case of constraint violation, btrees have not been cleaned up. This may result in inconsistent btree objects.
cego 04.06.2015 2.23.4 Version released
cego 03.06.2015 2.23.4 Fix in CegoSelect::buildJoinTables. After growStep match, growStep is now reset to 1. This avoids to add tables to the joinlist, which are still not treated for any appropriate join condition. As an effect of this bug, execution plan is not evaluated in an optimal manner, which might lead to long execution times
cego 01.06.2015 2.23.3 Version released
cego 31.05.2015 2.23.3 Added uptime command for cgclt to show database uptime
cego 29.05.2015 2.23.3 Added pool uptime to buffer pool information, this indicates the database uptime
cego 23.05.2015 2.23.3 Several fixes for cgmkdb utility
cego 18.05.2015 2.23.2 Version released
cego 18.05.2015 2.23.2 Added rowlimit argument to CegoDatabaseFormater::formatSelect method
cego 15.05.2015 2.23.1 Version released
cego 15.05.2015 2.23.1 Added some missing include files to be installed ( CegoException.h, CegoComparison.h, CegoXMldef.h, .. )
cego 14.05.2015 2.23.0 Version released
cego 03.05.2015 2.23.0 Completed CegoDatabaseFormater. Since the API has changed ( proagation of database formatting methods ), uplift to version 2.23 was required.
cego 01.05.2015 2.22.1 First approach of CegoDatabaseFormater completed including of all corresponding dbFormat methods in the required classes.
cego 28.04.2015 2.22.1 Started with implementation of CegoDatabaseFormater class. This class provides virtual format methods to be used for database specific export ( e.g. MySQl, Oracle, postgres )
cego 26.04.2015 2.22.1 Code cleanup in CegoQueryHelper and CegoSelect, no functional changes
cego 25.04.2015 2.22.0 Version released
cego 25.04.2015 2.22
cego 25.04.2015 2.22.0 Fix in CegoQueryHelper::decodeFVL, terminating id was not checked correctly,which might lead to db crash in case of null value fields
cego 25.04.2015 2.22.0 Uplift to lfcbase 1.6 with syslog support
cego 25.04.2015 2.21.2 Further fix in CegoFieldValue::comp for correct null value ordering
cego 12.04.2015 2.21.1 Version released
cego 12.04.2015 2.21.1 Further fixes for btree handling. Some field value offsets have been corrected based on experiences with SAGE db import
cego 11.04.2015 2.21.1 Improved error messages for CegoLockHandler to indicate low level lock error messages from pthread calls
cego 10.04.2015 2.21.1 Added sudo command to cego rc script to run db as given user
cego 06.04.2015 2.21.0 Version released
cego 06.04.2015 2.21.0 Urgent fix in CegoFieldValue::comp method. New introduced null value comparison might result in a dump. Since, the new btree null value extension breaks specification to version 2.20, update to version 2.21 was required.
cego 06.04.2015 2.20.25 Version released
cego 06.04.2015 2.20.25 Added multibyte character evaluation in CegoOutput ( requires lfcbase-1.5.11 ) to show visible chain length
cego 04.04.2015 2.20.24 Version released
cego 04.04.2015 2.20.24 Fix on update query for referenced attributes in nested select like update t1 tx set b = ( select d from t2 where t1.a = c ); This table alias was not resolved correctly
cego 03.04.2015 2.20.23 Version released
cego 03.04.2015 2.20.23 SQL optimizer improvement was added. In case of select conditions with "a is null", not index or btree was used. Just for "a = null", the index was used. This has been fixed
cego 03.04.2015 2.20.23 Added fix for btree null value handling. A dedicated null value flag was introduced for each btree value ( class CegoBTreeValue ) to handle null values
cego 27.02.2015 2.20.22 Version released
cego 27.02.2015 2.20.22 Fix in CegoQueryHelper::evalSelection for isAgg-case : int i =0; CegoField *pJF = 0; while ( i < jbufSize && pJF == 0 ) { CegoField* pJF = joinBuf[i].Find(*pF); ^^^^^^^^^^ if ( pJF ) { pF->setValue(pJF->getValue()); } i++; } The local variable lead an not optimized loop invariant, since the second condition predicate never terminates the invariant
cego 27.02.2015 2.20.22 Fix in CegoFactor::evalFieldValue : For the QUERY case, the select instance was not reset. Since the query starts from a undefined point, this might lead to "list position exceeded" exceptions
cego 16.02.2015 2.20.22 Added command line parameter validation for poolsize, numdbthread, numadminthread and numlogthread parameters
cego 15.02.2015 2.20.21 Version released
cego 15.02.2015 2.20.21 Fixes for cego rc script
cego 15.02.2015 2.20.20 Version released
cego 15.02.2015 2.20.20 Added fork+setsid system calls to daemon mode
cego 13.01.2015 2.20.19 Version released
cego 28.12.2014 2.20.19 Added small fix for blob handling ( treat exception for exceeded pages )
cego 06.12.2014 2.20.18 Version released
cego 05.12.2014 2.20.18 Added more detailed log information for tableset import and export operation
cego 16.11.2014 2.20.17 Version released
cego 15.11.2014 2.20.17 Change for primary and secondary host evaluation.
Instead if comparing gethostbyname, the defined dbhost value is used.
This makes sense, especially, if the configured dbhost does not match with the result value of gethostbyname ( e.g. is multiple hostnames are configured on a database server )
cego 24.10.2014 2.20.16 Version released
cego 19.10.2014 2.20.16 Added utility function blobsize for retrieving blob size information
cego 18.10.2014 2.20.15 Version released
cego 18.10.2014 2.20.15 Added restricted acces for JDBC information requests
The jdbc role now is required to perform any JDBC information requests.
cego 18.10.2014 2.20.15 A problem occured with inner and outer joins if the same table occurs two times or more in the query
For the CegoAttrComp class, the tablealias name additionally is stores now to evaluate, if the compare is appripriate for the corresponding table
cego 15.10.2014 2.20.15 Small optimization in CegoDisManager::updateLocalDataTable Instead of requesting a new lock for the commitment phase, the lock we already have is also used for the commit in case of forecedTransactions ( update case ).
This ensures, that the forced transaction can be done without risking to not obtain the lock for the corresponding table again.
cego 14.09.2014 2.20.14 Version released
cego 14.09.2014 2.20.14 - Fix in CegoQueryHelper::decodeFVL to treat also decodings for field value list in switched order ( btree or index fvl ) - Fix in CegoAction::execIndexCheck to conform to new object comparison in CegoDatabaseManager::ObjectRecord - Fix in CegoTableManager::deleteDataTable to check for inappropriate AttrCond before executing tablecursor setup
cego 13.09.2014 2.20.14 Fix in CegoDatabaseManager::Object::operator == Index comparisons corrected ( index can either match uindex, pindex or index, btree can either match ubtree, pbtree or btree )
cego 09.09.2014 2.20.13 Version released
cego 09.09.2014 2.20.13 Fix in CegoQueryHelper::evalAttrCond. In case of some table ordering, the attributes have been switched and the comparison was not made correctly ( LESS_THAN, MORE_THAN, LESS_EQUAL_THAN, MORE_EQUAL_THAN ). This has been treated now.
cego 31.08.2014 2.20.12 Version released
cego 27.08.2014 2.20.12 Recovery added for check constraints and foreign keys
cego 26.08.2014 2.20.12 Corrections for btree recovery, btree creation was not performed correctly during tableset recovery. Tableset autocorrect mode is enabled on default now ( by define tableset )
cego 29.06.2014 2.20.11 Version released
cego 29.06.2014 2.20.11 Some code cleanup and corrections in sample/gate mkdb scritps
cego 14.06.2014 2.20.10 Version released
cego 20.04.2014 2.20.10 Small improvements for role management
cego 13.04.2014 2.20.9 Version released
cego 13.04.2014 2.20.9 Fixes on btree correction after crash recovery
cego 13.04.2014 2.20.9 Added btree correction to CegoDistManager::correctTable method
cego 06.04.2014 2.20.9 Corrections were made for FreeBSD rc-script, cgadm online help completed
cego 05.04.2014 2.20.8 Version released
cego 04.04.2014 2.20.8 Corrections for recovery handling added regarding user functions
cego 03.04.2014 2.20.8 Corrections where made for recovery handling regarding invalidated index objects
cego 03.04.2014 2.20.8 Fix in CegoBTreeNode::shiftEntries. Replaced memcpy with memmove, since for Linux, memcpy does not treat overlapping areas.
cego 23.03.2014 2.20.8 Small fixes regarding tableset recovery ( handling of invalidated index objects )
cego 16.03.2014 2.20.7 Added patch for CegoBTreeCursor::getNext In case of open transactions, the cursor did not handle the affected entries correctly which might result in an infinite cursor loop.
cego 25.02.2014 2.20.6 Version released
cego 24.02.2014 2.20.6 Added fix in CegoFunction::evalFieldValue for SUBSTR case to avoid stringbuf exceed exception. start and len parameters are set to string boundaries in case of invalid user input
cego 23.02.2014 2.20.6 Added csmode and qescmode flags for cego xml initialization Exception message fix in CegoFactor::evalFieldValue
cego 21.02.2014 2.20.5 Version released
cego 20.02.2014 2.20.5 Fix in CegoDatabaseManager::ObjectRecord::operator == , tabSetId added to comparison. This bug may lead to object exists messages in case of multi tableset configurations, where objects with the same name exists in several tablesets.
cego 14.02.2014 2.20.4 Version released
cego 12.02.2014 2.20.4 - Added hitrate calculation to buffer pool information - Added transitive role removal for all users, if a role is dropped.
cego 11.02.2014 2.20.4 Added many improvements to curses based administration frontent ( cgadm ) Now tableset, user and role administration can be done supported by an curses based GUI. Null value check added for "alter table" command, so in case of modification of an attribute to be not null, the table entries are checked for it ( new method CegoTableManager::checkNullValue )
cego 04.02.2014 2.20.4 Cleanup in CegoObjectManager ( introduced method getHashPageId) Fixes for table altering : In case of renaming table attributes, the corresponding key entries for index, btrees, fkey and checks have not been modified.
cego 01.02.2014 2.20.3 Version released
cego 01.02.2014 2.20.3 Fixes added in CegoBufferPool::writeAndRemoveTabSet and CegoBufferPool::writeCheckPoint so just pages are written, which are occupied. Otherwise, this may lead to system crash, if pages which have been released ( marked as NOT_OCCIPIED ) and written to disk.
cego 31.01.2014 2.20.3 More fixes for btree added. In some cases, still some btree pointers were not correct :(
cego 28.01.2014 2.20.2 Version released
cego 28.01.2014 2.20.2 Fixed a problem in CegoFileHandler::allocatePage If a page is allocated with doAppend == false, the append pointer is reset. Otherwise, freed pages are never reallocated again and sustained create/drop operations may lead to page exceed.
cego 26.01.2014 2.20.1 Version released
cego 24.01.2014 2.10.1 Fix for btree objects. In some cases, bufferUnfix operations have not been done correcty, which might result in corrupted btree objects.
cego 20.01.2014 2.20.0 Version released
cego 19.01.2014 2.20.0 The CegoBTreeManager::deleteBTree method has been redesigned. In case of non-unique index objects, it might happen, that the corresponding index entry was not found ( if the value is spreaded over several leaf nodes ) This problem is fixed with the new method implementation
cego 19.01.2014 2.20.0 Added relevance attribute value for btree object. This allows to make a better decision about the relevance of a btree object which results in an optimized query execution plan.
cego 05.01.2014 2.19.14 Version released
cego 04.01.2014 2.19.14 Functional expansion for aggregation queries to support aggregation in functions e.g. select f1(sum(a)) from t1;
cego 23.11.2013 2.19.13 Version released
cego 22.11.2013 2.19.13 Further corrections for CegoDatabaseManager::useObject method numTries was not increased correctly..
cego 21.11.2013 2.19.13 Optimization for CegoTableManager::deleteDataTable The index evaluation was not correct, so the faster deletion strategy for tables without index objects was not used.
cego 16.11.2013 2.19.12 Version released
cego 15.11.2013 2.19.12 Fixed a lock handling bug in CegoDatabaseManager An illegal V() operation was called in case of eceeding lock counts.
cego 01.11.2013 2.19.11 Version released
cego 31.10.2013 2.19.11 Fix in CegoBTreeCursor. Since the cursor just reads, the bufferUnfix should be used with isDirty = false
cego 30.10.2013 2.19.11 Adjustment of some defualt parameters ( MAXFIXTRIES = 30, all semaphore numbers increased to 1021 )
cego 27.10.2013 2.19.10 Version released
cego 24.10.2013 2.19.10 Further fixes for btree added. Pages for btrees are fixed now in NOSYNC-mode ( instead of SYNC ) which avoids forced checkpoints. Normally this is just relevant for large index objects. Fix for index cleanup after abort index creation added.
cego 23.10.2013 2.19.9 Version released
cego 23.10.2013 2.19.9 Small fix in CegoFieldValue:castTo. IN case of a cast from null to any other value, the result must again null ( Constraint _pVal == 0 and _type != NULL_TYPE MUST be false )
cego 22.10.2013 2.19.8 Version released
cego 22.10.2013 2.19.8 Fix for btree cursor added
cego 22.10.2013 2.19.8 Fixes for null values handling in several inbuild functions ( date2str, date2int, etc. )
cego 20.10.2013 2.19.7 Version released
cego 20.10.2013 2.19.7 More work on btree leaks. Now the most common operations seems to work fine.
cego 19.10.2013 2.19.7 Fix for BTree cursor. Some conditions still have not been completely implemented ( MORE_THAN ) Furthermore, the getNext method did not collapse correctly for all cases.
cego 04.09.2013 2.19.6 Version released
cego 04.09.2013 2.19.6 Added join optimizer modification. The join table order now is calculated in a better way. First, tables are joined, where an index can be used to join. Index on constants are just used, if no join index could be found.
cego 02.09.2013 2.19.5 Version released
cego 31.08.2013 2.19.5 Removed backslash escape sequence detection in scanner CegoAction::nextChar Backslashes are now read as normal characters
cego 14.08.2013 2.19.4 Version released
cego 13.08.2013 2.19.4 Small fix for function date2str. If used in combination with sysdate constant, the return value was null. (e.g. date2str(sysdate, '%m');
cego 07.08.2013 2.19.3 Got the billion :) CGCLT > select count(*) from t1; +-----------+ | AGGR | | count(*) | +-----------+ |1000187769 | +-----------+ 1 tuples ok ( 796.603 s )
cego 06.08.2013 2.19.3 Version released
cego 04.08.2013 2.19.3 Added page write to CegoFileHandler::claimPage at the end of the method. This avoids a release of preallocated system and temp pages if the database is started with the cleanup option.
cego 04.08.2013 2.19.2 Big data test to load about 1 billion tuples into one table. Still running, half the way done CGCLT > select count(*) from t1; +-----------+ | AGGR | | count(*) | +-----------+ | 500187769 | +-----------+ 1 tuples ok ( 366.849 s )
cego 29.07.2013 2.19.2 Version released
cego 29.07.2013 2.19.2 Added auto correct switch to enable / disable index auto correction at tableset startup.
cego 28.07.2013 2.19.1 Log Correction : HashRule = ( (fileId+1) * (fileId+1) * (pageId+1)) % _pageNum
cego 27.07.2013 2.19.1 Improved hash calculation for bufferpool slots. HashRule = ( 2 * (fileId+1) * (pageId+1)) % _pageNum This leads to a better distribution in case of many managed tablesets
cego 27.07.2013 2.19.1 Contraint improvements on invalid index entries. Invalid index tables ( which may occur after a system crash ) are no longer ignored. Rather they are checked and any insert, update or delete operation for corresponding tables results in an error. This avoids invalid table entries ( eg. duplicate indexes ) and forces an index rebuild.
cego 25.07.2013 2.19.1 Some work on documentation
cego 25.07.2013 2.19.1 Added path attributes for sys and temp file to the database xml. Now file names can be defined now individually.
cego 24.07.2013 2.19.0 Version released
cego 24.07.2013 2.19.0 Several improvements for tableset creation and management added. Simplified naming for system and tempory database files makes this incompatible to 2.18.x
cego 23.07.2013 2.18.12 Further improvements on tableset management. A default application datafile is added now with the define command in a more comfortable way.
cego 22.07.2013 2.18.12 Fix in CegoTableManager::createTableSet There is no need to init pages for system and temp space via bufferFix The initDataFIle method already has done this job. Since the tableset is still not online, the bufferFix method can lead to problems ( if a checkpoint is forced )
cego 21.07.2013 2.18.12 Improvements regarding tableset management ( define tableset attributes )
cego 17.07.2013 2.18.11 Version released
cego 10.07.2013 2.18.11 Added type cast for fixed to string ( CegoFieldValue::castTo )
cego 08.07.2013 2.18.10 Small improvements on CegoDatabaseManager for object lock handling. A timeout error message is now returned, if the corresponding object can not be accessed during the specified timeout interval ( DBM_LOCKDELAY * DBM_MAXLOCKTRIES msec )
cego 22.06.2013 2.18.9 Version released
cego 19.06.2013 2.18.9 Fixes for count aggregation. Return type was not evaluated correctly for all queries. Changed return type for count aggregation from integer to long
cego 03.06.2013 2.18.8 Version released
cego 01.06.2013 2.18.8 Added type evaluation and propagation for cego internal and user functions. Datatype was string(20) for all functions. Afffected Files: CegoFunction and CegoProcedure
cego 25.05.2013 2.18.7 Return type cast added to CegoProcedure::getretVal to return the appropriate return type.
cego 22.05.2013 2.18.6 Version released
cego 22.05.2013 2.18.6 Added function str2date for dynamic conversion of string to date values. The date function is limited to constants.
cego 22.05.2013 2.18.5 Version released
cego 21.05.2013 2.18.5 Fix in CegoFunction::clone method The clone method did not treat user defined functions, which might lead to database crash in some cases, e.g. SELECT mid, shortdesc, status, dateTime(mtfrom), dateTime(mtto), dateTime(downfrom), dateTime(downto) FROM sysmt_mt WHERE ( dateMonth(downfrom) = 5 and dateYear(downfrom) = 2013 ) or ( dateMonth(downto) = 5 and dateYear(downto) = 2013 );
cego 20.05.2013 2.18.4 Version released
cego 20.05.2013 2.18.4 Include path adaption
cego 19.05.2013 2.18.3 Version released
cego 16.05.2013 2.18.2 Adaption for changed lfcbase base class. Added shared library version information
cego 16.05.2013 2.18.2 Adaption for changed lfcbase base class. Added shared library version information
cego 15.05.2013 2.18.1 Added several AC_CHECK_LIB macros to configure.ac
cego 13.05.2013 2.18.0 Rework of autoconf build process Version released
cego 13.05.2013 2.18.0 Adaptions made for current autoconf support. The configure.ac and Makefile.am files have been modified.
cego 10.05.2013 2.17.12 Another evalaution problem detected with multi-dimensional index. In case of oterh compares than equal for the non-primary conditions, just the primary index condition is used for tracing the index and the index stractegy is just partial. This is still not optimal and the trace algorithm needs a complete review sometimes.
cego 08.05.2013 2.17.11 Version released
cego 06.05.2013 2.17.11 Include fix in CegoBTreeCursor ( string.h was commented, which lead to compile problems with Fedora Linux and gcc 4.8 )
cego 04.05.2013 2.17.10 Version released
cego 04.05.2013 2.17.10 The following script leads to missing result tuples drop if exists table t1; create table t1 ( a int not null, b int not null, c string(30) not null); create primary index on t1(a,b,c); insert into t1 values ( 1, 1, 'ALPHA'); insert into t1 values ( 1, 2, 'ALPHA'); insert into t1 values ( 2, 1, 'BETA'); insert into t1 values ( 2, 1, 'ALPGA'); insert into t1 values ( 1, 3, 'ALPHA'); insert into t1 values ( 2, 2, 'BETA'); insert into t1 values ( 1, 4, 'BETA'); insert into t1 values ( 1, 5, 'ALPHA'); select * from t1 where a = 1 and c = 'ALPHA'; This is caused by a wrong multi-dimensional index evaluation The method CegoAttrCond::getFilterCond has been modified to set up the appropriate index attribute condition
cego 29.04.2013 2.17.9 Version released
cego 29.04.2013 2.17.9 Fix in CegoTableManager::insertDataTable Since rollback data was written immediate after insert, In case of aborted transaction ( e.g. constraint violation ), rollback entries might be invalid and could lead to database crash and corruption. The transaction rollback actions and log actions have been moved to the very end of the method.
cego 15.04.2013 2.17.9 In CegoDbThread::job the append and autocommit mode are reset to default values after a db session was finished.
cego 11.04.2013 2.17.8 Version released
cego 11.04.2013 2.17.8 A fix added in CegoDatabaseManager::useObject An already shared locked object could be accesed in write mode. cursor sysCur as select sysid as sysid from sysmt_system where srvid = :srvid; while fetch sysCur into (:sysid) = true begin delete from sysmt_system where sysid = :sysid; end; close sysCur; In some cases, the procedure code above might lead zu some ugly locking effects, since the active cursor table was modified in a non synchronized way. Wit the added fix, the code above leads to a deadlock situation ( as it must ). The procedure code rather should be replaced with var sysid int; :sysid = ( select min(sysid ) as sysid from sysmt_system where srvid = :srvid ); while :sysid != null begin delete from sysmt_system where sysid = :sysid; :sysid = ( select min(sysid ) as sysid from sysmt_system where srvid = :srvid ); end;
cego 10.04.2013 2.17.8 Small fix in CegoDistManager::updateLocalDataTable Caused by debug code, exception msg was empty. Debug code was removed.
cego 06.04.2013 2.17.7 Version released
cego 06.04.2013 2.17.7 Fix for plus-operator on string values This was not handled correctly in CegoFieldValue::add create table t1 ( a long, b string(20), c string(20)); insert into t1 values ( 1, 'XXX', 'GGG'); select b + c from t1;
cego 06.04.2013 2.17.7 Added some fixes for aggregation queries nested in views. Attribute references have not been resolved correctly in all cases. E.g. create table t1 ( a long, b string(20)); create view v1 as select sum(a) as s from t1; select s from v1; was not resolved correctly
cego 02.04.2013 2.17.7 Reduction of some non-informative exception stacks in CegoDistManager and CegoQuery
cego 02.04.2013 2.17.6 Added a small bug fix in CegoExpr::checkAttr and CegoTerm::checkAttr. For some query cases, the attribute evaluation for the table cursor was not done correctly. ( e.g. select a from t1 where 100 - a > 0 ) In the above methods, the expression type or term type was not evaluated. This has been added. Note : A workaround with bracket enclosing did work ( e.g. select a from t1 where ( 100 - a ) > 0
cego 25.03.2013 2.17.5 Version released
cego 25.03.2013 2.17.5 Small fix in CegoAction::nextChar The _pC variable is verified to be not zero. In case of JDBC or DBD requests, empty query requests which are sent to the cego daemon, have crash it.
cego 21.02.2013 2.17.4 Version released
cego 21.02.2013 2.17.4 Small fix for btrees in CegoBTreeNode::maxEntries() for calculation of NODE entries. In some cases, the wrong calculation lead to corrupted btree node entries. Current measurements for big data tables ( pagesize 8k, poolsize 500000 pages ) CGCLT > select count(*) from t1; +---------------------+ | AGGR | | count(*) | +---------------------+ | 100000000 | +---------------------+ 1 tuples ok ( 100.696 s ) CGCLT > create btree b1 on t1(a); BTree b1 created ok ( 3472.460 s )
cego 17.02.2013 2.17.3 Version released
cego 17.02.2013 2.17.3 BugFix in CegoDistManager::stopDistTableSet Instead if addObject, removeObject methods have to be called.
cego 08.02.2013 2.17.2 Version released
cego 08.02.2013 2.17.2 Fixes and further improvement on btrees. Changing the index array in CegoBTreeValue to a static array improved performance again. By using the reference constructor of CegoFieldValue in method CegoBTreeValue::comp and using new introduced method CegoFieldValue::comp increased also index creation performance. Measurements for index creation : 3M rows -> integer = 23 secconds, varchar = 22 seconds
cego 07.02.2013 2.17.2 Another performance improvement for btrees. For index creation, the root node buffer page now stays fixed in the buffer pool. This results in another 10 percent index creation speedup 1M rows -> 8 sec Index creation time seems to be limited by the current cego bufferpool and datafile management which is needful for administration reasons. So another improvements result in a paradigm change, which is actually not planned.
cego 06.02.2013 2.17.2 Another small performance improvement was made in CegoFileHandler::allocatePage. With the doAppend flag set to true, new pages are allocated at the end instead of searching a free slot from the beginning. The flag has been activated for btree creation, which speeds up index creation for another 10 percent now 1M rows -> 9 sec ---- Default number of sempahore have been increased to a prim value of 911 for all semaphore types
cego 06.02.2013 2.17.1 Version released
cego 06.02.2013 2.17.1 After measurements with optimized btrees, performance improvements have been observed of about 30 percent. Index creation time for integer values 1m rows -> 10 seconds ( before 15 seconds ) A page size of 4k seems to be the best for tuple insert and index creation All measurements on bigmac with OSX 10.8.2 and Intel Core i7 and 16GB Memory
cego 06.02.2013 2.17.1 Optimization on BTree index objects. Since node entries are orders, search for values inside one node has changed from O(n) to O(log(n))
cego 04.02.2013 2.17.1 Adapted database utility cgmkdb for multi-tableset support
cego 04.02.2013 2.17.0 This version uses the AVlTreeT lfc base class to optimize grouping and ordering Version released
cego 31.01.2013 2.16.1 There is still a performance and stability lack in case of big ordered or grouped result sets. Ordering and grouping results are stored in binary trees in memory, which are still NOT balanced. The trees will be balanced with version 2.17
cego 28.01.2013 2.16.1 Version released
cego 28.01.2013 2.16.1 Adaptions for CegoXPorter to export and import btree objects
cego 27.01.2013 2.16.0 Version released
cego 27.01.2013 2.16.0 Completed btree implementation for unique and non-unique btree objects. Primary btrees still in work ..
cego 26.01.2013 2.16.0 Further performance analysis for BTrees With a page size of 4k, performance increases significantly For an integer index on a table of about 1 million rows, creation time is about 36 sec.
cego 26.01.2013 2.16.0 Completed CegoBTreeCursor cursor for all search cases. Integration of Btree logic in CegoTableManagar::insertDataTable and deleteDataTable Still to do : implementation of CegoBTreeManager::deleteBTree
cego 24.01.2013 2.16.0 CegoBTreeCursor basically works. Still some work to treat all condition cases which are needed.
cego 23.01.2013 2.16.0 Integration of btree into CegoTableManager & friends to treat deletion, altering, contraint checking, import and export, etc
cego 23.01.2013 2.16.0 As expected, BTree space consumption is much less then AVL trees requires For a table of 500k rows, the following index sizes for an integer column have been measured BTree : 679 pages AVl : 2315 pages Creation time was nearly identical for both types ( about 30 seconds ) ( all measured on iMac 2.66 GHz Intel Core 2 Duo, 2 GB DDR3 RAM )
cego 23.01.2013 2.16.0 More work on btree implementation. Added page count and drop logic, which is specific for the btree page structure.
cego 22.01.2013 2.16.0 Further syntax expansion for btree index operations ( list btree, delete btree .. ) The first performances tests indicated, the btree creation time is faster than AVL index tables 200000 tuple AVL : 10 sec BTree 7 sec I assume, than creation time for btree objects increases linear, which makes it useful for large tables ( rowcount > 10^7 )
cego 21.01.2013 2.15.9 BTree insert operation basically works.
cego 21.01.2013 2.15.9 More work was done on BTree-Index Type. All required classes are added and integrated. Implementation of insert algorithm started.
cego 19.01.2013 2.15.9 Code preparation for introduction of btree+ index support. Renaming CegoIndex.. to CegoAVLIndex... New class CegoBTreeIndexManager and CegoBTreeIndexCursor.
cego 15.01.2013 2.15.8 Bug fix in CegoQueryHelper::evalAttrCond The return value for the evaluation of isLike predicates was not correct in all cases. For example the following query could lead to wrong results select * from t1 where a = 1 and lower(b) like '%bet%'; The second condition was not evaluated correctly and was ignored. Bug was trivial fixed by returning PARTITIAL value, if the checkAttr method did not return a valid atttribute
cego 15.01.2013 2.15.8 Small improvement in CegoDataPointer. Ids are stored in an array now, which should reduce memory copy operations for encoding and decoding.
cego 12.01.2013 2.15.7 Version released
cego 11.01.2013 2.15.7 Fix in CegoTransactionManager. Method commitUpdate was cleaned and reworked including a fix for a bufferFix leak. The leak occured for updates, where the virgin index has to be treated.
cego 09.01.2013 2.15.6 Version released
cego 09.01.2013 2.15.6 Relocation, copy and switch tests all have been succesful. There are still heavy leaks on distributed queries. This also includes support for the serial protocol.
cego 08.01.2013 2.15.6 Introduced admin command "reset tableset". This command tries to bring back a tableset to a defined single node state on the primary host, if any exception occurs.
cego 08.01.2013 2.15.6 First distributed recovery tests with modified RecoveryManager have been successful. A full roundtrip could be performed stable - relocate secondary to B ( start distributed mode ) - copy tableset to secondary B - switch tableset to B - copy tableset to A - switch tableset to A - and again .... The procedure still seems to be pretty fragile, any exceptions lead to undefined system states ...
cego 07.01.2013 2.15.6 The lsn logic for the recovery procedure still was pretty buggy. So the recovery logic was completely reviewed in terms of local recovery ( single node ) and remote recovery ( distributed mode with log file shipping ) Still under time consuming testing ...
cego 06.01.2013 2.15.5 Version released
cego 06.01.2013 2.15.5 Adaptions for new CommandExecuter constructor ( lfc version 1.3.6 )
cego 03.01.2013 2.15.5 Small fix in CegoDbHandler::getMoreTableData In case of query abort, error message was not setup correctly.
cego 02.01.2013 2.15.5 Changed admin command "remove user" to "drop user"
cego 31.12.2012 2.15.5 Fix in CegoMain::runDaemon If an sql init file is set up, the authorization check must be disabled, otherwise the query fails, if any objects are accessed. This is done by calling the tablemanager disableAuth method.
cego 31.12.2012 2.15.5 Small format fix for show tableset admin command
cego 31.12.2012 2.15.4 Version released
cego 31.12.2012 2.15.4 Small fix in CegoAdminThread::getDetailedTSInfo for total page calculation. In case of offline tableset state, datafile size is read from the xml configuration file
cego 30.12.2012 2.15.4 Adaptions for backup with external sync command
cego 30.12.2012 2.15.3 Version released
cego 30.12.2012 2.15.3 Small adaptions for log files handling. Added leading zeros to archive log files ( e.g. TS1-000000012121.dbf )
cego 29.12.2012 2.15.3 Fixes for point-in-time recovery
cego 27.12.2012 2.15.2 Version released
cego 25.12.2012 2.15.2 More work on recovery and log management. Expanded admin commands to set and get external log manager information
cego 24.12.2012 2.15.2 Small fix for tableset recovery, object registration added after tableset recovery
cego 23.12.2012 2.15.2 Small fix for tableset import and export error handling If the tableset is not online, an appropriate error message is written
cego 18.12.2012 2.15.1 Version released
cego 18.12.2012 2.15.1 Fix in CegoClient for error handling in command mode Removed a cout in CegoTableCursor
cego 18.12.2012 2.15.0 Version released
cego 17.12.2012 2.15.0 Added backup stat system table. This table logs all executed begin and end backup command. For both admin commands a message option as been added to write a corresponding context.
cego 20.11.2012 2.14.1 Version released
cego 20.11.2012 2.14.1 Some corrections and extentions for cgadm online help
cego 15.11.2012 2.14.1 Small fix added for datafile creation. Caused by the changes for distributed admin queries, double entries have been created in the database configuration file.
cego 15.09.2012 2.14.0 Version released. Please note, that this version includes changes for the admin protocol. This results in an incompatibility to older versions of cgadm or CegoAdm( Java GUI ). Regarding the Java Admin Frontend, version 1.4.0 is required.
cego 13.09.2012 2.14.0 Since several admin network protocol changes have been made, lift up to version 2.14 was required. These changes are also synced to CegoAdm 1.4 In general, all changes are for cleanup and stabability purposes With the current version, the complete cego-cycle ( create db on primary, relocate to secondary, copy to secondary, switch to secondary, copy to primary and switch to primary ) works stable fro normal operation
cego 13.09.2012 2.13.12 More work on distributed features with stabability fixes
cego 11.09.2012 2.13.12 Build up of development to proceed with cego distribution mode features. For this, FreeBSd jails cego01, cego01 and cego03 have been set up. Since the distribution mode not maintained for a pretty long time, several stability and cleanup fixes are required. First fixes are included for clean daemon startup, tableset creation, copy and switch. Still many more things to do ...
cego 05.09.2012 2.13.11 Version released
cego 05.09.2012 2.13.11 Fixed a bug in CegoDistCursor::evalCondition In case of is-like and is-not-like expressions, the evaluation was not correct for all cases
cego 05.09.2012 2.13.11 Added init mode for cego program. The init mode is used to create an initial database xml file. ( until now, this has to be done manually by script or text editor ) This adds some configuration comfort for the database admin ...
cego 05.09.2012 2.13.11 Small output adaptions for cgadm
cego 04.09.2012 2.13.10 Version released
cego 03.09.2012 2.13.10 Changed add permission admin command to set permission command. This implements a combined create and update function for role permissions. Changed result message handling for CegoAdminThread for appropriate information handling in CegoAdm
cego 02.09.2012 2.13.9 Version released
cego 02.09.2012 2.13.9 Fix in CegoIndexManager::insertIndexTable. In case of active transactions, tuple state OBSOLETE ( just tuple state DELETED ) was not treated and might lead to duplicate index exceptions for multiple updates
cego 26.08.2012 2.13.9 Added thread load calculation for admin and log threadPool.
cego 18.08.2012 2.13.9 Added thread load calculation for DbThreadPool. This gives an overview about the average usage of all database threads
cego 14.08.2012 2.13.8 Version released
cego 14.08.2012 2.13.8 Added some admin features for tableset definition. After a tableset is defined, parameters now can be changed using the set command ( e.g. set syssize 2000 for TS1; ) Furthermore, verbose mode was added, to give more information in case of distributed cego mode. For singel node operation, normal mode is more useful.
cego 05.08.2012 2.13.7 Version released
cego 05.08.2012 2.13.7 Fix in CegoDistCursor::getTuple for inner joins. Inner joins have not been used until now, so this is rather a basic fix
cego 03.08.2012 2.13.7 Fixed a small bug for nested aggregation queries ( CegoSelect::initAggrgation ) The aggregation value has not been initialized, which lead to wrong aggregation results for nested queries e.g. select thrid, ( select max(logts) from threadlog tl where tl.thrid = t.thrid ) from thread t;
cego 28.07.2012 2.13.6 Version released
cego 28.07.2012 2.13.6 In CegoAdminThread::medAddDataFile and srcAddDataFile, added checkpoint after adding a datafile. This avoids inconsitency, if a datafile was added and the server crashs before the next checkpoint was written.
cego 22.07.2012 2.13.6 Small fixes for cgclt profile mode ( serial parameter was not used )
cego 21.07.2012 2.13.5 Version released
cego 17.07.2012 2.13.5 Finished work for MinGW adaptions. Since the db seems to work fine, there are still some problems regarding signal catching and terminal emulation. Ctrl-C ist still not catched properly and for cgclt, cursor keys are not working in interactive mode ( seems to be a problem of the pdcurses library ) .
cego 16.07.2012 2.13.5 Some small adaptions made for smooth MinGW32 compile In class CegoDbHandler, changed enum identifier DELETE to DELETETAB Actually, no shared libraries are build
cego 14.07.2012 2.13.4 Database version released
cego 13.07.2012 2.13.4 Small fix on serial encoding. The ESIGN in CegoSerial has been changed from ! to ^ Furthermore the ESIGN is escaped to !^&
cego 13.07.2012 2.13.3 Database version released. This version contains some performance improvements regarding network packet handling. For this, the new introduced methods in the lfc-1.3.2 library are used
cego 11.07.2012 2.13.3 Improvements made for the serial network protocol. In combination with the extended NetHandler and Tokenizer base classes ( lfc-1.3.2 ), some ( expensive ) memory copy operations could be avoided. This increaess network performance for about 30%. The improvement is especially seen for large query results Before memory copy optimization ================================ Cego JDBC Driver Test Basic select test ... 510135 rows => 5.678 sec With memory copy optimization ============================= Cego JDBC Driver Test Basic select test ... 509905 rows => 4.102 sec About 1 sec is used by the JDBC driver itself, so server side performance increased from 4.6 sec to 3.1 sec ( => about 30 % )
cego 01.07.2012 2.13.2 Database version released
cego 30.06.2012 2.13.2 Small fix for error message handling in CegoDbHandler for XML protocol. The error message got lost with the serial implementation
cego 29.06.2012 2.13.2 Fix in CegoSelect for the rowlimit option. For ordered queries, the evaluation was not correct. The limit evaluation has been moved from method nextResultTuple to nextTuple
cego 22.06.2012 2.13.2 It is strongly recommended to use the improved lfc-1.3.1 base library. Performance improvements up to 300% (!) have been observed
cego 21.06.2012 2.13.2 Small adaption to CegoAdmAction to abbreviate long hostnames
cego 17.06.2012 2.13.2 Added protocol attribute to client profile entry
cego 20.05.2012 2.13.1 Small fix for desc procedure command. Parameter type and size have not been indicated correctly.
cego 12.05.2012 2.13.0 The new version fixes a bug in CegoIndexCursor.
The buffer pool fix for the data pointer (dataLock ) was not hold which might lead to invalid memory pointers from the calling method.
cego 02.05.2012 2.13.0 Work on new version. This version supports a native client protocol which is expected to be much faster. ( XML generation and parsing seems to be pretty much overhead ) For comparison reasons, both protocols are supported and can be selected at daemon runtime.
cego 25.04.2012 2.12.8 Bug fix for system table selection ( select * from $table ... $index .. )
Column id was not set in CegoSystemObject::getObject, which lead to null values with optimized decoding algorithm
Forced compilation of stored procedures, if "desc procedure" is called on uncompiled procedure
cego 09.04.2012 2.12.7 Fixes for outer join queries in combination with multidimensional index values
( in some situations, this lead to wrong results .. see check035.sql in the sample db directory)
Fix in CegoTableManager::keyReferenceExists, the table cursor setup return value was not handled correctly.
cego 07.04.2012 2.12.6 Fix for insert-by-select queries in stored procedures. The procedure block pointer was not set up, so procedure variables have no been resolved. Relevant for queries like: insert into t1 select :a, "XXX" from t2 Fix in CegoProcedure for parameter check ( procedures with no arguments and return value ) Added further checks to the chkdb sample db
cego 05.04.2012 2.12.5 Another fix for FLA-Cache has been added ( cache clearing completion for case conditions, functions and aggregations )
cego 04.04.2012 2.12.5 Fix in CegoLogRecord to avoid compiler warning with clang++ Fix in CegoCLient for correct fixed type in dump file
cego 04.04.2012 2.12.4 Fix in CegoLogRecord to avoid compiler warning with clang++ Fix in CegoCLient for correct fixed type in dump file
cego 31.03.2012 2.12.3 Small fvl decoding bug fix in CegoQueryHelper::decodeFVL occured with performance enhancements and null value fields
cego 30.03.2012 2.12.2 Made some performance fixes - elemination of debug messages - improved version of CegoQueryHelper::decodeFVL ( linear approach) - FLA-Cache in CegoFactor
cego 29.02.2012 2.12.2 Added distinct option for aggregation ( select count( distinct a) from t1 )
cego 22.02.2012 2.12.2 Fix in CegoAttrDesc::evalReferences, the tablename was not compared with the alias value. The code has been changed from: if ( _tableName == (Chain)pCO->getTabName() ) to if ( _tableName == (Chain)pCO->getTabName() || _tableName == (Chain)pCO->getTabAlias() )
cego 19.02.2012 2.12.2 Fix in CegoAdminThread::medVerifyTableset and CegoAdminThread::correctTableSet. The tableset user was not set up correctly, which lead to an authorization problem
cego 16.01.2012 2.12.1 Fixed some problems occured with AIX 6.x In CegoBufferPool::initPool, invalid memory was written LIBOBJECTS fix in Makefile ( removed CegoJoinObject, not needed, but referenced class CegoPredDesc )
cego 15.01.2012 2.12.0 Changed to lfc-1.2.0 with IP v6 support.In the database XML file, now a static host binding supported to specify the server host, which should be used ( HOSTNAME attribute )
cego 24.12.2011 2.11.8 Small cosmetic grammar change for export and import admin command ( export xml instead of xml export ) and checkpoint setting ( set checkpoint instead of checkpoint ) Improved online help for cgadm Exception handling fixed in case of unknown tablesets ( cgclt in interactive mode )
cego 10.12.2011 2.11.8 Small fix in CegoFunction::DATE2STR. In case of null values, the result was undefined. Now null string is returned.
cego 11.11.2011 2.11.7 Added the chkload load simulation script in the sample/chkdb directory. The cgblow program was improved and configuration is more flexible now. Online help improvements for cgadm. Parser fix for cgadm user trace enabling command.
cego 08.11.2011 2.11.6 Some code fixes to avoid warnings for clang compiler ( CegoXMLSpace.cc and CegoPredDesc.cc ) In CegoAction constructor, the variable _procContext now is initialized to false. This was detected with FreeBSD 9.0 tests, the boolean vars seem to be initialized as true. Another bug has been fixed in CegoDbThread::checkReloadRequest(). Before removing the ts entry from the list, the assignment int ts = *pTS; must be executed.
cego 06.11.2011 2.11.5 Repeated crash recovery test ( chkrecover in sample/chkdb ) is running stable now for insert / delete TA operations with three clients. Actually, penetration tests on FreeBSD are going and and if successful, the version is going to be released...
cego 05.11.2011 2.11.5 Improved crash recovery ist tested now in several situations. Online admin help has been improved
cego 22.10.2011 2.11.5 Finishes crash recovery for the renamed rb segements. A simple trick is used : For each committed ( or rollbacked ) entry in the rbseg table, the tuple tid is set to the current tid. So in case of a crash recovery and a repeated commit or rollback, these entries are ignored
cego 18.10.2011 2.11.5 Fix for nextcount and setcount function in CegoFunction::asChain. The function arguments have not been generated correctly
cego 15.10.2011 2.11.4 Cosmetic changes in CegoClient regarding error messages
Improved transaction exception handling : Before commit or rollback, the corresponding segment is renamed to rbcommit or rbrollback. This enables an appropriate recovery of ongoing commit and rollback operations after a crash. ( crash recovery for the renamned segemnts is still todo )
cego 12.10.2011 2.11.4 Performance improvement regarding join optimization. The method CegoQueryHelper::evalAttrCond was madified in a way, that a more precise decision could be done for using any appropriate index. ( instead of boolean, now the method returns a enumeration INAPP, PARTIAL or COMPLETE ) This improves select performance in some special cases dramatically.
cego 09.10.2011 2.11.3 Dump mode fix for export strings containing newlines.Newloines have not been escaped. Newline handling fix for quote escape mode ( newline and other escaep characters have been not translated during input scan )
cego 08.10.2011 2.11.3 A fix has been added for new transaction handling. If no modifying operations have taken place, the commit/rollaback operations resulted with an error. The method CegoSelect::consolidateConjunctionList has been improved to handle or-conditions ( conditions should be not consolidated, if they contain or-conditions, otherwise index could not be used ) ( e.g. select * from t1 where a = 1 and ( b = "a" or b = "b") )
cego 22.09.2011 2.11.2 Added record timeout tuning parameter Adjusted default semaphore definitons in cgmkdb ( 2141 for page and rec sema, 1013 for file and pool sema ). This better avoids deadlocks in case of concurrent transactions.
cego 19.09.2011 2.11.2 Performance improvements in CegoTransactionManager. For each transaction, now a dedicated transaction file is created instead of storing the undo information into a single file. In case of concurrent transactions, this should improve performance. Furthermore, no more reorganisation of the RBSEG area is needed.
cego 12.09.2011 2.11.1 Fixes for new role concept( e.g export and import of tablesets did not work ) Changed counter ids back to identifiers Added some datatype cast for decimal values
cego 10.09.2011 2.11.0 New role and permssion concept added
cego 21.08.2011 2.10.14 Thanks to Keve Nagy, the cgmkdb script was improved and stabilized very much.
cego 07.08.2011 2.10.13 Change in CegoDatabaseManager::useObject to avoid deadlock for queries like: update t2 set a = ( select a from t2 where b = "ZZZ" ) where a = 1000; useObject now checks for the calling thread and handles subsequent useObject-calls of the same thread.
cego 05.08.2011 2.10.13 Added structore option for client dump mode
cego 02.08.2011 2.10.13 Improvements for cgmkdb script Added query optimization for like conditions the following execution plan: CGCLT > plan select shortdesc from sysmt_mtview where shortdesc like "Oracle Patch"; +----------------------------------------------------------------------+ | PLAN | | DESCRIPTION | +----------------------------------------------------------------------+ | Execution plan | | --------------- | | Joining view sysmt_mtview (sysmt_mtview) | | View plan for sysmt_mtview | | --------------------------- | | Joining table sysmt_project (prj) with Full table scan | | Joining table sysmt_system (sys) with index trace on pid = prj.pid | | Joining table sysmt_mt (mt) with index trace on sysid = sys.sysid | +----------------------------------------------------------------------+ ok ( 0.012 s ) seems to be not optimal. It is rather useful to use the like condition for the table cursor inside the view.
cego 24.07.2011 2.10.12 Fix for aggregation queries. Complex queries like select sum(a) + sum(b) + sum(c), sum(a) - sum(b), avg(a), avg(b) from t2; did not work. Changed client profile format more compact ( pid:server:port:ts:prompt:user:pwd )
cego 20.07.2011 2.10.11 Added parameter length check for procedure in parameter Added basefunc script for advanced date functions ( second, minute, hour, day, month, year ) Fix in CegoFunction::evalFieldValue ( date2str(sysdate) returned wrong date )
cego 20.07.2011 2.10.11 Added parameter length check for procedure in parameter Added basefunc script for advanced date functions ( second, minute, hour, day, month, year ) Fix in CegoFunction::evalFieldValue ( date2str(sysdate) returned wrong date )
cego 19.07.2011 2.10.10 Fix im Makefile for script install Added configuration parameters for NUMLOCKTRIES, PAGELOCKTIMEOUT, FILELOCKTIMEOUT and POOLLOCKTIMEOUT The parameters can be setup in the database xml configuration file Fixes for setcount function ( CegoFunction::toElement, fromElement, toChain )
cego 18.07.2011 2.10.9 Expression order for between expressions was not correct ( for views ) Added README for FreeBSD rc setup Tools are now also installed in the cego bin dir ( cgmkdb, cgbackup and cgrecover )
cego 09.07.2011 2.10.8 Fix for unionselect ( empty jfl in CegoSelect::nextTuple before calling union select )
cego 08.07.2011 2.10.8 Added cast from float to fixed, added cast from string to fixed
cego 07.07.2011 2.10.7 On Solaris x86, the CegoDbThread::loadObjects might lead to a core dump. This is, because a dedicated CegoAction instance was allocated for the method. Since this method is called by the forcereload option, many threads simultaniously are allocating this large instance, which might fail. Since there is no need to use a dedicated instance, the member variable _pPA is used for this. ( this effect was just observed on Solaris x86 platform ) The CegoDbThread::loadObject method was removed completely. This method is critical and due to dynamic object reloading, there is no more need of this method.
cego 03.07.2011 2.10.5 Small fixes in CegoDbThread. The thread synchronisation of the load queue for dynamic object reloading has been fixed ( mutex are used now from the db thread pool ) The forceload option for tableset startup is also supported now for admin startup command For batch processing, the forced object load at startup has been removed ( for performance reasons ) and is done dynamically now.
cego 03.07.2011 2.10.6 Small fixes in CegoDbThread. The thread synchronisation of the load queue for dynamic object reloading has been fixed ( mutex are used now from the db thread pool ) The forceload option for tableset startup is also supported now for admin startup command For batch processing, the forced object load at startup has been removed ( for performance reasons ) and is done dynamically now.
cego 02.07.2011 2.10.5 Introduced the admin command "correct tableset". After a system crash, some index tables could be invalidated because they are written inconsistently ( for performance reasons ). The correct tableset command rebuild all invalidated index entries. Actually, this command has to be executed by the db admin manually. Introduced the tableset initfile. This is a batchfile containing standard db commands which is executed at tableset startup time. This file can contain initialization or check routines ( e.g. counter trigger to adjust counters after db crash ) Added setcount function to set up counter values in a stored procedure.
cego 30.06.2011 2.10.5 Stabilization fixes for thread startup. In case of large thread configurations, the thread lock initialization error "Resource busy" was not catched at thread startup. It seems this might occur, if many thread are calling the pthread_rwlock_init system call at the same time. So the thread lock init method was moved to the constructor, which is called sequentially for all db threads.
cego 28.06.2011 2.10.4 More fixes for new join optimization in CegoDistCursor, CegoAttrCond and CegoSelect Multidimensional indexes still have not been used for all required cases. View condition in CegoDistCursor was not reset, which might lead to wrong view results.
cego 27.06.2011 2.10.4 Small change in CegoAttrCond::getFilterCond. The attribute condition is provided in appropriate order for the given schema. This is necessary for multidimensional indexes to ensure a valid comparison. Improved thread synchronisation for db thread pool ( syncToReady method introduced ). Some logic has been moved to syncToReady since large db thread pool configurations ( > 200 ) lead to a crash at system startup phase
cego 26.06.2011 2.10.3 Fix in CegoTableCursor::setup. The attribute condition has to filtered before creating an index cursor. Index cursor requires attr cond with complete match of all attribute fields, otherwise wrong results are returned Introduction of attr cond strength to use the best available index: select a from t1 where a = 1 and b < 100 uses index on a, because strength for "equal is stronger than "less than"
cego 25.06.2011 2.10.2 Small fix in CegoAttrCond::setup to match attribute comparisons of type VAL Further fixes for attribute resolution, change of attribute condition handling in CegoDistCursor Cosmetic changes for stored procedures and views. For the text, more line breaks are used now.
cego 24.06.2011 2.10.1 All tests for 2.10.1 finished. The iworxs schema was a good test case to proof all the new features.
cego 23.06.2011 2.10.1 Fix in CegoDbThread::checkLoadRequest. In some cases the server has crashed, since there was a lack of thread synchroninsation for the view and procedure loadList which comes with 2.10.0. Fix in CegoDatabaseManager::useObject, the EXCLUSIVE_WRITE case was not handled for SHARED requests. In CegoSelect, the attribute management was completely redesigned. Instead of instance variables of the CegoAttrDesc class, references are now managed. This gives a better control for valid and invalid attribute references. Join optimization for join objects has been expanded. Now indexes are better used inside nestes join objects. This feature is still under investigation. The execution plan has been expanded to get information for join objects including the used indexes.
cego 21.06.2011 2.10.0 Elimination of many compiler warnings for the clang C++ compiler. This also brought up several bug fixes in the code. Thanks a lot to the clang team for these hints :)
cego 19.06.2011 2.10.0 New feature added for multi dimensional index access and improved view condition setting in the CegoSelect class. These features are still under investigation.
cego 16.06.2011 2.9.6 Fix in CegoGroupSpace::dropGroupSpace, _groupSchema was not set to empty, which micht lead to list position exceeded errors Further fixes in CegoDistManager, dynamic view reload strategy has been redesigned and stabalized ( mt problems had been detected ) This version has been extensively tested with different concurrent create, drop and select operations on views and seems to be pretty stable.
cego 13.06.2011 2.9.5 Some fixes in CegoLockHandler ( introduction of count locks ), lock statistics disabling via command line switch ( nolockstat ) In CegoSelect, invalid tables are checked now ( this problem arises with view defintions including undefined sub objects )
cego 13.06.2011 2.9.4 Some fixes in CegoLockHandler ( introduction of count locks ), lock statistics disabling via command line switch ( nolockstat ) In CegoSelect, invalid tables are checked now ( this problem arises with view defintions including undefined sub objects )
cego 12.06.2011 2.9.3 Small fixes in CegoFieldValue::toChain regarding escape charater handling ( quotes and backslashes ) Changed view and procedure loading strategy. Views now are loadad on demand and may contain sub objects which are still unknown. On demand loading improves database startup time significantly.
cego 04.06.2011 2.9.2 Fix in CegoTableManager::updateDataTable. Result of QueryHelper::getAttributeCondList was not checked on acl size = 1 Small grammar extension to support table alias for update and delete operations
cego 03.06.2011 2.9.2 Fix for CegoSelect::nextJoinTuple. The jfl array is just set empty before calling evalSelection. Otherwise in case of no row result, the field is set to empty which may casue problems for some nested inner and outer joins.
cego 02.06.2011 2.9.2 Another fix for inner joins. Evaluation was still not correct for all nested sub joins. Fixed alias problem in views: create view v1 as select a from .. sets up alias a from attribute a Fix in CegoPredDesc::toChain(const Chain& indent), string have not been generated correctly for ISLIKE and ISNOTLIKE
cego 31.05.2011 2.9.1 Fix for inner join statements. An additional where condition was no handled correctly, e.g.: select * from t1 inner join t2 on t1.a = t2.c where t2.d = "xxx"; Enoding enhancement for nested aggregation queries, e.g.: update t1 set a = ( select max(a) from t2 ); Fix in CegoXPorter::writeTableObject, the check for blob tables is just needed for plain exports Fix in CegoSelect for ordering handling. Native order list introducd to generate valid select statements. Fix in CegoTableManager::dropTable, getObjectListByTable now called with ignoreInvalid = false to reach invalid index to drop.
cego 29.05.2011 2.9.0 Fix in CegoDistManager::dropLocalObject. For table drops, the corresponding indexes, keys and checks have not been removed from the object cache. This might lead to problems, if tables are removed and recreated.
cego 28.05.2011 2.9.0 Added client dump mode to dump a tableset in SQL syntax. This extension results in some constant changes so tableset xml exports of earlier versions can not be used any more ( ! ). Also there are some incompatibilities to the JDBC-Driver. The CegoJDBC version 1.3.2 supports cego 2.9.0.
cego 27.05.2011 2.8.5 Another fix for CegoSelect added. The reset function now takes a doRelease parameter to specify, if the open cursors should be released or not. This is required to use the reset method for any nested queries ( e.g. CegoFactor::evalFieldValue ), otherwise locking problem can happen. Fixed a loop bug in CegoQueryHelper::evalSelection ( missing i++ ). Queries like select t1.* from t1 have lost in a endless loop
cego 25.05.2011 2.8.5 Fix in CegoFactor::evalFieldValue. There was missing a prepare call before evaluating the query. This might lead to evaluation problems in stored procedures. Fixed another memory leak ( CegoSelect::cleanUp() call _parentAttrRefList.Empty() )
cego 24.05.2011 2.8.4 Fix of some memory leaks which occur for some nested queries in views In class CegoFactor::evalFieldValue(), for pSelect handle, the cleanUp method was called. Is is rather useful to call reset in this situation to achieve faster query execution. Furthermore, some fixes have been done for the CegoSelect::reset method, to also reset aggDone flag and orderspace.
cego 26.04.2011 2.8.4 Output format modifications for pool info and tableset info in admin monitor
cego 19.04.2011 2.8.4 Added return value in CegoCheckpoint::CeckpointEntry::operator =
cego 18.04.2011 2.8.3 Fix in CegoFunction::date2int and CegoFieldValue::castTo and others added. The current datetime evaluation returned zero ( e.g. select date2int(sysdate) returned 0 ) which is not appropriate for comparisons ( e.g. select a from t where a < sysdate ) since the sysdate evaluation returned 0. Now the sysdate evaluation returned the current number of seconds according to the Unix timestamp. This is now useful for datetime comparisons with sysdate.
cego 03.04.2011 2.8.2 Added checkpoint management for periodic tableset checkpoints, if checkpoint interval has been reached. Tableset checkpoints can be managed via cgadm. Improvements made for real time monitor. Data is now locally cached and polling requests are limited to avoid heavy admin requests in case of windows refreshing effects.
cego 02.04.2011 2.8.1 Added fix in CegoIndexManager::deleteIndexTable. In case IV, the nie IndexEntry was modified but the buffer was not released with a dirty mark. if (pageNE.isFixed()) _pTM->releaseDataPtrUnlocked(pageNE, true); // was false A problem occurs very rare, especially in case of very small pool configurations and if buffer writes are forced After crash recovery, touched indexes are automatically set to invalid because they might be inconsitent. These indexes must be recreated.
cego 01.04.2011 2.8.1 Added fix for average aggreagtion function regarding null values
cego 28.03.2011 2.8.0 Added more monitor options and improved information
cego 26.03.2011 2.7.20 Small fix in CegoDbThread. If a tableset is stopped, for each db thread the transaction manager is triggered to release its fixed rbseg pages. If this is not done, buffer fix errors might occur if the tableset is started up again. void CegoDbThread::unloadObjects(int tabSetId) { _pTabMng->getTransactionManager()->release(tabSetId); // added _pTabMng->removeAllComp(tabSetId); }
cego 26.03.2011 2.7.20 Small fix in CegoDbThread. If a tableset is stopped, for each db thread the transaction manager is triggered to release its fixed rbseg pages. If this is not done, buffer fix errors might occur if the tableset is started up again. void CegoDbThread::unloadObjects(int tabSetId) { _pTabMng->getTransactionManager()->release(tabSetId); // added _pTabMng->removeAllComp(tabSetId); }
cego 25.03.2011 2.7.19 Added parameter count check for procedures. The class CegoProcVar has been expanded to store information for variable type and length instead of getting this information from the contained FieldValue member var. This seems to be more clean and avoid bad effects, if null value information should be stored in the param values. Before this expansion, it was possible to crash the database by calling procedure with wrong parameter count. Now this can not happen anymore also because parameter cound is checked now.
cego 22.03.2011 2.7.19 Fix in CegoAction::insertBySelectStore. With the insert query expansion coming with 2.7.16, the insert by statement did not work any more. This patch fixes the problem.
cego 22.03.2011 2.7.18 Fix in CegoAction::insertBySelectStore. With the insert query expansion coming with 2.7.16, the insert by statement did not work any more. This patch fixes the problem.
cego 14.03.2011 2.7.17 Fix in CegoIndexCursor. The type assignment was not correctly in case of the following query select * from t1 where a = null; The value for the index was set to null too. Instead, now we take the type value retrieved from the index schema Fix in CegoXPorter::readTableObject for binary import mode ( table has not been created ).
cego 12.03.2011 2.7.16 Syntax expansion for insert statments to support two dimensional array inserts: insert into t1 values (1,"xx"), (2,"yy"), (3,"zz");
cego 11.03.2011 2.7.15 Fix in CegoFieldValue constructor. If string sysdate is detected for type Datetime, the currect date is evaluated. An exception occured in case of Datetime default values in combination with table import.
cego 10.03.2011 2.7.14 With the changed CegoOrderSpace code, the multidimensional ordering failed. This release adds a patch for correct multidimensional ordering like select a,b from t1 order by a,b
cego 06.03.2011 2.7.13 Added pidfile command line option for cego daemon mode. This allows to specify the pidfile on command line level. If not set, the pidfile entry in the xml file is used.
cego 26.02.2011 2.7.12 Small fix in CegoFieldValue for null value comparison ( operator > ) Fix in CegoXPorter for default value export
cego 19.02.2011 2.7.11 Fix in CegoXPorter. Default values have not been exported with xmlExportTableSet method. Performance improvement for ordering.
cego 07.01.2011 2.7.10 Fix in CegoSelect. The pointer variable pOrderSpace was not initialized to zero in the second constructor. This might lead to system crashes. I observed this in combination with stored procedures and cursors containing ordering statements.
cego 05.01.2011 2.7.9 Fix in CegoMain. For import and export mode, the case sensitive flag was not defined yet. Since the value comparison during index creations depends on the flag, this might lead to wrong index trees. Also the quote escapce flag is set up now to the appropriate value.
cego 29.12.2010 2.7.8 Column name check added in CegoTableManager::createDataTable ( create table t1 ( a int, a string(10)) still was accepted )
cego 27.12.2010 2.7.7 Cleanup of legacy lock handler orderlock methods. Renaming of tag MAXORDERSIZE to SORTAREASIZE.
cego 22.12.2010 2.7.6 Cleanup of legacy ORDERSPACE object entries.
cego 12.12.2010 2.7.5 Reimplementation has also done for the grouping space
cego 10.12.2010 2.7.5 Cause by performance issues, the sort area ( OrderSpace ) was reimplemented. Since there is no need to store sorted data in the table space, the order space now is allocated in private heap memory This speeds up order performance significantely. Still there is missing an allocation limit to avoid uncontrolled sort area memory allocation.
cego 29.11.2010 2.7.4 Removed LOGNAME token from CegoAdm.def ( no longer needed ) Fix in CegoDbThread::loadObjects. The reload method was not thread safe. Further, the tableset value for the CegoAction object _pPA was set to the target set for reloading. This might have confused running and active sessions. The CegoAction object is allocated locally now, so there is now conflict and no need for synchronisation
cego 21.11.2010 2.7.3 Added more methods to the CegoAdmNet class. Small adaptions for clean Linux ( Ubuntu 10.10 ) compile ( include string.h and stdlib.h )
cego 20.11.2010 2.7.2 Another fix for the query cache was added, which should increase cache performance. A change in CegoProcFetch was made to allow to use proc fetch vars outside the current block ( constructor change from CegoProcVar to Chain, the variable is later on resolved using the pBlock reference )
cego 18.11.2010 2.7.2 Improved exception handling in CegoTableManager. In some cases, new allocated TableCursors have not been cleaned up in case of any thrown exceptions. This might lead to hanging locks. The exception handling has been cleaned for thsi module.
cego 17.11.2010 2.7.1 A bug was fixed in CegoTableManager to avoid the following problem CGCLT > delete from sysmt_mtlog where sysid in ( select sysid from sysmt_system where pid = 10031 ); Error : list position exceeded Query failed ok ( 0.003 s ) This happened, if the result of the subselect was empty. The subselect was not prepared and analyzed correctly. This also may occured for update queries in a similar manner The problem was fixed by adding the following code to the methods CegoTableManager::deleteDataTable and CegoTableManager::updateDataTable CegoSelect *pSelect = pPred->getSelectQuery(); if ( pSelect ) { pSelect->setParentJoinBuf(&jfl, 1); } pPred->analyzeSelect(); A bug was fixed in CegoDistManager::startTableSet. In case of checkpoint writing, the max lsn was not set up correctly. This was fixed with the line maxlsn = writeCheckPoint(tableSet, true, false);
cego 14.11.2010 2.7.0 With the new admin C++ API ( CegoAdmNet ), minor version was increased to 2.7
cego 12.11.2010 2.6.21 Improvements for grouping, replaced CegoFactor with CegoExpr in CegoAggregation class. This is a small optimization, since before the the expr was encapsulated in a factor. Furthermore, the grouping logic has been redesigned to support any selection order: select a,b, count(*) ... group by a,b ... or select count(*), a, b ... group by a,b ... Also expression evaluation in the selection has been added ( select 10*count(*), a ... group by a )
cego 07.11.2010 2.6.21 Introduction of CegoAdmNet. This is a admin client interface used later for the Perl CegoCtl module. Via the CegoAdmNet interface, a set of admin actions can be performed.
cego 06.11.2010 2.6.20 Added query abortion for delete and update operations. In case of delete queries, there is no rollack performed so some of the tuples are deleted. Since updated are executed in any case inside a transaction ( forced or by user ), rollback is performed to the original table state.
cego 29.10.2010 2.6.19 Added profiling for CegoClient. The enables a user to manage several cego db connections in a client rc file.
cego 28.10.2010 2.6.19 Added check for tableset import. The name of the tableset in export file must match the name of the target tableset. This is required, since the tableset name occurs in view objects. To change tableset name, the XML export file should be edited to change the tableset name. This can be done using standard Unix string replacing methods ( sed )
cego 18.10.2010 2.6.18 Small bugfixes on CegoTerm::evalReferences and CegoNet::wasreset. No values were returned. This has been detected with Forte C Compiler on Solaris
cego 16.10.2010 2.6.17 Join optimization fix on views. By the introduction of the CegoSelect::distIndexExists method, the index usage for view objects has been lost. This has been fixed by expanding the if-Statement to the distObjectExists check for views if ( _pGTM->distObjectExists(_joinList[i]->getTabName(), _joinList[i]->getTabSetId(), CegoObject::VIEW) || _pGTM->distIndexExists(_joinList[i]->getTabSetId(), _joinList[i]->getTabName(), pAC->getAttrName() ) ) Another fix has been done for query caching. In the CegoSelect::cleanUP method, the cache has been cleaned up and the isCached flag is reset to false. Otherwise, views will use the cached data for subsequent calls instead of refreshing the data on every new invokation.
cego 11.10.2010 2.6.16 Query optimization added for nested queries. This has impact on queries, which contain nested subqueries with no external table references. E.g. select a from t1 where b in ( select t2.d from t2 where t2.c = 2 ); In this case, the result of the subquery is cached on first evaluation time and is reused for the next value retrievels. In case of complex subqueries ( with no external references), this might improve query performance significantly.
cego 08.10.2010 2.6.15 Bug fix in CegoOutput::rowOut. The preFill variable was not set up correctly, which might lead to undefined value. As a result, this may lead to hanging output in case of some queries ( e.g. show view xxx ); The effect was observed on Solaris x86.
cego 17.09.2010 2.6.14 Changed library install location to plain lib directory ( instead of lib/cego ) Some adaptions for class CegoNet ( C++ programming interface )
cego 05.09.2010 2.6.12 Support added for lfc classes
cego 27.08.2010 2.6.11 Extensions of the C++ API ( CegoNet::getAffected(), CegoNet::getProcResult() ) for retrieving query and proc results
cego 22.08.2010 2.6.10 More efficient implementation of CegoDistManager::distIndexExists ( usage of native CegoTableManager methods to avoid tableset lookups avoided )
cego 21.08.2010 2.6.10 Exception handling improved in CegoXPorter Separated C-Wrapper and C++ Testprograms to samples directory
cego 19.08.2010 2.6.9 Small fixes in CegoAdmin to catch some missing command line options Added CegoTableManager::setAppend method to active append mode inside TableManager. Append mode was not activated for statement stored in stored procedures. Added CegoDistManager::distIndexExists as required method for index check in CegoSelect The method checks for an available index for the corresponding attribute and is used by CegoSelect to decide, if an attribute can be used as a TableCursor condition. Before this check was implemented, in some cases, an available index was not used. This occured, because a table cursor was created already for a different attribute for whích no index exists ( first acl match ). Increased bufferpool lock timeout, to avoid timeout exceptions for large pool configurations ( got this exception with a 3.2 GB configuration ) In CegoDefs.h /* BufferPool lock timeout in msec this was increased becasue for large bufferpool configurations, timeouts may occur during checkpoint writes */ #define BP_LOCKTIMEOUT 300000
cego 17.08.2010 2.6.8 Continue with plain dump mode. Now three export/import modes are supported: xml - readable in ascci, slow performance, appropriate for all reorganisation and propagation issues binary - binary mode, fast performance, appropriate for all reorganisation and restricted propagation issues plain - plain mode, very fast performance, appropriate for page reorganisation and restricted propagation issues, no blobs possible
cego 16.08.2010 2.6.8 Changed binary import and export to plain dump export. Restriction are blob values, which can not be exported with this method. ( rows are exported and imported as plain byte stream with no structure analysis ) This method increases import and export performance about 10 times. On my iMac with 2.66 GHz Intel Core 2 Duo, import performance is about 100k rows per second
cego 14.08.2010 2.6.8 Introduction of CegoNet class to provide a more powerful C++ API
cego 13.08.2010 2.6.8 Message cleanup in CegoAdminThread for several error handling messages. Fixes on distributed queries ( drop object, create index )
cego 12.08.2010 2.6.8 Added utility script mkcgdb Added multicolumn output format in CegoOutput for better message formatting: CGADM > start tableset TS1; +-----------+---------------------+-------------------------------+ | ADM | ADM | ADM | | ROLE | HOSTNAME | MSG | +-----------+---------------------+-------------------------------+ | mediator | dude.local | Tableset TS1 must be in | | | status offline to be started | +-----------+---------------------+-------------------------------+ ERROR : Admin action failed
cego 09.08.2010 2.6.7 Append mode could not be disabled for update queries. This is fixed now.
cego 03.08.2010 2.6.6 In CegoAction::setObject123 added object name len check to avoid object names longer than MAX_OBJNAME_LEN
cego 26.07.2010 2.6.6 Added encoding for CegoFunction. This was needed for check constraints containing a function, e.g. alter table xxx add check c1 on length(b) < 10
cego 26.07.2010 2.6.5 Added encoding for CegoFunction. This was needed for check constraints containing a function, e.g. alter table xxx add check c1 on length(b) < 10
cego 24.07.2010 2.6.5 Added admin command set logmng "path" to set up log manager program interactively.
cego 23.07.2010 2.6.5 Added list check command to list all constraint checks. The drop check operation was still not implemented. Now completed. Added attribute check for create check operation. If no tuples are in the table, this avoid defintion of checks with unknown attributes.
cego 12.07.2010 2.6.4 Fix in CegoSelect::filterPredRef. For the BETWEEN-Predicate the expressions have not been filtered, which leads to unknow attribute error, if the attribute just occured in the predicate ( and not selection list )
cego 07.07.2010 2.6.4 Added admin command list object for tableset to list all objects in a tableset. Added duplicate attribute check for create table command
cego 06.07.2010 2.6.4 Small fix for admin command info tableset. GID was not indicated, TID double time.
cego 04.07.2010 2.6.3 Some more small fixes regarding tableset propagation for distributed mode. Distributed mode works, but still seems to need some exception handling.
cego 03.07.2010 2.6.3 Fixes in CegoBeatConnection, CegoMain, CegoMediatorThread for password handling. ( encrypted password was reencrypted )
cego 02.07.2010 2.6.3 Changed orderspace objects to fix pages in NOSYNC mode. This avoids forced check points in case of large sorts and small buffercache. Changed semaphore array sizes from 31 to 37 since this seems a much better value for spreading in the arrays.
cego 01.07.2010 2.6.3 Added tableset array to start up n tableset in daemon mode ( --tableset=t1,t2,t3,.... ) Added method CegoDistTableManager::stopDistTableSet for cleanup of cached objects in CegoDatabaseManager
cego 30.06.2010 2.6.3 Changed output for admin command info tableset to show the sum ( total + used ) of all data spaces ( system, temp, app )
cego 28.06.2010 2.6.2 Added set counter statement to set counters to an expression value
cego 28.06.2010 2.6.1 Changed password encryption to AES
cego 24.06.2010 2.6.0 Protocol change to allow larger admin messages ( e.g. "message too long" error in case of admin command "list rec lock" and about 1000 rRecords locks are configured )
cego 22.06.2010 2.5.16 Lock optimization made by introducing system record locks ( CegoLockHandler::lockSysRecord/unlockSysRecord ). These are record locks dedicated for records on system pages. Since these contain hot spot records ( during sustained inserts in CegoObjectManager::insertData ), often there can occur deadlocks on record locks by sustained insert and concurrent select operations. Deadlocks are avoided significantely now.
cego 22.06.2010 2.5.16 Lock optimization made by introducing system record locks ( CegoLockHandler::lockSysRecord/unlockSysRecord ). These are record locks dedicated for records on system pages. Since these contain hot spot records ( during sustained inserts in CegoObjectManager::insertData ), often there can occur deadlocks on record locks by sustained insert and concurrent select operations. Deadlocks are avoided significantely now.
cego 18.06.2010 2.5.16 Completed CegoFactor::getFieldList for function case to allow queries like select sum( date2int(a) ) from t1;
cego 17.06.2010 2.5.15 Changed exception msg to use new getBaseMsg method from Exception class.
cego 16.06.2010 2.5.15 Fix in CegoFactor::evalFieldValue(). Exception for select evaluation in QUERY case was not catched. So no cleanup was made for the select handle and the locked object was not released. Added drop if exists clause to grammar for drop counter statement
cego 13.06.2010 2.5.15 Bug fixes for encoding and decoding in CegoAttrDesc::encode() and CegoAttrDesc::decode() This was detected, since the recovery for special update queries did not work
cego 13.06.2010 2.5.14 Bug fixes for encoding and decoding in CegoAttrDesc::encode() and CegoAttrDesc::decode() This was detected, since the recovery for special update queries did not work
cego 12.06.2010 2.5.13 Shared library build patch for FreeBSD
cego 03.06.2010 2.5.12 Command line option added for database lockfile. On default, lockfile is writte to /tmp/cego.lock since after host reboot, the lockfile should be removed.
cego 20.05.2010 2.5.11 Fixes in CegoMain to delete CegoDatabaseManager also for setDbUser, setAdminUser, define and create tableset mode Fixes in CegoTableManager to delete created index entries in case of a insert error. A problem may happen in case of multiple indexes on a table and for example a contraint violation occurs on a index. It was not handled, that alread insert index entries have to be rolled back ( removed )
cego 16.05.2010 2.5.11 Improvements for exception handling for procedures and exception messages
cego 15.05.2010 2.5.10 Improved deadlock resolution for concurrent ( update ) queries Some deadlocks resulted in a hanging system, since the exception handling was not clean This has been fixed and heavily tested
cego 14.05.2010 2.5.10 Introduced database lockfile to avoid startup of multiple cego processes.
cego 08.05.2010 2.5.9 Method cleanup in CegoTableManager::insertDataTable and CegoTableManager::updateTuple. VirginIndex was added as a method parameter and the member variable was removed, since this seems to be more clean. The native method for insertDataTable using table name was removed.
cego 07.05.2010 2.5.9 Expanded update mode in CegoBlowTab
cego 05.05.2010 2.5.9 Fix in CegoMain::exportTableSet exit(returnCode) replaced with return returnCode Fix in CegoFileHandler::initDataFile, better exception handling for existing datafile
cego 30.04.2010 2.5.9 Changed system table names in CegoAction::selectTable1 to tablename without prefix since this lead to the following error for queries refering the system table attributes ( e.g. select * from $table where name like "XXX" ) CegoFactor.cc(659) : Unknown attribute field
cego 02.04.2010 2.5.8 Added if exists drop option for defensive object deletion
cego 26.03.2010 2.5.7 Added further functions ( mod, div, power, bitand, bitor, bitxor ) Added assign2null statement ( required for procedure calls in procedurs ) Catched division by zero in CeegoFieldValue::div Fixes bug in CegoFactor::toChain, braces have not been generated for expression case
cego 22.03.2010 2.5.7 Fix for empty result set ordering select count(*) from dab_mt where shortdesc like "ACL564%" order by mtfrom; Error : Orderspace not created, cannot insert tuple Query failed ok ( 0.007 s )
cego 16.03.2010 2.5.7 Small fix in CegoSelect::nextGroupedTuple, a return value for having-case was missing Fix in CegoOrderSpace. The fields id values are set up now with values from the orderschema. This also includes aggregation id values which are required for group ordering.
cego 16.03.2010 2.5.6 Small fix in CegoSelect::nextGroupedTuple, a return value for having-case was missing Fix in CegoOrderSpace. The fields id values are set up now with values from the orderschema. This also includes aggregation id values which are required for group ordering.
cego 13.03.2010 2.5.5 New grouping feature finsihed and tested. Fixed a bug in CegoQuery::execute. For teh INSERT_BY_SELECT case, the select handle was not cleaned up. This may lead to blocked table objects in case of using the query in stored procedures.
cego 12.03.2010 2.5.5 Changed grouping to store intermediate results rather in tem space than in memory. For this, new classes CegoGroupSpace, CegoGroupEntry and CegoGroupCursor have been introduced. CegoGroupAggregation is now obsolete.
cego 03.03.2010 2.5.5 Memory leak fixed in CegoQueryHelper::evalPredicate. flArray was allocated but not freed Changed CegoSelect::nextJoinTuple from cursor deletion to cursor reset. This improves performance for sub select queries about ten times. Here is a snapshot example: select month, count(*) from dab_mtmonth m where year = "2010" and m.pid in ( select pid from dab_prj2bgrp where bgid in ( select bgid from dab_usr2bgrp u2g, dab_user u where u2g.uid = u.uid and u.dbuser = "lemke" ) ) group by month order by month; Before: +---------------------+---------------------+ | m | AGGR | | month | count(*) | +---------------------+---------------------+ | 01 | 29 | | 02 | 75 | | 03 | 87 | | 04 | 20 | | 05 | 13 | | 06 | 16 | | 07 | 19 | | 08 | 10 | | 09 | 15 | | 10 | 19 | | 11 | 12 | | 12 | 12 | +---------------------+---------------------+ ok ( 7.349 s ) After: +---------------------+---------------------+ | m | AGGR | | month | count(*) | +---------------------+---------------------+ | 01 | 29 | | 02 | 75 | | 03 | 87 | | 04 | 20 | | 05 | 13 | | 06 | 16 | | 07 | 19 | | 08 | 10 | | 09 | 15 | | 10 | 19 | | 11 | 12 | | 12 | 12 | +---------------------+---------------------+ ok ( 0.645 s )
cego 24.02.2010 2.5.4 Replaced Timer with NanoTimer in CegoBufferPool Changed the average read/write delay calculation to avoid floating point exception Removed unnessesary seek(0) in CegoFileHandler::releasePage
cego 24.02.2010 2.5.5 Replaced Timer with NanoTimer in CegoBufferPool Changed the average read/write delay calculation to avoid floating point exception Removed unnessesary seek(0) in CegoFileHandler::releasePage
cego 22.02.2010 2.5.4 Some optimizations in CegoOrderSpace to improve order performance For this, the insertData method with sysEntry datapointer was used to avoid table lookup. Furthermore, the insertLast flag was set.
cego 21.02.2010 2.5.3 Fixes in CegoOrderCursor to avoid locking and treat page claiming in the right way. Some fixes were also made for CegoIndexCursor. In addition to OrderRecordLocks, RBRecord locks have been introduced. This optimzes locking access for rollback operations. The lockstat admin command has been added to get an overall view for all locks.
cego 19.02.2010 2.5.3 Fixes in CegoOrderSpace::insertTupleInTree, claimDataPtr replaced with claimDataPtrUnlocked, since the access of the orderspace is exclusive and must be not locked In addition, several fixes have been added for CegoOrderSpace and CegoOrderCursor Some code cleanup detected with compiler options -Wall and -pedantic Changed lockId in CegoLockHandler from int to unsigned long to avoid overflow ( 64bit )
cego 18.02.2010 2.5.3 Null value problem fixed for datetime values. This requires xml-1.0.18 with the Element::hasAttribute method Introduced ordering record semaphores to avoid deadlocks for ordered queries
cego 16.02.2010 2.5.2 Small fix in CegoQueryHelper::getAttributeCondList, empty table string is also accepted now Fix in CegoTableCursor::getIdxSchema, the schema is stored now during setup in _idxSchema and is returned as a copy with getIdxSchema Changed JDBC info strings for index retrieval to idx / uidx ( jdbc idx ts table )
cego 14.02.2010 2.5.2 Added MAXFIXTRIES database tuning parameter
cego 13.02.2010 2.5.2 Added date2int and int2date datetime conversion functions
cego 10.02.2010 2.5.2 Fix in CegoDbHander::receiveTableData and CegoImpInStream::insertData. XML values x="" have been converted to null values, which is not really correct. This has been changed, so the type information ( STRING ) is stored together with a zero length string.
cego 05.02.2010 2.5.1 Fix in CegoDistCursor::getTuple. In case of join objects, the cursor method did not return false which may lead to an infinite loop. Fix in CegoTableObject::alterTableObject. The maxFid value was not propagated correctly.
cego 04.02.2010 2.5.1 Locking improvements in CegoObjectManager for several object access methods
cego 02.02.2010 2.5.1 Fix in CegoObjectManager::insertData and CegoObjectCursor::getObjectCursor In case of object renaming, the hashpage range was not calculated correctly which may lead to "object not found" results. Fix in CegoObjectManager::alterTableObject Index altering was not treated correctly.
cego 26.01.2010 2.5.0 Stable version finished
cego 23.01.2010 2.5.0 Strong redesign in CegoSelect and CegoDistCursor for join performance optimization and better outer join support
cego 20.01.2010 2.5.0 Further performances improvements in CegoSelect::nextJoin. The join buffer is no more copied so the evalPredicate and evalSelection use data directly. This improves performance for about 8 to 10 times.
cego 18.01.2010 2.5.0 Fix in CegoIndexCursor. Attribute condition NOT_EQUAL has not been treated correctly: create table t1 ( primary a int not null, b int); insert into t1 ... insert into t1 ... select * from t1 where a != 12;
cego 17.01.2010 2.5.0 Started with preparation for BTree index implementation.
cego 16.01.2010 2.4.9 Fix in CegoSelect. The evalViewCond flag was removed since the evaluation already is done in the CegoDistCursor
cego 16.01.2010 2.4.8 Fix in CegoSelect. The evalViewCond flag was removed since the evaluation already is done in the CegoDistCursor
cego 02.01.2010 2.4.8 Fix in CegoProcBlock. The cursorlist was not handled correctly in case of cleanup. ( drop procedure ). cursorlist was changed to a pointer list for improved cursor handling.
cego 01.01.2010 2.4.8 Fix in CegoSelect::clone. The method was still not completed since there was missing treatment for optional union select, procedure block and select preparation. The problem occured with the following query: select mid from dab_mtview where sid in ( select sid from dab_systemview where project = "XXX" ) and ( date2str(mtto, "%m") = "09" or ( date2str(mtfrom, "%m") < "09" and date2str(mtfrom, "%Y") = "2009"); The condition is transformed to conjunctive normal form which results in a cloning of the subquery. Since the cloned query was still not prepared, this results in the error: Error : Unknown attribute field Query failed from the view in the nested query Fix in CegoPredDesc::cleanUp. Conditions have not been treated yet here. This was added now.
cego 30.12.2009 2.4.7 Further join optimizations have been added for subqueries ( better evaluation of parent field list )
cego 29.12.2009 2.4.7 Memory leak fixed in CegoSelect::buildJonTables. Allocated table objects have not been released in all cases.
cego 19.12.2009 2.4.7 Fix in CegoSelect::setViewCond. The Between-mode in CegoAttrCond was still not treated here
cego 18.12.2009 2.4.7 Bug fix in CegoSelect::nextJoinTuple : The flag _indexOnViewCond was not reset to false after the setup for the table cursor was called. This may lead to invalid query results if the cursor ( the view ) is used for different setups
cego 18.12.2009 2.4.6 Bug fix in CegoSelect::nextJoinTuple : The flag _indexOnViewCond was not reset to false after the setup for the table cursor was called. This may lead to invalid query results if the cursor ( the view ) is used for different setups
cego 16.12.2009 2.4.6 Fix for distinct operator in combination with order clause, ordering in clause was ignored ( e.g. select distinct a, b from t1 order by b )
cego 15.12.2009 2.4.6 Extension for execution plan evaluation ( expr list and predicate included )
cego 14.12.2009 2.4.6 Fix for admin action list logfile
cego 13.12.2009 2.4.6 Introduction of between clause ( where a between b and c )
cego 09.12.2009 2.4.6 Extended view condition handling to support conditions on expr Sample: create view tv as select date2str(dt, "%Y") as year from t1; select * from tv where year = "2009";
cego 06.12.2009 2.4.5 Several small fixes for distribution mode ( create table, tableinfo, update and delete count ... ) Started with distributed database test suite
cego 05.12.2009 2.4.5 Small fixes for distribution mode
cego 04.12.2009 2.4.5 Distributed actions completed. Actually no more open TODOs in code
cego 03.12.2009 2.4.5 Changed inheritance from CegoRecoveryManager to member class usage This was caused, since the CegoDistManager is used by the RecoveryManager for complete recovery ( CegoDistManager is used in some predicates where select statements occur )
cego 28.11.2009 2.4.5 Table access during transaction commit phase has been restricted Read operations during transaction commit may lead to wrong results, since the tuples data is temporary inconsistent For this the method CegoTransactionManager::getTransactionAffectedTables has been introduced Complettion of distributed queries ( startTransaction, commitTransaction, rollbackTransaction, getTID )
cego 27.11.2009 2.4.5 Added numTries parameter for all locking calls in CegoLockHandler This ensures a repeated lock call try in case of any database deadlock situations
cego 26.11.2009 2.4.5 Bug fix in CegoQueryHelper::decodeUpdRec and CegoQueryHelper::encodeUpdRec The variable cwas declared as type int, should be of type char This leads at least to redo log recovery problems for SPARC versions
cego 24.11.2009 2.4.5 A bug has been fixed in CegoFunction::fromElement. Just the first expression element has been put into the expression list
cego 23.11.2009 2.4.5 Fix in CegoQueryHelper::copyBranch for CNF construction, invalid copy constructor was used for CegoPredDesc branch copy. This has been replaced by clone method. A memory problem occured for the following query select mid, date2str(mtfrom,"%d"), date2str(mtfrom,"%m"), date2str(mtto,"%d"), date2str(mtto,"%m"), sid, shortdesc, status from dab_mtview where date2str(mtfrom, "%m") = "11" and date2str(mtfrom, "%Y") = "2009" or date2str(mtto, "%m") = "11" and date2str(mtto, "%Y") = "2009" or date2str(mtfrom, "%m") < "11" and date2str(mtto, "%m") > "11" and date2str(mtfrom, "%Y") = "2009" and date2str(mtto, "%Y") = "2009";
cego 21.11.2009 2.4.4 Extension of aggregation to support full expressions. Now queries like: select b, 2 * count(*) from t1 group by b having count(*) + 1 = 2 are allowed. Fix for check constraint. check was not removed if table was dropped. Fix for long datatype error in CegoFieldValue::add,sub,mul
cego 20.11.2009 2.4.4 Added nextcount function for counter usage ( in stored procs ).
cego 06.11.2009 2.4.3 Changed admin threadinfo db operation to threadinfo db [id] This allows a better output and retrievel of last action for a specific db thread
cego 04.11.2009 2.4.3 Fixes on null value encoding / decoding
cego 03.11.2009 2.4.2 Correction of delete counter value in CegoTableManager::deleteDataTable
cego 02.11.2009 2.4.2 No-Alignment logic in encodeEVL/decodeFVL lead to problems for SPARC versions. So all pointer value assignments changed to memcpy val = *(int*)pF->getValue() changed to memcpy(&val, pF->getValue(), sizeof(int)) )
cego 01.11.2009 2.4.2 Added size attribute to system tables $table and $index
cego 30.10.2009 2.4.1 Fixed a bug for alter table rename column statement
cego 28.10.2009 2.4.1 Added drop statement for check constraints Fixed a problem in CegoQueryHelper::encodeFVL and CegoQueryHelper::decodeFVL In some cases, the decoding has not been worked correctly ( null values at the end of tuple ) The alignment has been removed and a terminating check id has been added to recognize end of tuple
cego 21.10.2009 2.4.0 Added check constraints to CegoXPorter
cego 17.10.2009 2.4.0 Fix for foreign key ( index check failed, if foreign key attribute name not equal primary key attribute name ) Fix for rename tables with foreign keys ( key was not found although the key exists )
cego 17.10.2009 2.3.12 Fix for foreign key ( index check failed, if foreign key attribute name not equal primary key attribute name ) Fix for rename tables with foreign keys ( key was not found although the key exists )
cego 14.10.2009 2.3.12 Fixed rename bug in CegoTableManager::renameTable. Table name was not set to new tablename.
cego 13.10.2009 2.3.12 Added implicit cast from int/long to bigint
cego 12.10.2009 2.3.12 Fix for alter table modify in CegoTableManager::alterDataTable
cego 03.08.2009 2.3.11 Introduction of class CegoSystemObject for management of system table like $table, $procedure, etc.
cego 30.07.2009 2.3.11 Some post corrections for the new execution plan evaluation Fixed a problem regarding query cleanup. Predicates have not been cleaned up correctly Expanded stored procedure grammar to provide initial assignment for variables ( like var i int = 42; )
cego 28.07.2009 2.3.11 Fixed a bug in the CegoDistCursor::evalCondition method. Evaluation was not done correctly. Changed execution plan to work also for empty query results.
cego 16.07.2009 2.3.10 Further optimization on join logic ( treating appropriate predicates in where-condition before joining inner and outer tables
cego 14.07.2009 2.3.9 Extension of CegoDistCursor to enable condition evaluation. Fixes made in CegoSelect for inner joins, since some queries did not return the correct result
cego 13.07.2009 2.3.9 Join optimization correction for view joins. The CegoDistCursor::distSetup returned false. This has been changed, so now the value of the _viewCondOptimized variable of CegoSelect is now returned.
cego 09.07.2009 2.3.9 Joinlists in combination with nested queries have not been treated correctly. Example: select a from t1 inner join t2 on b in ( select c from t3 ) left outer join t4 on d = 0; lead to exceeded list errors. Fixed.
cego 08.07.2009 2.3.8 Fix for view condition handling in CegoSelect ( to support view condition join optimization for aliased attributes ), e.g.: view xview as select a as Alpha from t1; select * from xview where Alpha = 1 now Alpha = 1 is mapped to a = 1 index condition, if index on a exists
cego 07.07.2009 2.3.8 Changed ordering to support attribute level ordering
cego 26.06.2009 2.3.8 Added length calculation for attributes in desc command ( improved format )
cego 25.06.2009 2.3.8 Adaptions for the C-Wrapper library. Caught exception in CegoLogThreadPool, if logfiles could not be copied to archive destination
cego 20.06.2009 2.3.7 Added shared library support ( required for PHP integration ). Implementation of round function
cego 15.06.2009 2.3.7 Fixes done for tableset xml import and export. Default value handling Blob value handling Proc and view db threadpool reloading after import
cego 14.06.2009 2.3.7 Thanks to the support of Mr. Schiliro ( iworxs GmbH ) and the intensive tests with the iworxs ECM-Suite, many improvements have taken place in the current release. Improvements in the JDBC driver ( see dedicated changelog ) ROUND, LTRIM, RTRIM function added Parser modification for better handling of arithmetic expressions User function without command line args Cosmetic syntax improvements ( e.g. join as inner join ) Fixes for unique indexes There are still some open issues, we are working on.
cego 11.06.2009 2.3.7 Improvements for cego mode ( distributed mode ) For tableset copies, now percentage for copy completion is now indicated ( list copy command )
cego 10.06.2009 2.3.7 More work on new admin protocol. Added numRequest attribute to threadinfo to indicate the number pf performed request for each thread
cego 07.06.2009 2.3.7 Bug fix for grouping queries. The pGroupList was double freed in CegoAction::cleanup(). This must be avoided by setting the variable to zero void CegoAction::selectGroupClause() { _groupClauseStack.Push(_pGroupList); _pGroupList = 0; } More work on extended admin handler ( dialog messages )
cego 04.06.2009 2.3.7 Extended admin handler dialog to support intermediate information messages. First usage of the dialog has taken place for the verifyTableset admin routine
cego 03.06.2009 2.3.7 Length attribute added for desc output
cego 26.05.2009 2.3.5 Fixed rawmode for interactive cgadm usage Adaptions for external logmanager
cego 24.05.2009 2.3.5 Format extension to CegoOutput for better output formatting
cego 21.05.2009 2.3.4 Improvements for tableset recovery. Support for external log manager added
cego 19.05.2009 2.3.4 Some cosmetic issues in CegoDefs and exception message handling
cego 18.05.2009 2.3.3 Dramtic performance improvement for delete queries ( no reset of cursor, delete tuples in one run ) Fix for CegoObjectCursor and CegoTableCursor. Caused by performance optimizations, cursors are now aborted ( not deleted ). Abort for ObjectCursor did not reset the cursor in a correct way. reset method was introduced for resetting the cursor for next retrievel Added Ctrl-C query abort for CegoClient
cego 17.05.2009 2.3.3 Fix in CegoXMLSpace. The PR locking was not correct. Concurrent read access to Element::getAttributeValue() ist not handeled. So PR was changed to PW.
cego 12.05.2009 2.3.3 Intrduction of CegoRecoveryManager for encapsulation of recovery logic. Extension of logging for ALL-module support
cego 09.05.2009 2.3.3 Fix in CegoAction::selectTable2 ( missing assignment of _pJoinTD, which leads to problems with inner and outer joins ) Fix in CegoSelect::filterFacRef ( prepare should be called for query-factors before calling getAttrRefList)
cego 08.05.2009 2.3.3 Added code formatting for procedure code
cego 02.05.2009 2.3.3 Small grammar change for JoinSpec production ( from Predicate to Condition ) This enables join spec conditions without brackets
cego 01.05.2009 2.3.2 Fixes for inner, left and outer joins Fixes for recovery ( variable handling in CegoFactor ) Added DTFORMAT parameter for date format customizing in database xml Case sensitive flag is checked in CegoAction::nextChar
cego 28.04.2009 2.3.2 Added blob import/export for binary mode Added module based logging ( in combination extended base Logger class )
cego 15.04.2009 2.3.2 Added quote escape mode ( oracle style ) for string values Encoding fix for blob values in CegoTableManager::encodeFVL/decodeFVL
cego 15.04.2009 2.3.1 Added quote escape mode ( oracle style ) for string values Encoding fix for blob values in CegoTableManager::encodeFVL/decodeFVL
cego 14.04.2009 2.3.1 Changed CegoMain from GetOpt to GetLongOpt ( new command line option conventions ) This requires base version 1.1.19
cego 13.04.2009 2.3.1 Small fixes on CegoClient in terms of logfile handling Small exception handling fix in CegoAdminThreadPool ( replaced e.print() )
cego 11.04.2009 2.3.1 Introduced affected count to indicate afected rows for insert, update, delete queries Changed grammar for not-Predicate to handle unbracked conditions more friendly ( select a from t1 where not a = 1 and not b = 4 works now without any brackets )
cego 08.04.2009 2.3.0 Introduction of case-sensitive database mode for case-sensitive/insensitive string compares Fix for transactions ( introduction of transaction step ( tastep ) tuple field) Fix for distinct aggregation mode ( select distinct count(a) from t1 )
cego 03.04.2009 2.2.8 Added locale support ( evaluation of the LANG environment variable) Fix for index creation ( changed CegoDistManager::createLocalIndexTable from SHARED to EXCLUSIVE_WRITE locking ) Fix in CegoIndexManager ( ALLOW_UNIQUE_NULL Handling was wrong, which lead to a problem by updating indexed null values ) Changed to smooth handling for commit actionin case of non-active transaction ( no more error result )
cego 02.04.2009 2.2.8 Added locale support ( evaluation of the LANG environment variable)
cego 31.03.2009 2.2.8 Continue with db verification procedure, first table and index checks ready
cego 30.03.2009 2.2.8 Start of db verification procedure for tableset consistency verification
cego 28.03.2009 2.2.8 Added counter objects for autoincrement implementation Some code cleanup in Cego.def and CegoAction
cego 27.03.2009 2.2.8 Fixed a problem occured with ordering and grouping select statdate, sum(numhit) from webstats ws group by ws.statdate order by ws.statdate asc; The statdate attribute was not found. Fixed in CegoSelect.
cego 25.03.2009 2.2.8 Added C wrapper functions cego_putblob, cego_getblob and cego_delblob for blob handling
cego 22.03.2009 2.2.7 Blob support added with corresponding interface in CegoDbHandler putBlob getBlob delBlob Added blob check routines in CegoBlowTab
cego 14.03.2009 2.2.7 Added autocommit switch mode Added transaction isolation level switch ( read committed / read uncommitted )
cego 14.03.2009 2.2.6 Added autocommit switch mode Added transaction isolation level switch ( read committed / read uncommitted )
cego 01.03.2009 2.2.6 Added union all feature Small bugfixes for precedure return values ( missing len for decimal ) and join predicates
cego 25.02.2009 2.2.5 Quality gate B extended More exceptions catched in case of lock exceeds. Catched wrong procedure and function call including wrog return statments ( return value required for functions, return value invalid for procedures)
cego 24.02.2009 2.2.5 Quality gate B extended Some fixes for distinct queries were made ( used in procedures )
cego 22.02.2009 2.2.4 Quality gate checks introduced Since the quality checks are embedded in procedures, this brought up several improvements and bug fixes ( especially regarding procedure handling )
cego 20.02.2009 2.2.4 Performance improvement for update operations Introductoion of table and index reorg feature
cego 15.02.2009 2.2.3 Improvements for transaction handling ( introduced TupleState to store transaction information for each tuple) This makes datafile structure incompatible to older releases ( export/import needed) !!! Fix for AdminThread to handle client network timeouts ( occured with new NetHandler class )
cego 14.02.2009 2.2.3 Join optimization fix for views ( view condition was not treated correctly ) Join fixes for outer joins Cosmetic improvements for sample test suite
cego 12.02.2009 2.2.2 C-Library completed Clean exception handling in case of deadlocks in CegoDistCursor and CegoIndexCursor
cego 06.02.2009 2.2.1 Added plain c-library interface
Some bugfies
cego 19.01.2009 2.2.1 Introduction of "list transaction" admin command Some performance optimizations in CegoTableManager ( to avoid redundant getObjectList calls in delete and insert methods )
cego 17.01.2009 2.2.0 Fixes on binary export Fix in CegoTableManager::deleteDataTable, foreign key check is not appropriate for update operations Syntax change for update operations ( no more braces in set clause ) Performance optimizations in CegoTransactionManager. Use of single tables rbcatlog an updtab to avoid table creation for each transaction
cego 11.01.2009 2.2.0 Started with binary export/import implementation. His should boost up the export/import performance pretty much
cego 11.01.2009 2.1.5 Started with binary export/import implementation. His should boost up the export/import performance pretty much
cego 10.01.2009 2.1.5 Tableset online check added in CegoDbThread ( for each query ) Check added for foreign keys to refer to a valid primary key
cego 08.01.2009 2.1.5 Bug fixes regarding procedure and view object reload and corresponding thread locking
cego 07.01.2009 2.1.4 Changed buticket to tsticket to store complete tableset data Objects are reloaded now by all db threads in case of creating or dropping objects (views or procs) Timeout option introduced for sync tableset admin commmand Performance improvement for tableset import ( 2 times ), introduced nologging option to speed up import
cego 02.01.2009 2.1.4 Completion of alter table statements, including rename, modify and drop attribute handling Corresponding keys and indexes are treated Completion of select statement encoding and decoding for logging and distributed queries
cego 23.12.2008 2.1.3 Added class CegoCaseCond to support case-when-clauses in queries Expanded Order clause to support complete expressions in the ordering Added support for right outer join queries
cego 19.12.2008 2.1.3 Lock fix in CegoDistManager::updateLocalDataTable, lock mode changed to EXCLUSIVE_WRITE ( the EXCLUSIVE_WRITE mode was introduced in CegoDatabaseManager to allow read operations on an exclusive write lock)
cego 24.11.2008 2.1.2 More work on distributed queries ( insert, update, delete ) to enable predicate transfer ( fromElement, toElement methods)
cego 24.11.2008 2.1.1 More work on distributed queries ( insert, update, delete ) to enable predicate transfer ( fromElement, toElement methods)
cego 22.11.2008 2.1.1 Added CegoSelect::setViewCond feature for using index access in view queries
cego 01.11.2008 2.1.1 Completion work on CegoDistManager, including xml encoding for distributed update and delete queries ( CegoPredDesc::toElement)
cego 11.10.2008 2.1.0 Some stability fixes for distributed mode ( execution of subsequent copy tableset commands hang up ) Added info copy feature to request status of running and finished or aborted copies
cego 30.09.2008 2.1.0 Logical logging basically works. For some special query types, the encoding and decoding still has to be implemented Admin command for tableset info retrievel expanded ( more detailed info )
cego 27.09.2008 2.1.0 Started with implementation of consequent logical logging Introduction of encode, decode and getEncodingLength methods for CegoPredDesc and members
cego 25.09.2008 2.0.12 Added missing cleanDataFile call in CegoTableManager::regDataFiles for user datafiles The missing call lead to problems in case of logfile crash recoveries The method CegoDataPointer::getEncodingLength is used now for all encoding length calculations regarding datapointer objects. As a result, the class CegoDataPointer can be modified to reduce the required dp data. Instead of 3 * 32bit ( fileId, pageId, offset ), the data might be reduced to 2 * 32 bit ( 16 bit fileId, 16bit pageId, 32bit offset ). This can be useful for larget index objects, where lots of dp references are used for the balanced tree structure.
cego 21.08.2008 2.0.12 Fixed CegoXPorter::exportTable, the output file was not closed and the handle not deleted Changed object usage from EXCLUSIVE to SHARED in CegoDistManager::createLocalIndexTable
cego 13.08.2008 2.0.12 Improved grouping attribute check for grouping queries in CegoSelect::groupTuple
cego 10.08.2008 2.0.12 Added rowlimit option for select statements to limit result rows Role abbreviation for list user admin command
cego 23.07.2008 2.0.11 Fixes in several inline functions. Introduction of randstr and randint function Added a db sesson pool in CegoDatabaseManager for managing connections from distributed queries More work on distributed queries ( list table ).
cego 19.07.2008 2.0.11 Fix in CegoTransactionManager::getRBOperation In case of heavy update operations, a timing problem could be occur with available rollback entries. To avoid this, a retry loop was introduced in getRBOperation
cego 18.07.2008 2.0.11 Catched missing command line arguments for cego in CegoMain Corrections of several functions
cego 04.07.2008 2.0.10 Fix on RBSEG creation coming with the object hash entry strategy ( no usage of hash start page )
cego 04.07.2008 2.0.9 Fix on RBSEG creation coming with the object hash entry strategy ( no usage of hash start page )
cego 03.07.2008 2.0.9 Use of ThreadLock:numLockTry method for concurrency calculation
cego 30.06.2008 2.0.9 Change list lock admin command to show specific locks Changed hash strategy for syspage objcte entry hash. Index and key objects are hashed now with the corresponding table name This avoids an expensive getObjectListByTable call in the insertTable method
cego 29.06.2008 2.0.8 Added object distribution strategy for system pages. Via Chain::getHashPos, the initial system page for an object is calculated, which leads to a spread of all objects over the whole hash system page field ( CegoDef.h : #define TABMNG_HASHSIZE 30 ) For multiprocessing environments, this should improve the parallel write access to different objects
cego 28.06.2008 2.0.8 Introduced rename statement for table renaming Introduced alter modify and alter rename statement for column modification ( not finished )
cego 27.06.2008 2.0.8 Value fixes in CegoImpInStream and CegoExpOutStream ( null value handling, added CegoQueryHelper::prepareFieldValue)
cego 22.06.2008 2.0.8 Changed ordering to support non-selected order attributes ( e.g. select snr from supplier order by sname )
cego 21.06.2008 2.0.8 Added role option to cego -p command line call Corrected exit codes for cgclt Fixed CegoProcBlock::toChain() exception generation
cego 20.06.2008 2.0.7 Fix in CegoTableManager::encodeFVL Null values are foced for propre encoding This bug lead to seg fault in some cases
cego 15.06.2008 2.0.7 Added insert by select statement Added lock optimization in CegoObjectManager::insertData() The system page is locked READ now and the actual object entry is locked on record level as WRTIE This leads to performance improvements in case of concurrent modifying insert operations on object located in the same system page
cego 08.06.2008 2.0.7 Completed CegoViewObject::getFormatted and CegoViewObject::putElement This avoid problems with the desc view operations
cego 07.06.2008 2.0.6 CegoIndexManager::compIndexValue corrected for null value comparison CegoQueryHelper::prepareFieldValue() fixed to check null values Completed negative value handling for several data types
cego 06.06.2008 2.0.6 CegoProcVar::toChain fixed , Missing open bracket for bigint CegoQuery::toChain() fixed ( return clause for update query added )
cego 04.06.2008 2.0.6 CegoDistCursor completed. So distributed queries now work. From the secondary or mediator host, table queries are dispatched to the primary and the corresponding data is sent back This is the next milestone for the distributed Cego approach.
cego 03.06.2008 2.0.6 Expansion of interface class CegoDecodableObject. The virtual methods getElement, putELement and getFormatted have been introduced to locate XML serialization and formatted output to the corresponding object classes ( CegoTableObject, CegoProcObject ...)
cego 01.06.2008 2.0.6 New tree-based orderspace implementation finished.
cego 31.05.2008 2.0.6 Fix for unique index creation ( was not built up with unique constraint ) Multiple sent signal catched now in CegoBeatThread More tableset information provided in CegoAdminThread::medGetTableSetInfo Better implementation of OrderSpace started ( instead of linear inserts, a binary tree is used now )
cego 22.05.2008 2.0.6 Treated log loss situation. ( log connection to secondary lost ) Sync status of the tableset is set up to LOG_LOSS In this cases, the secondary should be switched ( e.g. to primary )
cego 19.05.2008 2.0.6 Introduced CegoQueryException for improved exception handling ( coming up with procedure exceptions ) Fixed a bug occured with MinGW and gcc 3.x in CegoTableManager::removeCompProcedure and removeCompView The cleanup sequence before fix: _procList[tabSetId].Remove(*pProc); CegoProcedure *pDelProc = *pProc; delete pDelProc; Before removing the procedure from procList, the procedure pointer must be deleted. The following change has been made CegoProcedure *pDelProc = *pProc; delete pDelProc; _procList[tabSetId].Remove(*pProc);
cego 18.05.2008 2.0.5 Proceed with procedure exception handling. Basically works now
cego 16.05.2008 2.0.5 Fixed a Forte CC compatibility problem in CegoProcException ( return values missing ) Changed output format of cglog, proper objtype value for insert operations in log Added definition of buticket to define tableset administration
cego 12.05.2008 2.0.5 Fixes on backup mode, online log files have not been stored to archive location Backup mode was not handled for new db connections in CegoDbThread
cego 10.05.2008 2.0.5 Some changes made for failover handling and instance relocation Primary switch tested in case of a complete primary node crash
cego 03.05.2008 2.0.5 Added return clause to update statement to return updated values in given vars Changed update evaluation to make incrementing updates ( a = a + 1 ) work
cego 01.05.2008 2.0.5 Fixed a problem with recovery after switch ( lsn confusion ) Cleanup of cached object in CegoAdminThread::medSwitchTableSet
cego 28.04.2008 2.0.5 More work done on JDBC info requests. Column information for tables and views handled now. Data type information added.
cego 27.04.2008 2.0.4 Introduced CegoJDBCInfo class for isolation of JDBC info requests. Added support for primary key information
cego 04.03.2008 2.0.4 Fix in CegoQuery::prepareFieldValue to catch null pointer for fv.getValue()
cego 16.02.2008 2.0.4 Fix in CegoTableManager for the checkTypes method. To get the right column typ, the method is called before any tuple ( containing null value ) is retrieved. The results in a relocation of the method from checkIntegrity to updateDataTable
cego 10.02.2008 2.0.4 Fixed a bug in CegoQuery::execute occured with insert queries and incomplete attr spec list ( no null values have been added ).
cego 16.12.2007 2.0.4 Added qualifed star feature for select statement ( select tbl.* from t1 tbl ) Added several JDBC driver relevant info statements ( jdbc xxx )
cego 15.12.2007 2.0.4 Extensions for JDBC Driver implementation ( MetaDB Infos )
cego 04.12.2007 2.0.4 Added cast from Decimal to Fixed type in CegoFieldValue::castTo Fixed a field type setup bug in CegoQuery::execute in UPDATE_QUERY case
cego 01.12.2007 2.0.4 Fix in CegoQuery::toChain. For insert statement generation, the attribute list was missing for full qualified queries
cego 01.12.2007 2.0.3 Fix in CegoQuery::toChain. For insert statement generation, the attribute list was missing for full qualified queries
cego 21.11.2007 2.0.3 Fix in CegoTableManager::updateDataTable. For the virgin index evaluation Alter table statement now checks non-nullable columns Bug Fix in CegoTableManager::updateTuple for new update strategy
cego 19.11.2007 2.0.3 Ordering direction implemented ( asc, desc ) Alter table statement now checks non-nullable columns Bug Fix in CegoTableManager::updateTuple for new update strategy
cego 18.11.2007 2.0.3 Update redesign done. The virgin index is used for traversing the table during the update. The virgin index is an index, which is not affected during the update During the update, all changes tuple pointers are write to a update table After the update is completed, the update is completed for the virgin index This leads to a consistent table view after each update operation
cego 18.11.2007 2.0.2 Update redesign done. The virgin index is used for traversing the table during the update. The virgin index is an index, which is not affected during the update During the update, all changes tuple pointers are write to a update table After the update is completed, the update is completed for the virgin index This leads to a consistent table view after each update operation
cego 17.11.2007 2.0.2 Parameter consolidation of CegoIndexManager::insertNativeIndexTable() and insertIndexTable Preparation for update transaction redesign ( virgin index strategy )
cego 12.11.2007 2.0.2 Type check added for update operations ( CegoTableManager::checkTypes() ) This avoids tuple update to invalid field types
cego 11.11.2007 2.0.2 Further problem with transaction. The idxOnCommit flag was not handled in case of transaction recovery This has been fixed introducing a new log record type LOGREC_IDXCOMMITON and LOGREC_IDXCOMMITOFF
cego 10.11.2007 2.0.2 Detected a problem with recovery in combination with transactions The commit operations call the method CegoTableManager::deleteDataTable This results in a duplicate delete entry in the logfile which crashes the recovery
cego 08.11.2007 2.0.2 Fixed CegoSelect::analyzeJoin(). Just for straight subselect the analyze worked. The CegoPredDesc::analyzeSelect method was introduced for recursive subselect analyze The corresponding part in CegoSelect::analyzeJoin was changed to if ( _pPred ) { _pPred->analyzeSelect(); }
cego 07.11.2007 2.0.2 Hanging export in case of exporting empty table. This was a problem in CegoExpOutStream::getNext which was called after the getFirstTuple method already had returned a false value. Missing idempotence was fixed in CegoObjectCursor::getFirst() and getNext by checking the introduced _isEOC flag Added further locking information ( lockcount ) for lock listing in cgadm Fixed CegoFactor::evalFieldValue() for QUERY-Type factors in case of selection-select in views ( select was not prepared, added _pSelect->prepare() )
cego 04.11.2007 2.0.1 Fixed some problems occured with primary and unique index violation on update operations For this, the CegoTableManager::checkIntegrity was introduced and called before any update In stored procedures, the procedure variables have not been resolved correctly in delete and update predicates ( where condition ). This has been fixed User roles and user tracing has been introduced
cego 29.10.2007 2.0.1 Proceed on procedure exceptions
cego 27.10.2007 2.0.1 Some fixes for outer joins Fixes for CegoFactor::evalField() to indicate proper attribute headers ( select count(*) ) Introduced user roles
cego 20.10.2007 2.0.0 Fixed some attribute management problems in CegoExpr::evalField Added unloadObject and friends to CeegoDbThreadPool for procedure and view cleanup in case of stopping ts
cego 14.10.2007 2.0.0 Fixed some bad deadlock effects occured with views and procedures Fixed some memory leaks occured with procedures Fixed alias handling for view management
cego 13.10.2007 2.0.0 Fixed some foreign key problem with update operation Fixed ordering problem occure with Solaris memory alignment ( CegoOrderEntry was not alignment save)
cego 07.10.2007 2.0.0 Since first basic distributed functions work, switch to version 2.0.0 is done ( alpha )
cego 03.10.2007 1.4.3 First switch cycle basically works ( switch -> relocate secondary -> copy -> switch -> relocate secondary -> copy )
cego 29.09.2007 1.4.3 Online tableset copy basically works now ( medCopyTableSet )
cego 28.09.2007 1.4.3 Preparations for 2.0. this includes mediator services and improvements for tableset copy/recovery actions
cego 23.09.2007 1.4.2 Some corrections for MinGW and CegoAdm
cego 16.09.2007 1.4.1 Elimination of some memory leaks. This also leads to a new version of the XML library ( 1.0.11 ) Improved casts on datatypes
cego 15.09.2007 1.4.1 Correction of transaction concurrency access strategy. If a transaction has touched any tuple, the tuple is still readable from another transaction but no more writable. This is realized using the ignoreTouched flag in CegoTableCursor and CegoIndexCursor
cego 12.09.2007 1.4.1 Small corrections for CegoAdm GUI
cego 09.09.2007 1.4.0 Started with select outer join feature implementation
cego 08.09.2007 1.4.0 More fixes regarding new query features Fixes regarding stored procesdure Fixes regarding concurrency
cego 03.09.2007 1.4.0 Tests and bug fixes for 1.4.0
Views still need some work ..
cego 02.09.2007 1.4.0 Syntax extension for query predicate expressions ( instead of native attribute ) QueryPredicate: Expr INTOK LB SelectStatement RB QueryPredicate: Expr NOT INTOK LB SelectStatement RB QueryPredicate: Expr Comparison Expr QueryPredicate: Attribute IS NULLTOKEN QueryPredicate: Attribute IS NOT NULLTOKEN QueryPredicate: Expr LIKE STRINGVAL QueryPredicate: Expr NOT LIKE STRINGVAL This provides more powerful queries with full expression support
cego 25.08.2007 1.3.3 Added lock id information to lock monitor methods Completed extended table spec defs
cego 23.08.2007 1.3.3 Added extented table spec to grammar def ( table@tablset ) Fixed remove user / passwd user operation
cego 23.08.2007 1.3.3 Added extented table spec to grammar def ( table@tablset ) Fixed remove user / passwd user operation
cego 22.08.2007 1.3.3 Changed hashId calculation to avoid concurrency for page 0 access for different tablesets ( Changed hashId = ( (fileId+1) * (pageId+1) ) % _numPage ) Introduced lock monitor admin service for analysing locking effects
cego 18.08.2007 1.3.3 Completed recovery issues and other open issues for 1.3 Added -mthreads link option for MinGW. This is required for a proper exception handling in multithreaded applications
cego 17.08.2007 1.3.3 Added lower, upper and trunc function Completed import- and export table operations ( single table and structure )
cego 16.08.2007 1.3.3 Use of non-timeout locks in CegoXXXThreadPool to avoid locking timeout errors
cego 15.08.2007 1.3.2 Cego runs pretty stable on Windows. This requires new base library version 1.1.0
cego 13.08.2007 1.3.2 Further bug and stability fixes for mediator services and online backup mode Elimination of os dependent code and compile-ready-state with MinGW ( Windows )
cego 08.08.2007 1.3.1 Proceed with user documentation. Several small fixes for mediator services
cego 07.08.2007 1.3.1 Small bugfixes for new mediator services. Fixed a locking problem in CegoXMLSpace
cego 05.08.2007 1.3.0 Syntax consolidation for query and procedure expressions done. This results in a more powerful grammar to provide more advanced features in stored procedures ( e.g. function calls )
cego 29.07.2007 1.2.1 Cleanup work for the online backup features and CegoAdmin
cego 28.07.2007 1.2.1 Tested online backup mode feature and fixed some problems.
cego 22.07.2007 1.2.1 Added online backup mode features to CegoFileHandler. As a result, reorganisation of class inheritance regarding CegoXMLSpace was needed ( now CegoLogManager is derived from CegoXMLSpace ) The online backup feature is a prerequisite for the mediator copy tableset function
cego 21.07.2007 1.2.1 Completed XML Space isolation. Now all shared XML space operations are synchronized via CegoDatabase Managaer
cego 15.07.2007 1.2.1 More work on mediator services for adding archive logs, adding datafiles, getting tableset info. Proceed with cgadm online help Basic mediator services work ( including recovery on secondary ): define, create, copy, start, stop, add user, add archlog, add datafile
cego 14.07.2007 1.2.1 Adaptions for 64 compiles for SPARC/Forte C More work on online help for cgadm console client
cego 11.07.2007 1.2.1 Adaptions for cgadm console interface for new mediator services Bug fixes in CegoXMLSpace::addTableSetDef
cego 08.07.2007 1.2.0 Distributed tableset definition for mediator, primary and secondary implemented and tested ( Med Services medDefineTableSet and medRemoveTableSet ) Since there are several mediator service spec extensions, I decided to switch to version 1.2
cego 07.07.2007 1.1.2 Introduced CegoDatabaseManager class derived from CegoBufferPool. CegoGlobalSpace has been renamed to CegoXMLSpace This is a cleanup step to achive a better isolation and straight locking of the thread global space
cego 04.07.2007 1.1.2 Introduced statStart parameter for reset of statistic counter in buffercache. Fixed some bugs with n ew mediator services. Changed shutdown procedure of daemon to shut down all active tablesets. Completed switch and copy mediator confirmation widgets. Tomorrow back in germany
cego 03.07.2007 1.1.2 Proceed with med service implementation. Corrections made for batch import mode in combination with archive mode ( since the LogThreadPool was not started up, no arching took place and import has blocked on occupied redo logs ) Added hitrate, readDelay and writeDelay indicators to BufferCache info
cego 02.07.2007 1.1.2 Fixed some bug fixes occured with multi tablesets. Introduced major mediator services for tableset transistion states DEFINED, OFFLINE_SYNCHED, OFFLINE_NOT_SYNCHED, ACTIVE_SYNCHED, ACTIVE_NOT_SYNCHED, ON_COPY
cego 01.07.2007 1.1.2 Redesign of tableset dialog widgets. Since this can be done using JOptionPane in a convenient way, I changed all dialog widgets to this class.
cego 30.06.2007 1.1.2 More work on creating, dropping and removing of tableset via admin gui CegoAdm
cego 29.06.2007 1.1.2 Cleanup of CegoAdminThread, isolation of service request code to decicated srv* methods. Adding new service for definition of tablesets
cego 28.06.2007 1.1.2 Trip to turkey :) More work on cgadm online help, some cosmetic changes on gettablesetinfo operation
cego 27.06.2007 1.1.2 Completion and online help of console based cgadm
cego 26.06.2007 1.1.2 Fixed a bug occured with distinct option and select * Fixed a bug for correct function/procedure load Added procedure and function cache for faster procedure execution
cego 26.06.2007 1.1.1 Fixed a bug occured with distinct option and select * Fixed a bug for correct function/procedure load Added procedure and function cache for faster procedure execution
cego 24.06.2007 1.1.0 It seems, there are some compiler problems with Mac OS X 10.4.10 and gcc 4.0.1 With the current update, cego crashes during select in a thread with a strange behaviour also in gdb Perhaps Xcode 2.4.1 might help ... Anyway, for 2.x multinode development, switch of development platform to Solaris is required Added buffer cache disk read/write information to BufferPool::poolInfo and CegoAdm GUI
cego 23.06.2007 1.1.0 Added distinct option Fixed a bug in CegoObjectManager. The locking mode was not initialized correctly for the persistent required system pages This problem was detected on Solaris x86 since table dictionary page was not fixed persistent Fixed a bug in CegoIndexCursor occured with select * from t1 where a > 10000, In case of double index entries with value 10000, the query returned zero result tuples Added dbthread abort service for admin thread. Long running queries may be aborted by this service
cego 21.06.2007 1.1.0 Added db thread state connected for more detailed information about db threads ( READY, CONNECTED, BUSY ) Completed sub select queries ( = select , in select , not in select ) and null/not null-Predicate
cego 18.06.2007 1.1.0 Increased performance with new optimized dragon 1.2.10 generated parser ( about 50% ) The performance benefit results from the improved XML handling but also the native Cego SQL parsing
cego 17.06.2007 1.1.0 Bug fixes for protocol change ( occured Solaris ). Tests for logfile shipping continued. Since I have a Solaris x86 based host up and running, multi node testing can be done by using Solaris zones
cego 16.06.2007 1.1.0 Network protocol change. Now msg size is transferred at the beginning to provide larger messages
cego 14.06.2007 1.0.12 More work on distributed stuff for version 2.x. TableSet copy and remote logging tested
cego 12.06.2007 1.0.12 Preparation work for version 2.x Some cleanup of CegoGlobalSpace and mediator connection tests from other machine
cego 09.06.2007 1.0.12 More work on CegoAdm Java GUI Fixed some occured incompatibilties and added threadInfo panel Fixed a problem occured on Linux in CegoXThreadPool::nextRequest: CegoNetHandler **pRequest = _requestQueue.First(); if ( pRequest ) { _requestQueue.Remove(*pRequest); CegoNetHandler *pN = *pRequest; unlockQueue(); return pN; } to CegoNetHandler **pRequest = _requestQueue.First(); if ( pRequest ) { CegoNetHandler *pN = *pRequest; _requestQueue.Remove(*pRequest); unlockQueue(); return pN; } Heavy insert + index creation tests on Linux ( OpenSuse, TableSize : 6 * 10^7 ) System runs stable
cego 07.06.2007 1.0.12 Adaptions for 64bit support ( Solaris x86 )
Added threadinfo in CegoAdm
cego 03.06.2007 1.0.12 Changed XML_CEGOERROR_DOC to XML_ERROR_DOC
cego 18.04.2007 1.0.12 Preparation for further subselect queries ( in, not in, subquery comp ) Proceed with user documentation
cego 17.04.2007 1.0.12 Implementation of string functions instr, locate, replace, substr, length Some fixes for null values in CegoDbHandler
cego 15.04.2007 1.0.12 Some reorganisation of CegoSelet::getFacField and friends This is still no clean solution. All function evalation should be capsulated Parser preparation for further string functions instr, locate, replace, substr, length
cego 14.04.2007 1.0.11 Alter statement basically works ( adding and removing columns ) Some corrections for datatype handling in CegoOutut and CegoDbHandler class First public beta release.
cego 13.04.2007 1.0.11 Fixed out-parameter handling for stored procedures Now out parameters are registered implicit if not already set up in masterblock This is useful for calling procedures via DBD or JDBC driver Proceed with alter query implementation. Introduced CegoAlterDesc as container class
cego 11.04.2007 1.0.11 Some adaptions to the configure.ac file Some performance improvements for table inserts CegoTableManager::insertDataTable without table-lookup has been introduced.This saves one call of CegoObjectManager::getObject() Some fixes and performance improvements regarding log file recovery Proceed with user documentation
cego 10.04.2007 1.0.11 Some Solaris related fixes. Tested the ZFS based online concept. It works.
cego 09.04.2007 1.0.11 Null values have not encoded correctly CegoTableManager::encodeFVL The problem was fixed there. Proceed with user documentation
cego 08.04.2007 1.0.11 Some fixes for online backup and subsequent recovery Now online backups are possible ( using the checkpoint escape command ) and complete recovery can be performed using the cgadm recovery commands
cego 07.04.2007 1.0.11 More work on backup and recovery. This results in some rework of the checkpointing and logile handling methods Archive log mode basically works
cego 06.04.2007 1.0.11 Added pidfile to access pid of current running cego daemon Implementation of local archive logs in CegoLogThreadPool::shiftRedoLogs started Added synchronization command for cgadm. An escape command argument can be given to the sync command This can be used to perform a backup of the datafiles for online backup. ( better : use Solaris ZFS snapshots to minimize buffer pool locking time )
cego 04.04.2007 1.0.11 Completed client library for stored procedure return and out parameter retrievel ( CegoDbHandler::getProcResult )
cego 03.04.2007 1.0.11 Introduced type map in CegoDataType ( for better type mismatch error message ) Fixed type check in CegoQuery::execute ( Insert case ) Catched Cntrl-C in cegoclt
cego 01.04.2007 1.0.10 Basic implementation of the DBD driver is done ( connection, execution, fetching, parameter handling works ) See cego DBD blog for more information. The DBD implementation required some cleanup operations of the cego client library ( isolation of server only methods to derived CegoGlobalDbHandler class ) Public release Please note: Since there was missing a header include in some modules, the release was corrected and uploaded again. If you have some compile problems, please download again.
cego 31.03.2007 1.0.10 Started with implementation of perl DBD driver. Derived the required code from the SQLite driver implementation. Since a C++ class usage is required, the XS code has patched a lot ... C++ integration together with DBI includes seems to work DBI connect to cego db works
cego 30.03.2007 1.0.10 Fixed writeAllow logic in BufferPool
cego 26.03.2007 1.0.10 Changed update statement to treat expressions Update statement generation for stored procs fixed Import/export of empty tables fixed ( added empty stream row element ) Fixed a problem with lock leak procedure cursor After proc block termination, cursors have not been cleaned up
cego 25.03.2007 1.0.9 The update statement did not work correctly. Some redesign of the update algorithm was required. To avoid any temporary conflicts with existing unique indexes, we force a transaction now, wherein the update occurs ( subsequent delete and insert )
cego 22.03.2007 1.0.9 BufferPool optimization for creating large index tables : Instead of writing a checkpoint, dirty pages are written to datafile. To avoid data inconsistency, this is just allowed in case of index creation. Reduced BUPMNG_MAXFIXTRIES parameter from 100 to 25. This improved performance dramatically. As a consequence, buffer cache filling rate has been reduced.
cego 18.03.2007 1.0.9 Added drop statement for foreign keys Bug fixes on foreign key handling Bug fixes on import/export handler
cego 17.03.2007 1.0.9 Added view and proc objects to import / export Introduced libCego as a client library Isolated Import and export to CegoXPorter
cego 16.03.2007 1.0.8 Public release
cego 12.03.2007 1.0.8 More work on user management. Admin users introduced.
cego 12.03.2007 1.0.8 Proceed with user management. Basic management works
cego 11.03.2007 1.0.8 Moved fkey check in CegoTableManager::insertTableData after tuple insert to treat self refering foreign keys ( same table, same row ) Added fkey check at foreign key creation time Added admin feature to add new datafiles Fixed thread termination synchronization for database shutdown ( Joining db, log and admin threads after terminate signal ) Started with user management
cego 06.03.2007 1.0.8 Another work on import/export Export and import for tables, indexes and foreign keys basically works
cego 06.03.2007 1.0.8 Another work on import/export Export and import for tables, indexes and foreign keys basically works
cego 05.03.2007 1.0.8 Started with import/export admin features. This requires added streaming features in the XML suite New streaming classes CegoExpOutStream and CegoImpInStream introduced Rework of CegoAdm done Basic XML tableset export works now
cego 04.03.2007 1.0.8 Small fix in CegoSelect to correct group aggregation values Small fix in CegoFieldValue copy constructor to set _pV to 0
cego 04.03.2007 1.0.7 Small fix in CegoSelect to correct group aggregation values Small fix in CegoFieldValue copy constructor to set _pV to 0
cego 03.03.2007 1.0.7 Fixes on index deletion algorithm. In case of non-unique index values, wrong entries have been removed This has been fixed by comparing the datapointer for the data tuples. This is implemented in the method CegoIndexManager::searchDataPointer() Changed MINFREE to dynamic MINFREERATIO in CegoDefs.h and CegoBufferPage to avoid minfree exceptions Modified cegoblow to blow arbitrary queries ( insert / delete ) and also to generate sql-load file ( if hostname and port arguments ommitted ) Public release
cego 28.02.2007 1.0.6 Testing of new index deletion algorithm Added some missing releaseDataPtrUnlocked calls to avoid buffer fix leaks Public version released
cego 26.02.2007 1.0.6 Since in case of index entry deletion, it is not enough to propagate the decrease of a subnode to its parent, a new method CegoIndexManager::propagateRotation was added. RL-Rotations may lead to unbalanced subnodes, which may be treated in a dedicated step. Deletion of index entries in AVL trees seems to be pretty complicated ... To handle the rebalancing during index deletion, the method propagateRotation was extended and renamed to rebalanceNode Now all rebalancing analysis and treatment for any unbalanced node situation is managed by this method Basically works ! Fixed the count(*)-NULL bug. ( NULL is printed for count(*) = 0 )
cego 25.02.2007 1.0.6 Fixed index value handling for null values. For this, the length of the data field is stored with the index field value Fixes a bug in group aggregation ( first aggregation was not handled ) There seams to be a bug in the index deletion algorithm. This occured by testing the new index value handling Fixed some of the problems in CegoIndexManager::deleteIndexTableData. There are still some open problems regarding index balancing ...
cego 19.02.2007 1.0.6 Some bug fixes on the improved join construction Corrections done for null value handling in class CegoFieldValue und CegoDbHandler Proceed with HTML guide
cego 18.02.2007 1.0.6 Improved join performance achieved by extended CegoAttrCond class Now select queries like "select count(*) from t1, t2 where t1.a=20 and t1.a = t2.a;" will use index a on t1 and t2. Index search value for table t2 is set up during the join after evaluating t1.a value An execution plan may look like plan select * from t1 , t2 where t1.a=42 and t1.a = t2.a; Execution Plan : Joining t1(t1_1) IndexCondition -> a = 42 Joining t2(t2_2) IndexCondition -> a = t1_1.a ok ( 0.003 s )
cego 17.02.2007 1.0.6 OrderSpace implementation basically works Added plan statement to show select execution plan
cego 12.02.2007 1.0.6 Started with OrderSpace implementation ( for tuple ordering in select query) This requires three new classes called CegoOrderEntry, CegoOrderSpace and CegoOrderCursor
cego 11.02.2007 1.0.6 Grouping clause basically works ( without having )
cego 10.02.2007 1.0.5 Redesign of CegoSelect::nextTuple and CegoSelect::evalSelection to prepare for grouping clause Public release
cego 09.02.2007 1.0.5 Fixed int-alignment in CegoIndexEntry and CegoFieldValue ( detected on HP/UX )
cego 07.02.2007 1.0.5 Syntax extension for group by and order clause Started with design of grouping
cego 04.02.2007 1.0.5 Proceed with module cleanup ( 65 / 75 treated ) Fixed missing joinbuf reference for like-clause attributes ( problem, if the atribute does not appear in selection list ) Exception throw for unknwon attributes ( was ignored ) : select foo from t1 Module cleanup finished
cego 03.02.2007 1.0.5 Several fixes for new locking policy Transactions now are mainly working, rollback after db crash still not handled Completed date2str function implementation HTML documentation extension regarding transactions
cego 30.01.2007 1.0.5 Introduced defensive locking with r/w-locks and locking timeout support for deadlock situation
cego 28.01.2007 1.0.5 Reactivation of transaction functions Provided dump function to dump any user, system or rbseg table to client
cego 27.01.2007 1.0.5 Added "fixed" datatype ( used for currency ) Public alpha release of version 1.0.4
cego 27.01.2007 1.0.4 Added "fixed" datatype ( used for currency ) Public alpha release of version 1.0.4
cego 20.01.2007 1.0.4 Several bugs fixed regarding procedures and functions, occured by developing the Cego sample application Jacc
cego 20.01.2007 1.0.4 Several bugs fixed regarding procedures and functions, occured by developing the Cego sample application Jacc
cego 16.01.2007 1.0.4 Integration of decimal data type
cego 15.01.2007 1.0.4 Proceed with user guide change primary index create statement ( primary index name is now alway + _pidx )
cego 14.01.2007 1.0.3 Test of the new indexmanager
Public release
cego 13.01.2007 1.0.3 An ugly bug took me almost 2 days to fix. In CegoIndexManager::insertIndexTable, the index entries have not been claimed and released This lead to an corrupted index, but just in case of page relocation of the buffer bool
cego 11.01.2007 1.0.3 Index build with height logic now works ( deletion still to do ) Introduced a check index command to verify consistency of index
cego 08.01.2007 1.0.3 Redesign of CegoIndexManager. Since after node rotation, the balance values of the index entries could not be set obviously to correct values, I decided to switch from three value balance attribute to height value of subtree. This involves some code changes in CegoIndexEntry and CegoIndexManager
cego 06.01.2007 1.0.3 Proceed with user guide Changed procedure variable reference syntax for assign statements and proc call statements Fixed a locking bug in CegoGlobalTableManager::createLocalIndexTable
cego 05.01.2007 1.0.3 Added procedure variable evaluation for select statement Procedure vars now are referenced with the colon sign to distinguish from table attribute references Fixed a locking bug occured by dropping procedures Proceed with user guide
cego 04.01.2007 1.0.3 Cego protocol file ( cego.log ) now customizable via command line argument Changed thread pool queue locking to dedicated semaphores Now NETMNG_SELECT_TIMEOUT in CegoDefs.h set to 1500000 Fixed a bug in CegoGlobalManager::updateLocalDataTable , update schema was not set up correctly for index based updates Fixed a bug in CegoProcFetch::fetch, proc variable was net set up correctly
cego 03.01.2007 1.0.3 Small fixes on cgclt Heavy tests on the backend with large tables and corresponding indexes ( 8*10^6 tuples ) For a good performance, actually the index should fit into the bufferpool Increased NETMNG_SELECT_TIMEOUT from 3000 to 500000 usec to avoid CPU usage of the thread pool threads. This increased the select count(*) performance of 8 mio tuples from 98sec to 14 sec.
cego 02.01.2007 1.0.3 Lock consolidation for locks in CegoBufferPool and CegoFileHandler Now all mutex are manged by the CegoLockHandler class. This fixes another locking problem with the locks in CegoBufferPool and CegoFileHandler
cego 01.01.2007 1.0.3 Memory leak fixed located in xml library ( fixed with xml 1.0.2 ) Locking problem fixed in CegoBufferPool and CegoFileHandler Cleanup of CegoDefs.h
cego 31.12.2006 1.0.2 Introduced msg receive timeout in NetHandler class Proceed with module cleanup ( 42 / 75 treated ) Public alpha release of version 1.0.2
cego 30.12.2006 1.0.2 Cleanup on CegoGlobalTableManager with object protection Still a lot of todos for Version 2 Proceed with user guide
cego 29.12.2006 1.0.2 More work on object protection for create/drop operations Object protection now handled via GlobalSpace::useObject and GlobalSpace::unuseObject methods
cego 28.12.2006 1.0.2 Fixes on query aggregation functions done ( avg, min, max ) Object ( record ) locking introduced to protect table during index build Bug-Notice to the bug from 15.06.2006 : The issue has been fixes in the meantime. The problem was located in the nextRequest-method of the CegoXThreadPool classes. Code changed from P(); CegoNetHandler **pRequest = _requestQueue.First(); if ( pRequest ) { _requestQueue.Remove(*pRequest); V(); return *pRequest; } to P(); CegoNetHandler **pRequest = _requestQueue.First(); if ( pRequest ) { _requestQueue.Remove(*pRequest); CegoNetHandler *pN = *pRequest; V(); return pN; }
cego 27.12.2006 1.0.2 LogManager extension for handling object create/alter/drop cglog extension to trace create/alter/drop Changed lsn start values from 0 to 1 for better log handling
cego 26.12.2006 1.0.2 Proceed with user guide
Proceed with module cleanup ( 38 / 75 treated )
cego 25.12.2006 1.0.1 Proceed with user guide Proceed with module cleanup ( 27 / 75 treated ) Public alpha release of version 1.0.1
cego 24.12.2006 1.0.1 Cleanup on CegoOutput to prepare for datatype handling float, double and bigint type basically work now
cego 21.12.2006 1.0.1 Started with web based user documentation
cego 20.12.2006 1.0.1 More work on CegoIndexManager::propagateDecrease which handles tree balancing after index deletion. This is the hardest part of the story. Since many cases have to be treat, it will take a while to make run this stable. Benefit: No reorganization of indexes is required after heavy insert/delete operations First tests for rebalancing after deletion are sucessful Proceed with module cleanup ( 20 / 75 treated )
cego 18.12.2006 1.0.1 Cleanup work on IndexManager. Balancing after index deletion is still not done. For this, the rotation operation methods for the AVL index trees have been isolated Now they can be used for balancing after deletion.
cego 17.12.2006 1.0.1 Cleanup work on stored procedures. Return value handling added to procedures and functions. Minor language extension for retrieving object information ( adding show user [view,index,procedure] ). Bug fixes regarding object dropping.
cego 15.12.2006 1.0.1 Multithreading tests started. Fixed a locking bug in CegoObjectManager::insertPageData After getNewFilePage, fileId and pageId have not been assigned to the new values, which lead to wrong arguments in lockDataPage call Fixed some (old) issues in the CegoLockHandler class ( from multi-process version )
cego 14.12.2006 1.0.1 Started with final code cleanup
cego 13.12.2006 1.0.1 Prepared SQL function structure in CegoSelect and CegoFacDesc Implementation of first string function LEFT The locking strategy in BufferPool::bufferfix and BufferPool::bufferUnfix seems to be to rough. A locking granularity on hashIds would enable parallel reads and wirtes on different datafiles ...
cego 11.12.2006 1.0.1 Little syntax extension for date value handling: date( < value > , < format > )
cego 10.12.2006 1.0.1 Performance optimization and bugfixing on subqueries A more intelligent strategy is used for query execution preparation ( references and join execution structures are build up now ONE time in the master query )
cego 09.12.2006 1.0.1 JDBC now works for Callable Statements ( Stored Procedures ) in a basic way Source cleanup has been done in accordance to Forte C++ ( Solaris ) Performance tests with insert and select operations habe been done. TableSchema : int, string(30) Insert performance via stored proc ( no index) : 100000 rows in 7 sec Insert performance via stored proc ( one index on integer ) : 100000 rows in 12 sec Create index : 100000 rows in 4 sec Select count(*) : 200000 rows in 0.3 sec Select count(*) : 1000000 rows in 1.5 sec Select count(*) with where condition : 1000000 rows in 3 sec
cego 02.12.2006 1.0.1 More workd on JDBC driver and extensions to cego server ( session handling )
cego 26.11.2006 1.0.1 Proceed with JDBC Driver, this is still much work ... fixed tableinfo statement and added method CegoObjectManager::getPageCount to retrieve page count information for table objects
cego 25.11.2006 1.0.1 Tested cego with high volume data ( 10 G ), engine works pretty stable Checking CegoFieldValue value ptr for zero in comparison to catch non-initialized variables Handling session abort in CegoDbThread, CegoAdminThread and CegoLogThread Started with JDBC Driver implementation, basic query works
cego 21.11.2006 1.0.1 Fixed some alignment problems in CegoTableObject ( occured with Solaris ) Added datetime data type
cego 20.11.2006 1.0.1 Fixed some memory leaks
Fixed some log handler problems
cego 19.11.2006 1.0.1 Cursor added to precedures Client XML protocol bugfixing Select Aggregation fixing
cego 18.11.2006 1.0.1 Procedures basically work ( cursor still missing ) Started with null value implementation
cego 13.11.2006 1.0.1 Cleanup of Cego.def and CegoAction Proceed with procedure implementation Introduction of bool datatype
cego 12.11.2006 1.0.1 Proceed with procedure implementation Procedures are parsed, stored and loaded now
cego 05.11.2006 1.0.1 Started with procedure implementation Following classes have been added : CegoProcedure CegoProcParam CegoProcCursor CegoProcBlock CegoProcStmt CegoProcIfStmt CegoProcCursorLoopStmt CegoProcAssignStmt CegoProcExpr CegoProcTerm CegoProcFactor CegoProcCond CegoProcPred
cego 04.11.2006 1.0.1 Views are basically work fine
cego 01.11.2006 1.0.1 CegoGlobalTableCursor basically adapted for view handling View are dynamically parsed and loaded if detected from the table cursor Still need some work to get this stuff run ...
cego 30.10.2006 1.0.1 Foreign keys basically work. Introduced CegoContentObject as an abstract container class for table and view objects. Changed the CegoSelect class to handle CegoContent objects ( requirement for view handling )
cego 29.10.2006 1.0.1 Foreign key implementation started. View management implementation started.
cego 23.10.2006 1.0.1 Select queries seem to run well again. The join optimizing logic was fixed but also an alignment bug in the CegoIndexCursor::getFieldList method.
cego 22.10.2006 1.0.1 In terms of view and procedure implementation, the CegoSelect class had to be redesigned. Now there is provided a nextTuple method for controlled retrievel of selected tuples. This is necessary to retrieve tuples in nested views, but also for db cursor implementation. Also the class looks more lean and clean now.
cego 21.10.2006 1.0.1 The change of CegoObjectEntry had some impact to using classes. Affected classes have been changed. Introduced object classes for views and procedures.
cego 16.10.2006 1.0.1 Started with implementation of foreign keys. Basic structures are ready. Split of CegoObjectEntry in superclass CegoObject + derived classes CegoTableObject and CegoKeyObject This lead to a cleaner object design.
cego 15.10.2006 1.0.1 Nested Join basically works well ( allquantor results seem to be ok )
cego 14.10.2006 1.0.1 Further preparation work for nested select queries Cleanup of XML attribute definitions
cego 13.10.2006 1.0.1 Isolation of CegoQuery::select-methods to class CegoSelect
cego 09.10.2006 1.0.1 Made CegoGlobalSpace class threadsafe. Changed CegoBlow Test-Program for direct attach to db.
cego 06.10.2006 1.0.1 Queries work now with new tableset model. Some changes have been required in CegoFileHander::allocatePage() and CegoFileHandler::getHandle() to handle tableset > 1
cego 05.10.2006 1.0.1 CegoAdm : Fixed some appearance issues in the DataFile Monitor and BufferCache Monitor Cego : Added table startup feature for daemon mode. Made some basic function tests with db queries. cego cores with activated log and treating select queries. Fixed the problem for the activated log
cego 04.10.2006 1.0.1 Again back to CegoAdm. Start and stop of tableset via Admin GUI now basically works.
cego 03.10.2006 1.0.1 Introduction of cego to the public web page
cego 25.09.2006 1.0.1 Further work on GUI. Added action panel and separator design. Cleanup and better code design of several JPanels. Looks more beautiful now ...
cego 24.09.2006 1.0.1 GUI programming is tough. Spent a lot of time in CegoADM GUI design to find an appropriate appearance. Now all essential node and table set information are displayed pretty nice.
cego 22.09.2006 1.0.1 Further work on CegoAdm Java Frontend. Active nodes and tableset are displayed and managed in Jtree structures
cego 21.09.2006 1.0.1 Added create and drop tableset services. Introduced table set status values
cego 20.09.2006 1.0.1 Started with reprise of the CegoAdm stuff. Back to Java ...
cego 18.09.2006 1.0.1 Introduced recovery services to CegoAdmin
cego 17.09.2006 1.0.1 Added the file copy service to CegoAdmin
cego 16.09.2006 1.0.1 Better help output was designed ( cego -h ) CegoAdminHandler was extended to request db spec information. The CegoLogThread works in a basic form.
cego 09.09.2006 1.0.1 some work done on LogManager and friends. Introduced new classes for logfile shipping ( CegoLogThreadPool, CegoLogThread and CegoLogHandler )
cego 04.09.2006 1.0.1 more bugfixing and cleaning regarding the tabsetId extension
cego 03.09.2006 1.0.1 some bugfixing in CegoFileHandler and CegoTableManager ( caused by tableset extension )
cego 28.08.2006 1.0.1 another redesign of the thread structure. Now we have the following thread model: db thread pool admin thread pool mediator thread beat thread The CegoAdmin program was modified in a way, that it connects to the admin thread pool for basic admin actions.
cego 23.07.2006 1.0.1 transfer of admin data works. Data is transferd via xml to requestor
cego 09.07.2006 1.0.1 DB configuration now is described in a XML definition file Introduction of CegoGlobalSpace for meta information handling ( host, tableset and global objecct information ) Introduction of CegoAdmin as admin console client Introduction of CegNet::nextMessage for single threaded message handling Basic testing
cego 08.07.2006 1.0.1 Introduction of table set management. This results in a fundamental change of several classes. Current state of code is compile ready but still not tested.
cego 03.07.2006 1.0.1 Further work on session handling. Bug fixing on protocol errors
cego 02.07.2006 1.0.1 Renaming CegoXMLHandler to CegoSessionHandler. Completion of first draft xml protocol implementation. basic query works now ...
cego 27.06.2006 1.0.1 introduced CegoXMLHandler for complete XML protocol encapsulation
cego 26.06.2006 1.0.1 table sync works but code is still not very clean ( XML message handling encapsulation )
cego 24.06.2006 1.0.1 further work on table sync function
cego 22.06.2006 1.0.1 added pointer alignment to CegoTableManager::encodeFVL and CegoTableManager::decodeFVL ( bus error on Sparc)
cego 19.06.2006 1.0.1 introduced mediator, basic sync table function ( SYS_HOST, SYS_TABLEGROUP, SYS_GLOBALOBJECT)
cego 18.06.2006 1.0.1 added global getObject feature cleanup of CegoThread xml handling
cego 17.06.2006 1.0.1 more work on the global table handling, introduced SYS_GLOBALOBJECT and added node to node communication to CegoGlobalTableManager and CegoThread testing of the first distributed table creation and insert commands
cego 16.06.2006 1.0.1 The MT-problem also occurs on the PPC but not on FreeBSD. Added some client protocol enhancements for query and error handling Added tableGroupId attribute to CegoObjectEntry Introduced SYS_TABLEGROUP table in CegoSystemSpace Introduced SYS_HOST table in CegoSystemSpace added several access methods in CegoSystemSpace ( getHostId, addHostInfo, addTableGroup, getTableGroupId, getPrimaryHostId, getHostInfo )
cego 15.06.2006 1.0.1 made some heavy MT-Tests with multiple client against cego daemon. Fixed some synchronisation problems. There is still a memory access problem, if too many incoming requests are handled ( heavy memory requests occur ). Perhaps this is an Mac OS X pthread problem. I have to analyse this bug more detailed ( on Mac OSX/PPC or Solaris )
cego 12.06.2006 1.0.1 introduced client session protocol in CegoThread and CegoClient introduced CegoGlobalTableManager, CegoGlobalTableCursor and CegoQueryHelper for global table handling
cego 11.06.2006 1.0.1 changed lsn management to avoid access to SystemSpace in bufferFix ( now managed by CegoDBInfo ) some debug mode enhancements
cego 10.06.2006 1.0.1 Integration of native ObjectCursor into CegoTableCursor ( usage in CegoQuery methods ) This is a preparation for the global approach because of SPARC memory alignment requirements type change of short to int some cleanup of semantic actions for Condition handling bug fix in CegoObjectManager ( removed inheritance from CegoLockHandler )
cego 06.06.2006 1.0.1 better exception handling of CegoThread signal handling in CegoThreadPool
cego 05.06.2006 1.0.1 Code is running again with new CegoThreadPool and CegoNet classes
cego 29.05.2006 1.0 Transition of the most old dbeng PQL classes to CEGO Modification for thread save operation was made ( thread interface is CegoBufferPool )