× News Cego SysMT Croom Web Statistics Impressum
SysMT Logo
Change Log

In the following, change log entries for the managed software packages are shown

Last 10 30 100 1000 10000 entries

Category Date Version Log
cego 23.09.2019 2.45.7 Version released
cego 22.09.2019 2.45.7 Added method CegoBTreeNode::verifyLeafFull for full btree verification in a sense, that each btree value is compared with the corresponding table data entry via datapointer reference
cego 22.09.2019 2.45.7 Fix in CegoSelect::setVIewCond, a view condition id has to be calculated which is later used for getQueryId(). Otherwise, wrong query cache entries are used in case of views with outer conditions
cego 05.08.2019 2.45.6 Version released
lfcbase 05.08.2019 1.14.2 Version released
cego 04.08.2019 2.45.6 Added command line option --fsync to enable physical disk synchronisation for logging and checkpointing. This options slows down database significantly but ensures consistent data in case of an operating system crash
lfcbase 04.08.2019 1.14.2 In configure.ac added check for darwin. This is required, since for File::flush implemention, darwin rather requires a fcntl call with option F_FULLFSYNC instead of fsync ( see OSX man page for fsync )
lfcbase 14.07.2019 1.14.1 Version released
lfcbase 14.07.2019 1.14.1 Adaptions made for clean mingw compiles
cego 14.07.2019 2.45.5 Version released
lfcbase 14.07.2019 1.14.0 Version released
cego 13.07.2019 2.45.5 In CegoClient, added input data check via File::hasData ( available with lfcbase 1.14.0 ). Now, pipe input is autodetected, so the command line argument "--pipe" has been removed
lfcbase 13.07.2019 1.14.0 Added File::hasData method to check for available input data from file descriptor ( implemented with POSIX poll function )
cego 13.07.2019 2.45.4 Version released
cego 12.07.2019 2.45.4 Code cleanup to avoid warnings with -Wswitch-enum
dragon 12.07.2019 1.5.3 Version released
dragon 12.07.2019 1.5.3 Small cosmetic patch in CPlusGenerator parse method. Instead of default, NULLACTION case has been added to avoid compile warnings with -Wswitch-enum
cego 11.07.2019 2.45.3 Release build verified for MinGW
cego 11.07.2019 2.45.3 Version released
cego 11.07.2019 2.45.3 Fix in CegoFieldValue::fastComp, the castTo method calls for t1 and t2 have to be switched, since first ist has to be checked to cast to native btree datatype ( used in CegoBTreeCursor::traceLog, inRange and fullMatch )
create table t1 ( a int, d datetime);
create btree b1 on t1(b);
select a from t1 where b = '12.07.2019'; -- should be casted from string to datetime
cegobridge 09.07.2019 1.5.3 Version released
cego 09.07.2019 2.45.2 Version released
cego 09.07.2019 2.45.2 Fix in CegoQuery::execute for INSERTBYSELECT_QUERY case. Since the selected tuples are clustered ( MAX_CLUSTERED_INSERT) we have to create a local copy for the corresponding field values. Otherwise, tuple information could be invalidated by relocated buffer pool pages
cegobridge 09.07.2019 1.5.3 MySQL SET lines are no more parsed. instead, the scanner ignores these lines
cego 07.07.2019 2.45.1 Version released
cego 07.07.2019 2.45.1 Treated alias insert queries with empty schema, e.g.
insert into a1 values ( 1, 'XXX');
cego 06.07.2019 2.45.1 Some patches added for alias management to allow alias defintions as a subset of the original table, e.g.
create table t1 ( a int, b string(10), c string(30))
create alias a1 on t1 ( a as ax, b as bx);
This has required some fixes in CegoAliasObject::mapSchema and CegoQueryHelper::mapFLA
cegobridge 06.07.2019 1.5.2 Version released
cegobridge 06.07.2019 1.5.2 Fix in MySQLAction::storeAttrColumn, _defaultOptString.length() and _nullOptString.length() must be compared greater 1 ( not 0 )
cegobridge 03.07.2019 1.5.1 Version released
cegojdbc 03.07.2019 1.9.6 Version released
cego 03.07.2019 2.45.0 Version released
cego 02.07.2019 2.45.0 Added trigger and alias object handling to CegoXPorter binary export and import
cego 02.07.2019 2.45.0 Added alias and trigger xml export and import feature ( trigger xport was still not implemented ) Fix in CegoDbThread::loadObjects for trigger reload, instead of triggerList.Next(), triggerList.First() was called, which result in an infinite loop in case of existing trigger objects
cegojdbc 01.07.2019 1.9.6 Support for cego-2.45 added. Fix in CegoFixed::toString, zero concatenation must be done from left, otherwise wrong conversion for low values occurs ( e.g. 22.03 is printed as 22.30 )
cego 30.06.2019 2.45.0 More work on table alias handling. Now works with more sophisticated select queries ( e.g. select ax from a1 aa where aa.ax = 1; ) For this, some fixes had to be done in CegoContentObject, since the the table alias attribute ( _tabAlias ) was not setup in constructor and other methods
cego 29.06.2019 2.45.0 Basic alias mapping for select works Here comes a sample SQL script
drop if exists table t1;
list alias;
desc alias a1;
drop if exists alias a1;
create table t1 ( a int, b string(30));
create alias a1 on t1 ( a as ax, b as bx );

insert into a1 ( ax, bx ) values ( 1, 'XXX');
insert into a1 ( ax, bx ) values ( 2, 'YYY');
insert into a1 ( ax, bx ) values ( 3, 'ZZZ');

select ax from a1;
cego 27.06.2019 2.45.0 Added alias mapping for insert, update and delete queries ( CegoQueryHelper::mapAliasPredicate still to implement )
cego 27.06.2019 2.45.0 In CegoDistManager::registerObjects, added registration for fkey, check, trigger and alias
cego 26.06.2019 2.45.0 Implemented base semantic actions for creating, listing and describe alias objects ( still no usage )
cego 25.06.2019 2.45.0 Added classes CegoAliasObject and CegoAttrAlias for table alias handling
cego 25.06.2019 2.45.0 Added table alias feature to grammar definition. Table aliases allow alternate table name and attribute name definitions for a table ( create alias ... )
cegobridge 22.06.2019 1.5.1 Added stored procedure grammar defintions to MySQLParser.def. Semantic actions still not implemented
cegobridge 21.06.2019 1.5.1 In MySQLAction::storeKey, changed btreename to _ since MySQL allows non unique key names
cegobridge 21.06.2019 1.5.1 Actived append mode in CegoBridge::main, which speeds up import performance significantly
cegobridge 21.06.2019 1.5.1 Added MySQL type support for type date and type bigint
cego 17.05.2019 2.44.14 Version released
cego 17.05.2019 2.44.14 Adapted copyright
cego 17.05.2019 2.44.14 Some improved exception handling in CegoTableManager::checkIntegrity ( more detail information about violated object )
cego 15.05.2019 2.44.14 Code cleanup CegoTableManager, drop/create/alter operations inside a transaction no more allowed
cego 12.05.2019 2.44.13 Version released
cego 12.05.2019 2.44.13 Version passed checkCrashRecovery with the following parameters
NUMRUN=100
DOTRANSACTION=-dotransaction
ARANGE=10000
AINTERVAL=500
ACOUNT=30000
PRIMARY=primary
POOLSIZE=191
All relevant checkpoint situations have been observed over all run
cego 12.05.2019 2.44.13 Introduced CegoBufferPool::getCPCount() to return to current checkpoint count. This method is used by CegoTableManager, CegoObjectManager and CegoTransactionManager to decide, if a consitency checkpoint is required
cego 12.05.2019 2.44.13 Fix in CegoBTreeManager::checkDuplicate, the check for uflag ( returned CegoBTreeNode::valueExists ) to check for high value is not enough if, entries have been deleted from node.
Instead, all subsequent pages have to be checked until a value higher is found
cego 11.05.2019 2.44.13 Further recovery fix in CegoTableManager::insertDataTable In case of an insert exception ( e.g. duplicate pkey ), a checkpoint is forced now after deleteData to ensure file consistency
In CegoObjectManager::insertPageData a second checkpoint is forced after data copy, if a previous checkpoint has occured. Otherwise this insert might be ignored during recovery because of lower LSN
cego 11.05.2019 2.44.12 Version released
cego 11.05.2019 2.44.12
  • Fix added in CegoTransactionManager::commitUpdate, btree must be inserted with insertBTreeWithCommit
  • Fix added in CegoTransactionManager::getCrashAffectedTables, schema entry must be searched with Find(CegoField(Chain(), SYS_RB_TABLE))
cego 10.05.2019 2.44.12 In CegoTableManager::deleteDataTable, moved the LSN allocation at the end. If checkpoint occcurs during delete operation, the sync LSN might be higher and the delete operation is not recovered
cego 10.05.2019 2.44.12 Several fixes and improvements regarding crash recovery
  • In CegoRecoveryManager::recoverCurrentTransactionLog crash affected tables are analyzed at the beginning now. This must be done, since commit or rollback operations may occur in the recovery log
  • In CegoTransactionManager, getObjectWithFix method calls have been eliminated. The sustained fix on the pages avoids writing the pages during checkpoint, which may result in inconsistent rollback segments
  • In CegoObjectManager::createTableObject, the getNewFilePage method call was moved to the beginning. It may happen, that a checkpoint occur during the method call, which may result in inconsitent table entries ( newEntry is called, during getNewFilePage a checkpoint is forced which writes the incomplete page to disk and just after the checkpoint, the table information is encoded
cego 09.05.2019 2.44.11 Version released
cego 09.05.2019 2.44.11 Fix in CegoRecovery:::recoverCurrentTransactionLog, for LOGREC_INSERT and LOGREC_DELETE, the corresponding index have to be invalidated with CegoTableManager::invalidateIndexForTable. This logic was already implemented but removed in context of more sophisticated transaction handling ( patch 2.39.11 and around )
cego 08.05.2019 2.44.11 Small fix in CegoObjectCursor constructor, changed _isEOC = false to _isEOC = ( pageId == 0 ). This causes getFirst to return false in case of truncated objects ( can occur for RBSEG objects )
cegojdbc 05.05.2019 1.9.5 Version released
cegojdbc 05.05.2019 1.9.5 Added driver support for cego version 2.44
cego 04.05.2019 2.44.10 Version released
cego 04.05.2019 2.44.10 Fix in CegoAction::readChain() to support "\r" escape character Fix in CegoBTreeCursor::getFirst, in case of pAttrCond = 0, getNext has to be called if current leaf page is empty, otherwise cursor trace is incomplete ( just used for CegoDistManager::verifyTable
cego 04.05.2019 2.44.10 Fix in CegoBTreeNode::getChildPage, parameter traceMin has been introduced, which is needed to trace btree with CegoBTreeManager::deleteBTree. Otherwise, it might happen that btree entries are not found ( occurs just for non-unique btree objects )
cego 03.05.2019 2.44.10 Modified rc script to check for configured tablesets to be online ( via cgadm ) This requires additional configuration parameters in rc.conf
lfcbase 02.05.2019 1.13.1 Version released
lfcbase 02.05.2019 1.13.1 Stability patch in Datetime::asChain methods. The result of localtime is checked for null pointer ( may occur in case of very large long values, for which the instance has been created ) and in this case, an exception is thrown
cego 02.05.2019 2.44.9 Version released
cego 02.05.2019 2.44.9 Version released
cego 02.05.2019 2.44.9 Removed legacy method CegoAggregation::setInit/isInit
cego 02.05.2019 2.44.9 Fix in CegoQueryHelper::aggregateTuple, since the field value reference for aggregation field value might be no more valid during the aggregation run, a local copy is created via CegoFieldValue::getLocalCopy.
cego 28.04.2019 2.44.8 Version released
cego 27.04.2019 2.44.8 Added method CegoClient::treateEscape to handle escacpe charaters in command strings for interactive and batch mode ( newline, carriage return und tab )
cego 27.04.2019 2.44.8 Further optimization in CegoFunction::getReturnTypeLen, if the length argument in left, right substr function is a constant, this value is used for schema definition, otherwise the length of the source is used. Sample
select left(a,3) from t1 => length 3 is used for schema
select left(a,b) from t1 => definition of a is used for schema
Further ptimization done in CegoSelect and CegoAction for schema evaluation.
cego 26.04.2019 2.44.7 Version released
cego 26.04.2019 2.44.7 In CegoSelect::evalSelection, optimization provided in a way, that schema is not evaluated explizit anymore. Rather the previous analysed schema ( prepare method, _evalSchema ) is used. Since for dynamic field length, the resulting schema must be estiamated, this approach is ok.
cego 25.04.2019 2.44.7 Fix added in CegoFunction::getReturnTypeLen, evalFieldValue for expression values could fail, since FLA ist still not set up. For this case, now the cont value RETVAL_LEN is returned as an estimation.
cego 23.04.2019 2.44.6 Version released
cego 23.04.2019 2.44.6 Added some code cleanup and additional checks ( check082 and check083 )
cego 22.04.2019 2.44.5 Version released
cego 22.04.2019 2.44.5 Added fix in CegoAttrComp::setup, _posSetup variable was not setup correctly for case BTWN / VALUE2VALUE which might lead to invalid join array access.
cego 22.04.2019 2.44.4 Version released
cego 22.04.2019 2.44.4 Added fix in CegoExpr::evalField and CegoTerm::evalField to provide correct result type. This is required for fastserial protocol usage.
Also added fix in CegoFieldValue::operators +-*/ to cast to the largest value
cego 22.04.2019 2.44.3 Version released
cego 22.04.2019 2.44.3 Optimization added in CegoBufferPool::bufferFix. If there is no available slot in the bufferpool, a checkpoint is forced for the corresponding tableset ( already implemented ). Now if still no available slot, we force checkpoint for all other online tableset of the database. This might be useful, if the bufferpool is heavily occupied by other tablesets with dirty pages.
cego 21.04.2019 2.44.2 Version released
cego 21.04.2019 2.44.2 Fix in CegoTableManager::deleteDataTable, before resolving external table references via evalExtTableReferences, the subquery must be prepared, to resolve local attributes first
cego 21.04.2019 2.44.1 Version released
cego 21.04.2019 2.44.1 In CegoFIleHandler, introduced read only mode, which is used for tableset export
cego 21.04.2019 2.44.1 For connection pools ( db, admin, lock ) added a check for max connection queue length ( CegoDefs::NETMNG_MAXQUEUELEN ) to protect against port penetration
cego 20.04.2019 2.44.0 Version released
lfcbase 20.04.2019 1.13.0 Version released
cego 20.04.2019 2.44.0 Compile successful on mingw
lfcbase 20.04.2019 1.13.0 Compile succesful for mingw
cego 19.04.2019 2.44.0 Added authorization for log connection via dedicated loguser. The log user is setup via cgadm with "set loguser for " command
cego 19.04.2019 2.44.0 In CegoDbThreadPool, CegoAdminThreadPool and CegoLogThreadPool, pHandle variable was not initialized ( to zero ). This might cause a crash of the system in case of heavy request penetration or other net exception.
cego 19.04.2019 2.44.0 Added logging of incoming connection source information. This requires lfcbase-1.13.0, since ip source information has just been added to NetHandler class
lfcbase 19.04.2019 1.13.0 Added ip source information to NetHandler class, which is provided via Net::nextRequest.
cego 08.03.2019 2.43.4 Version released
cego 07.03.2019 2.43.4 Added fix in CegoSelect::getSchema, In case of union selects, the schema fields have to be checked for type compatibilty. For const null values in expression list, the schema is adapted to the appropriate type in deeper unions. This is required, since the schema types must be consistenst for the whole row set.
cego 21.02.2019 2.43.3 Version released
cego 20.02.2019 2.43.3 Fix in CegoAttrCond::asConjunctionList, CegoExpr and CegoDistCursor to treat external expression references ( setting up for view objects in selection tableset ). The FLA for the external predicate expressions has to be setup by CegoExpr::setExternalFieldArrayList. Otherwise the FLA for the external expressions might be overwritten by the nested view object which leads to unknown attribute errors. As a sample to reproduce this problem check080 has been added.
cegojdbc 29.01.2019 1.9.4 Version released
cegojdbc 29.01.2019 1.9.4 Patch added in CegoDataRow, the byte buffer has to be reminded, to allow multiple calls for CegoResultSet.getInt/getLong/etc.
cego 24.01.2019 2.43.2 Version released
cego 24.01.2019 2.43.2 Some code cleanup in CegoRecoveryManager
cego 21.01.2019 2.43.1 Version released
cego 21.01.2019 2.43.1 Sync patches in CegoBufferPool:writeCheckPoint to keep database konsistent in several crash cases. The patches habe been checkd with the samples/chkdb/checkRandomCrash Script for about 1000 crashes and recoveries.
cegojdbc 15.01.2019 1.9.3 Version released
cegojdbc 15.01.2019 1.9.3 Added compatibility check for cego version 2.43. Since there not have been made any protocol changes, the driver already works with cego version 2.43.x
cego 13.01.2019 2.43.0 Version released
cego 12.01.2019 2.43.0 Adapt cego rc file to support cpdump and cleanup tableset start options
cego 12.01.2019 2.43.0 Introduced checkpoint dump option. With this option enabled at tableset startup time, first a dump of the dirty buffer pool pages is written. If written completely, the dump file is commited ( renamed ) and the recorded pages are physically written to the data file.
This option avoids inconsistent data file in case of a system crash during the checkpoint procedure. After system crash, the dump file is checked and if commited, the dumped pages are written again to the data files. This operation is idempotent and so can be repeated several times until the dump has been completely written to datafiles and is removed then.
lfcbase 07.01.2019 1.12.7 Version released
lfcbase 07.01.2019 1.12.7 Small patch in ShmTest.cc to avoid seg fault for MinGW "make check" ( Shared Memory is just dummy implementation for MinGW )
cego 05.01.2019 2.42.17 Version released
lfcbase 05.01.2019 1.12.6 Version released
cego 05.01.2019 2.42.17 Improvement for datafile cleanup added. For this, method CegoTableManager::cleanTableSet has been introduced which traces through all relevant database objects and marks allocated pages ( CegoFileHandler::commitPageEntry ). In case of a bitmap diff, the commited bitmap is written to the datafile.
This method allows a complete cleanup of data files after a crash where no allocation leaks result anymore.
The method has been proven with crashCheckAndRecovery
cego 04.01.2019 2.42.17 Further code cleanup in CegoFileHandler, Changed fixStat type from int to unsigned and size calculation for bitmap handling consequently to unsigned
lfcbase 04.01.2019 1.12.6 Introduction of constructor Chain(unsigned) and method asUnsigned
cego 02.01.2019 2.42.16 Version released
lfcxml 02.01.2019 1.2.10 Version released
dragon 02.01.2019 1.5.2 Version released
lfcbase 02.01.2019 1.12.5 Version released
cego 02.01.2019 2.42.16 Code cleanup to compile warning free with -Wall
lfcxml 02.01.2019 1.2.10 Changed generated XML parser code to virtual destructor
dragon 02.01.2019 1.5.2 Small code cleanup for clean compile -Wall. Changed to code generation with virtual destructor
lfcbase 02.01.2019 1.12.5 Code cleanup done with elimination of all warning thrown by -Wall
cego 02.01.2019 2.42.15 Version released
cego 02.01.2019 2.42.15 Small improvement in CegoBufferPool / CegoFileHandler for page backup handling ( consolidation if isPageBackup and isPageMarked to needPageBackup ). This should improve checkpoint performance
cego 01.01.2019 2.42.15 Introduced CegoBufferPool::optimizePool method. This method analyses the bufferppol and if possible, relocates often used pages page entries to its optimal position ( pageIndex = hashId ). This may result in paging out of other pages with lower fixstat values. The method is called during every checkpoint.
cego 29.12.2018 2.42.14 Version released
cego 29.12.2018 2.42.14 Quality check with 1000 loops in checkCrashAndRecovery performed successful ( for redo logfile size = 10000000, simple case, no transaction checkpoint split )
cego 29.12.2018 2.42.14 Added CegoTableManager::resetTemp & friends methods to perform a reset of the temp space after starting a tableset. This ensures, that allocation leaks caused by a system crash are removed
cego 29.12.2018 2.42.14 Redesign of CegoBTreeNode::valueExists compare handling. In some transactional cases, the old logic did not reach valid entries. For this a specific search down / search up inside the tree node has bee added.
cego 28.12.2018 2.42.14 More investigation with checkCrashAndRecovery. As a result, tastep information is now also stored in log entries ( CegoLogRecord ). This is required, to decide about the visibility of table data during recovery for open transaction. This is ugly stuff ...
Normally, this is a minor change to version 2.43.x since format of log files is incompatible now. But there is now impact for normal operation ( just in case of crash or backup recoveries ). So I leave the version to 2.42.14
cego 27.12.2018 2.42.14 More checks with checkCrashAndRecovery using larger transaction sizes. This lead to a transaction handling bug in CegoBtreeNode::isTupleVisible, tuple state must be NOT in state OBSOLETE to be visible. Otherwise, the small script breaks :
start transaction;
insert into t1 values ( 1, 'XXX');
update t1 set b = 'FFF' where a = 1; -- here comes a duplicate error
commit;
cego 26.12.2018 2.42.13 Version released
cego 26.12.2018 2.42.13 Several fixes added for recovery procedure. LOGREC_DELETE_COMMIT and LOGREC_UPDATE_COMMIT log message types have been removed, index rebuild is done at the end of recovery. This must be done, otherwise in case of open transactions, btree references might be corrupted.
This whole recovery process has been tested and verified with a powerful script ( samples/chkdb/checkCrashAndRecovery ), which generates random insert/update/delete operations on a table in transactional chunks ( using cgblow --mode=arb2 ) and the daemon is crashed and restarted. The table content before and after crash is compared then. The recovery procedure seems to be stable now.
cego 25.12.2018 2.42.12 Version released
cego 24.12.2018 2.42.12 Changed CegoBufferPool::bufferRelease in a way, that frees pages are just saved in a list. the pages are deleted from datafile if the next checkpoint is reached ( writeCheckPoint method ). This ensures transaction save handling also for clob recovery operations.
cego 29.11.2018 2.42.11 Version released
cego 28.11.2018 2.42.11 Remwork of CegoTableManager::dropObjectSynced method. Cleanup of implementation in a sense the useObject / unuseObject is consequently moved this level ( was not for procedures and views ). Also fixed issue of missing pDBMng->removeObject call
cego 20.11.2018 2.42.10 Version released
cego 20.11.2018 2.42.10 More restrictive checks for drop table with referenced foreign key added. Now it is not allowed to drop a table with existing key reference ( except self refering tables )
cego 19.11.2018 2.42.10 Added truncate command for truncating table object. Redesign also done for dropTable method in terms of log messages. Now one single log message in created for dropping a table ( instead of dedicated messages for each corresponding object like index, key, check, et )
lfcxml 12.11.2018 1.2.9 Version released
lfcxml 12.11.2018 1.2.9 Added missing includes string.h and stdlib.h in Element.cc and xmltext.cc required for clean Linux compile
cego 12.11.2018 2.42.9 Version released
cego 10.11.2018 2.42.9 Fix in CegoDistManager::createLocalDataTable, exception catched if primary could not be created and data table is removed in this case
Some method redesign in CegoBTreeManager and CegoBTreeNode for better handling of unique btrees. CegoBTreeNode::getChildPage now returns the upper page, for this also the method CegoBTreeValue::iEqualHigher has been introduced. Duplicates are checked with new introduced method CegoBTreeNode::checkDuplicate
cego 08.11.2018 2.42.8 Version released
cego 07.11.2018 2.42.8 Some improvements added regarding procedure exception handling
cego 06.11.2018 2.42.8 restrictions added for lock Table / unlock table command ( in CegoDatabaseManager::unuseObject ) to ensure, that unlock operations are just valid, if the corresponding table is locked by the calling thread
cego 06.11.2018 2.42.7 Version released
cego 06.11.2018 2.42.7 Adaptions made in CegoXPorter for new memory outstream mng in lfcxml 1.2.8
lfcxml 06.11.2018 1.2.8 Version released
lfcxml 06.11.2018 1.2.8 Changed memory management for outStream handle in Element ( is done by producer now )
lfcxml 04.11.2018 1.2.7 Version released
lfcxml 04.11.2018 1.2.7 Patch in XMLSuite to treat CDATA handling in a better way. The detection of CDATA endtoken ( "]]>" ) was not handled correctly, if moreData has to be called during read the endtoken.
To handle this, a lookahead has been introduced and as a consequence, the XML grammar has been modified ( read of endtoken is completely done by scanner, no more grammar symbols are needed anymore )
cego 02.11.2018 2.42.6 Version released
cego 02.11.2018 2.42.6 Small optimizsation done in CegoBTreeCursor. Instead of using releaseDataPtrUnlocked and claimDataPtrUnlocked method, now the combined method releaseAndClaimDataPtrUnlocked is used. In case of traversing tuples which are located in the same page, this avoids bufferFix / bufferUnfix operations, since the requested pageId is already fixed ( the releaseAndClaim method has also been modified for this )
cego 01.11.2018 2.42.5 Version released
cego 01.11.2018 2.42.5 Add avgFixTry attribute to bufferpool information to indicate the average number of fix tries
cego 01.11.2018 2.43.0 Recognized a fatal design issue with new primary key design : since the tuple data store within primary key has no static data pointer anymore, there no efficient and trivial way to handle further index object on this data. Actually, I have no idea how to deal with this issue, so I stopped progress of this version. Detected bugs ( detect duplicated primary in btree nodes and small issue in CegoXPorter ) are fixed with version 2.42.5
cego 28.10.2018 2.43.0 XML and binary export/import with new primary key structure works now
cego 27.10.2018 2.43.0 Primary key adaptions made for CegoXPorter.
Old XML format still can be imported ( primary key handling ) but NOT binary/plain export files
cego 27.10.2018 2.43.0 Fix added to CegoBTreeNode::getChildPage. For unique trees and primary trees, just the leaf nodes have been checked. Also the tree nodes have to be checked for duplicates, otherwise, duplicate entries may occur.
cego 27.10.2018 2.43.0 Implementation of CegoTableManager::createPrimaryKey added. This methods converts an existing table to a btree table ith primary key. The syntax for primary key creation has been changed ( Now : alter table xxx add primary key ( x, y, z ) )
cego 25.10.2018 2.43.0 More work on CegoBTreeManager and friends to complete insert for primary btree values ( split node )
Extension for CegoBTreeCursor to support traversation of tables with primary key. Logic basically works !
cego 23.10.2018 2.43.0 CegoBTreeManager and friends have been adapted for primary key handling. Inserting primary btree values basically works with first leaf page
cego 21.10.2018 2.43.0 Started with alternate primary key implementation. In this sense, the primary key stores the complete tuple data ( instead of datapointers to records in a table object ). In case of index traces, this avoids several bufferfix/bufferunfix operations and should result in a better database performance.
Still pretty much work ahead ...
cego 20.10.2018 2.42.5 Small optimization in CegoBufferPool::bufferFix, in step 1, the pool is locked not outside the loop over numtries. This decreased locking granularity but avoids some lock operation and should improve bufferpool performance
lfcbase 20.10.2018 1.12.4 Fix in NanoTimer, changed return value for getSum method to unsigned long long
cego 15.10.2018 2.42.4 Version released
cego 15.10.2018 2.42.4 Fix in CegoAction::execListCounter, changed scheme type to LONG_TYPE, which is important for fastserial protocol
lfcbase 15.10.2018 1.12.3 Version released
lfcbase 15.10.2018 1.12.3 In basecheck/ChainTest, the visibelLength Test has been disabled for MinGW compiles since setlocale seems to be broken in MinGW
cego 14.10.2018 2.42.3 Lock timeout definitions have been increased from 10000 to 30000 ms. ( CegoDefs.h )
cego 13.10.2018 2.42.3 In samples/rc/cego startscript added cego_protocol parameter to support fastserial mode
cego 13.10.2018 2.42.2 Version released
cego 13.10.2018 2.42.2 Version released
cego 13.10.2018 2.42.2 Fix in CegoAction::formatTableInfo, the field types for schema attributes PAGES and RELEVANCE have to changed to INT_TYPE, for fastserial protocol this is important
cego 01.10.2018 2.42.1 Post note : This patch contains a fix for datetime value encoding/decoding in CegoFieldValue. It still was done with 4 byte ( since version 2.40.0, cego uses 8 byte datetime length )
cegojdbc 01.10.2018 1.9.2 Version released
cegojdbc 01.10.2018 1.9.2 Completed data type handling in CegoDataRow
cego 30.09.2018 2.42.1 Version released
cego 29.09.2018 2.42.1 Fix in CegoTableManager::alterDataTable, for case RENAME, the schema is checked for already existing attribute name
cegojdbc 29.09.2018 1.9.2 Completed data type handling in CegoDataRow::valueAsString
cegojdbc 25.09.2018 1.9.1 Version released
cegojdbc 25.09.2018 1.9.1 Set TCP_NODELAY flag for sockets in CegoNet.java ( via Socket.setTcpNoDelay(true). Disabling the Nagle's algorithm leads to a much better network performance, since the latencies for any response packets is reduced significantly. ( For scenarios with heavy parallel load with many sustained queries, I observed speedup up to 3 or 4 times faster )
cegobridge 23.09.2018 1.5.0 Version released
cegobridge 23.09.2018 1.5.0 Added support for fastserial protocol
cegodbd 23.09.2018 1.5.0 Version released
cegodbd 23.09.2018 1.5.0 Added support for fastserial protocol
cegojdbc 23.09.2018 1.9.0 Version released
cego 23.09.2018 2.42.0 Version released
cego 21.09.2018 2.42.0 Fix in CegoDbThread::serveRequest, case GETBLOB and GETCLOB, the clobref still was not treated there, which lead to corrupted lob results if, the lob service is used ( normally via JDBC with the ResultSet.getBlob/getClob methods )
cego 20.09.2018 2.42.0 Small protocol modifications also made for serial protocol ( cego type id is now transfered to client ) which incompatibles serial protocol with earlier versions ( < 2.42.x )
cegojdbc 20.09.2018 1.9.0 Add support for fastserial protocol.
cego 19.09.2018 2.42.0 Added new network protocol fastserial for improved transfer performance from db client to db server ( and vice versa ). The fastserial protocal ist based on the native serial protocol but is no more plain ASCII/UTF. Instead field length information is transferred as plain integers. In this sense, the protocol is machine dependent.
cego 18.09.2018 2.41.7 Version released
cego 17.09.2018 2.41.7 Performance improvement in CegoQueryHelper::decodeFVL, changed to a more efficient way to setup field values
cego 17.09.2018 2.41.7 Performance improvement in CegoSelect::evalSelection, in case of aggregations and grouping, the field value is already setup by getFieldList method, so no need to iterate through pJoinBuf
cego 16.09.2018 2.41.6 Version released
cego 16.09.2018 2.41.6 Performance optimization in CegoObjectManager, changed CegoObjectManager::claimDataPtrUnlocked to return void, the CegoBufferPage is returned as a reference parameter, this avoid copy operation for the buffer page variable
cego 16.09.2018 2.41.6 Removed unused CegoFieldValue variables in CegoBTreeCursor methods inRange / fullMatch. This may impact cursor performance, since this methods are heavily called.
cego 15.09.2018 2.41.6 Optimization done in CegoTableManager::getClobs/getBlobs, lobList parameter changed to reference instead of returning the lobList. This avoids copy operation of the lobList during insert or update which might be pretty expensive
cego 14.09.2018 2.41.6 Fix/optimization in CegoBTreeValue, the static array _idxArray was removed. Instead, memory is allocated dynamically, when used ( just, if method valueFromSchema is called in btree insert case ). This should improve performance for btree cursor, since, no memory must be stacked, if a btree value variable is declared
cego 14.09.2018 2.41.6 Several code optimizations regarding method parameter handling ( rather try to use reference instead of return copy, e.g. changed CegoExpr::getFieldList and friends
cego 03.09.2018 2.41.5 Version released
cego 03.09.2018 2.41.5 Fix in CegoAttrCond::setup(ListT** pParentJoinBuf, int parentOffset, ListT** pJoinBuf, int offset), pAC->if isParentSetup() returns true, the loop must be continued, otherwise the _attrCompSet setup will be not completed. The following script returns a wrong result ( zero rows ):
drop if exists table t1;
create table t1 ( a int, b string(10), c string(10));

insert into t1 values ( 1, 'W0001', '001');
insert into t1 values ( 1, 'W0001', '003');
insert into t1 values ( 1, 'W0138', '002');
insert into t1 values ( 1, 'W0138', '001');

select * from t1 tx where exists ( select * from t1 ty where tx.a = ty.a and tx.c = ty.c and ty.b = 'W0001' ) and tx.b = 'W0138';
With the patch, result is
+-----------+-----------+-----------+
|        tx |        tx |        tx |
|         a |         b |         c |
+-----------+-----------+-----------+
|         1 |     W0138 |       001 |
+-----------+-----------+-----------+
cego 31.08.2018 2.41.4 Version released
cego 31.08.2018 2.41.4 Added database functions blobref and clobref to indicate the amount of lob references for a given lob
cego 30.08.2018 2.41.4 Fix in CegoDbThread::serveRequest, case PUTBLOB and PUTCLOB, the blobRef/blobSize setup was not handled correctly here
cego 30.08.2018 2.41.3 Version released
lfcbase 30.08.2018 1.12.2 Version released
lfcbase 30.08.2018 1.12.2 Fix in basecheck/DateTimeTest. Added an #ifdef MINGW32 for datetime values beyond 2040
cego 30.08.2018 2.41.3 Fix in CegoFactor::checkLob, the method implementation was still not complete. This might lead to problems during crash recovery of update operations
cegojdbc 29.08.2018 1.8.4 Version released
dragon 30.07.2018 1.5.1 Version released
dragon 30.07.2018 1.5.1 Fix in src/Main.cc and samples/gxmain-master.cc. Include of stdlib.h added, since this is needed for Linux compiles ( exit function )
In GoLangGenerator.cc scanner code was added to complete scanner state machine ( there still was missing some code for transition jumps )
dragon 27.07.2018 1.5.0 Version released
dragon 26.07.2018 1.5.0 Added code generation for GoLang. GoCode is generated, compiles and basically works Still some cleanup stuff required
cego 29.06.2018 2.41.2 Version released
cego 29.06.2018 2.42.2 Improvement for join optimizer in CegoSelect::consolidateConjunctionList. With the new introduced method CegoQueryHelper::checkIndexForPredicate the conjunction list elements are checked. This leads to a better join order, where index related predicates are evaluated first.
cego 19.06.2018 2.41.1 Version released
cego 18.06.2018 2.41.1 Performance optimization for bulk insert ( insert into t1 values ( 1, 'XX'),(2,'YY'),... ) Just with the last inserted tuple, the online redo logs are flushed to disk. For the the method paramter flushLog has been introduced for several methods ( CegoLogManager::logAction, CegoBufferBool::logIt, CegoTableManager::insertDataTable )
cego 17.06.2018 2.41.0 Version released
cego 16.06.2018 2.41.0 Modified lob handling in a way, that references to lobs are managed. This avoids expensive lob copy operations in case of update queries with lob values.
Since the lob reference counter is stored inside the lob, this incompatibles the datafile format with previous versions. In case of a tableset with lob values, an export and import is required for this version
Also lob recovery handling for update operations is fixed in this version ( CegoQueryHelper::encodeUpdRec and CegoQueryHelper::decodeUpdRec )
cego 14.06.2018 2.40.14 Patch in CegoProcedure::execute to treat cast from string to clob. For this the method parameters had to be expanded to provide TableManager and TableSetID which is required, to add a clob ( in case of a string to clob cast )
cego 14.06.2018 2.40.13 Version released
cego 13.06.2018 2.40.13 Fix in CegoDistCursor, class variable _useCache was not initialized, might lead to poor cursor performance, since the table data is cached although cache not enabled. Performance improvement for insert query. In case of array insert ( insert into t1 values ( 1, 'XX'), (2, 'YY'), (3, 'ZZ') ... ) insert operations are handled in a more efficient way
cego 12.06.2018 2.40.12 Version released
cego 12.06.2018 2.40.12 Modification for transaction handling in CegoDistManager::deleteLocalDataTable. Now the delete operation is executed inside a single transaction ( for any performance in the past, nested transactions had been executed in CegoTableManager::deleteDataTableEntrySynced, which leads to very poor delete performance )
cegojdbc 09.06.2018 1.8.3 Version released
cegojdbc 09.06.2018 1.8.3 Fixes in CegoSerialTokenizer for correct Umlauthandling.For this, the source string is converted to a byte array, since just in the array, the correct token positions can be detected ( Java treats umlaute as single characters )
cego 08.06.2018 2.40.11 Version released
cego 08.06.2018 2.40.11 Fix in CegoBTreeNode::operator = , _entrySize was not copied. This might lead to btree build problems
cego 08.06.2018 2.40.11 Fix in CegoBTreeNode::operator = , _entrySize was not copied. This might lead to btree build problems
cego 06.06.2018 2.40.10 Version released
cego 03.06.2018 2.40.10 In CegoFieldValue, small performance improvements for compare methods ( isEqual, isLess, isMore ... ) are made
cego 01.06.2018 2.40.9 Version released
cego 01.06.2018 2.40.9 In CegoFieldValue::fastComp for type VARCHAR now memcmp is used rather than strcmp. For type DATETIME, the compare is directly done on field pointers ( instead of copying to local unsigned long long variables )
cego 01.06.2018 2.40.9 Performance improvement in CegoAttrComp / CegoAttrCond classes. In the CegoAttrComp::setup method, the field value position is now also cached. So for subsequent method calls, the cached field array position is used instead of searching the position by looping through the array.
cego 25.05.2018 2.40.8 Version released
cego 25.05.2018 2.40.8 Modification of tableinfo information. Just object information is returned now without size information for each object. For large table configurations, this avoids response delay. To get size information, the command tablesize has been introduced. In this sense, tableinfo output is a subset of tablesize output.
cego 24.05.2018 2.40.7 Version released
cego 23.05.2018 2.40.7 Further performance improvement for advanced select queries. In CegoSelect, the attribute cache in not cleared anymore. This assumes to setup the the FLA structure with CegoExpr::setFieldListArray method. For this, the CegoExpr::evalField method had to be modified, since CegoSelect::getSchema had set up field list array with a different structure. Now the field information is given as an argument to getField, so the field list array has not to be set up.
It has been observed, that for sophisticated queries the performance improvement can be up to 30% depending on the number of join fields and joined tables.
cego 22.05.2018 2.40.6 Version released
cego 15.05.2018 2.40.6 Patch added for inner/outer joins with null condition in where clause ( e.g. select t1.a, t2.d from t1 left outer join t2 on t1.a = t2.c where t2.d is null ). The where condition has to be evaluated out of join, otherwise the may lead to wrong results. For this reason, n CegoDistCursor::joinSetup, the _innerCond and _outerCond variables are set to empty now in case of inner/outer join.
cego 13.05.2018 2.40.5 Version released
cego 11.05.2018 2.40.5 Small optimization for inner joins added. In CegoDistCursor::distSetup, _doEval is set to false, if the join type is inner join. For any outer joins, the evaluation is still required
cego 09.05.2018 2.40.4 Version released
cego 08.05.2018 2.40.4 Performance patch in CegoBTreeCursor::getFirst added. Instead of tracing each value in the first leaf node to find the entry point, this is now done by a binary search. This reduces search efforts from O(n) to O(log(n)) where n is the number of maximum index entries per btree leaf node.
This might reduce query execution time for complex joins with extensive use of btree cursors
cego 06.05.2018 2.40.3 Version released
cego 06.05.2018 2.40.3 Version released
cego 06.05.2018 2.40.3 Perormance patch in CegoBTreeCursor::traceLow / fullMatch / inRange methods. Instead of creating the field value as a local copy, the value reference from the btree value is used. This speeds up btree cursor trace performance about 20% faster
cego 04.05.2018 2.40.2 Version released
cego 02.05.2018 2.40.2 Improved version of CegoQueryHelper::decodeFVL, the assumption is, that column ids are coming in an increased order in field value list. So we do not need to loop over fvl to find the corresponding column id. Rather we iterate together with decoding buffer to perform decoding in O(n) ( instead of O(n*m) ) where n = number of matched rows and m number of columns in table
cegojdbc 30.04.2018 1.8.2 Version released
cegojdbc 30.04.2018 1.8.2 Improvement in class CegoNet::receiveDoc, If the message buffer exceeds, instead of an exception now the message buffer is reallocated. This avoids any definition dependency between database server and JDBC driver to correlate the appropriate buffer sizes.
cego 28.04.2018 2.40.1 Version released
cego 28.04.2018 2.40.1 New definitions in CegoDefs
#define NETMNG_MAXTUPLECOUNT 3000
#define NETMNG_MAXBYTECOUNT 10000000
Introdduction max maxByteCount allowed to increase MAXTUPLECOUNT, which should result in a better network performance. MAXTUPLECOUNT is still need for XML protocol ( legacy reason )
cego 28.04.2018 2.40.1 In CegoOutput, extended setDbHandle method to parameter maxBytePerMsg. In CegoDbHandler introduced method numCollected. So now also the amount of collected bytes is counted and is limited to a defined value per network message
cegojdbc 27.04.2018 1.8.1 Version released
cegojdbc 27.04.2018 1.8.1 Patch in CegoSerialTokenizer::nextToken , _pos has to be checked for less than _stream.length in while loop
lfcbase 27.04.2018 1.12.1 Version released
lfcbase 26.04.2018 1.12.1 Patch in File::flush for MinGW64, fsync functions seems not to be supported for MinGW64, so we flush stays empty
cegojdbc 25.04.2018 1.8.0 Version released ( supports cego 2.40.0 )
cego 25.04.2018 2.40.0 Version released. Please note, that this version is incompatible to previous versions in terms of datafile format and serial network protocol. A complete database export/import ( xml or sql dump ) is required for update. Futhermore lfcbase-1.12.0 base library is required.
lfcbase 25.04.2018 1.12.0 Version released
cego 25.04.2018 2.40.0 Performance patch in CegoTableManager::putClobData/puBlobData. The getNewFilePage method now is called with doAppend = true. In case of large filled database, clob import performance was pretty poor
cegojdbc 24.04.2018 1.8.0 Support added for cego version 2.40.0
cego 24.04.2018 2.40.0 Performance patch for CegoSerial class added. Now the token length is given to avoid any escape character handling. Please note, that this patch is incompatible to cego versions before 2.40
lfcbase 24.04.2018 1.12.0 Added Tokenizer::rawRead method to read a given number of bytes raw from the token stream
cego 23.04.2018 2.40.0 Support for lfcbase-1.12.0 API added. Please note, that this version is incompatible to previous database files. An XML export or SQL dump before update is required to be able to restore the database after upgrade
lfcbase 23.04.2018 1.12.0 Changed Datetime API, instead of provide asInt method, now the more advanced asLong method is implemented to handle 64 bit datetime values ( 2040 and beyond )
cego 20.04.2018 2.39.16 Version released
lfcbase 20.04.2018 1.11.9 Version released
cego 19.04.2018 2.39.16 Fix in CegoObjectManager::insertPageData, new data entry is checked now for maximum available space in page. This is done, if a new data page has to be allocated and the data entry still fits not into page
cego 19.04.2018 2.39.16 Added File::flush method to CegoLogManager and CegoFileHandler to synchronize log data and datafile data to disk
lfcbase 19.04.2018 1.11.9 Introduced new method File::flush to force synchronization of data to disk
cego 11.04.2018 2.39.15 Version released
cego 10.04.2018 2.39.15 Fix in dbcheck/expimpcheck, test plan was not set up correctly
In CegoXPorter and CegoExpImpStream, row export information was added again to indicate overall row export for each table
Fix added in CegoDbThread::serveRequest ( GETBLOB and GETCLOB case ) and CegoTableManager::getBlobData / getClobData chunkSize calculation. The existing calculation did not treat every boundary case.
cego 09.04.2018 2.39.14 Version released
cego 09.04.2018 2.39.14 Fix in CegoXPorter::writeRow and CegoXPorter::readRow for binary export and import of tables containing lob null values. lob null values must be identified by colLen unsigned long long = 0 instead of integer = 0
cego 09.04.2018 2.39.14 Fix in CegoXPorter::writeRow and CegoXPorter::readRow for binary export and import of tables containing lob null values. lob null values must be identified by colLen unsigned long long = 0 instead of integer = 0
cego 07.04.2018 2.39.13 Version released
cego 07.04.2018 2.39.13 Fixes in CegoLogManager, CegoRecoveryManager, CegoDistManager and CegoTableManager for LSN handling. Instead of saving the next LSN, now the current written LSN is recorded in CegoLogManager. This seems to be more natural, since a lot of methods set up the LSN to a value + 1. Also this fixes a mismatch between commited lsn and current lsn, which leads to a tableset recovery during startup in any case ( occured with version 2.39.9 )
cego 07.04.2018 2.39.13 Introduced CegoTransactionManager::getCrashAffectedTables method. In case of a crash recovery, all transaction affected tables have to be analysed for index objects. Before finishing transactions, the index objects have to be invalidated ( since they might be corrupted ) and after completion of transactions they have to be recreated. This is done now in CegoTableManager::finishOpenTransaction
lfcbase 06.04.2018 1.11.8 Version released
lfcbase 06.04.2018 1.11.8 Extensions made for Chain::toLower and Chain::toUpper methods. To treat multi character strings, a conversion is made to wide characters using mbstowcs libc function. case conversion now is done with towupper / towlower wide character function. Strings are then converted back to multicharacters using wcstombs function.
This allows upper/lower case conversion now for Umlaute ( öüä ) which have actually not been treated
cego 05.04.2018 2.39.12 Version released
cego 05.04.2018 2.39.12 Patch in CegoClient to catch format exceptions like "Invalid datetime string <0> for format <%d.%m.%Y %H:%M:%S>". This may happen, if on server side bad union selects are defined like
create view v1 as
select a as a, b as b from t1
union all
select a as a, 0 as b from t2;
where b is a datetime data type. In this case, bad formatted strings are occured on client side, which are catched now.
cego 05.04.2018 2.39.12 Patch in CegoDatabaseManager::useObject to support lock delay values > 1 sec. The DBM_LOCKDELAY value in CegoDefs has now increased to 2500 msec. In some cases for heavy updates ( e.g. clob updates ) this might be useful to avoid ugly exclusive lock delay messages in database log file
cego 04.04.2018 2.39.12 Fix in CegoTableManager::updateTuple, if the update fails ( this might happen, if another transaction actually updates the corresponding tuple ), any allocated lob values are freed now. Otherwise the for the lob values are data pages allocated with no more references
cego 31.03.2018 2.39.11 Version released
cego 31.03.2018 2.39.11 Cleanup stuff
cego 31.03.2018 2.39.11 Cleanup stuff
cego 31.03.2018 2.39.10 Version released
cego 31.03.2018 2.39.10 Improvements were made for log handling, the logIt method was moved from CegoTableManager to CegoBufferPool. This allows a more adequate locking of the logging actions. For this the tsLock array has been removed from CegoTableManager and lmLock array has been set up in CegoBufferPool. Since checkpoint writing occurs in CegoBufferPool ( which is also relevant for loging operations ), the logging method is now part of CegoBufferPool.
The logAction method in CegoLogManager has also been improved in a way, that a log buffer is not allocated for each logging operation anymore. Instead, a logBuf array has been defined for all tablesets and the logBuf is reallocated, if the current logging record exceeds the log buffer.
cego 29.03.2018 2.39.9 Version released
cego 29.03.2018 2.39.9 Added fixes for recovery procedure in CegoTableManager. Now the LSN is allocated at the beginning of critical operation to avoid double operations in case of a forced checkpoint. For this the CegoLogManager::nextLSN method has been introduced. Now it is no more ensured that the log is written with increasing LSN, so some logical parts of the recovery procedure in CegoRecoveryManager has been changed.
In CegoBufferPool, the writeCheckPoint method still returned int value. This has been changed to unsigned long long
cegojdbc 23.03.2018 1.7.9 Version released
cegojdbc 22.03.2018 1.7.9 Improvements for clob handling ( put clob to database )
cego 19.03.2018 2.39.8 Version released
lfcbase 18.03.2018 1.11.7 Additional fix to this release : Added regfree call to Matcher destructor. Missing this call seems to cause a small memory leak
cego 18.03.2018 2.39.8 Fix for memory leak in CegoPredDesc, pMatcher has not been cleaned up
lfcbase 18.03.2018 1.11.7 Version released
lfcbase 18.03.2018 1.11.7 Fix for memory leak in TreeT and AVLTreeT. The = operator implementation did not empty the tree before copy.
cego 09.03.2018 2.39.7 Version released
cego 09.03.2018 2.39.7 Fix in CegoRecoveryManager::recoverCurrentTransactionLog for the INSERT case. For the blob/clob handling, the lobREf values have not been set up correctly. This might lead to problems for table recovery with more than one lob row ( e.g. table t1 ( a blob , b clob )
cegojdbc 08.03.2018 1.7.8 Version released
cegojdbc 08.03.2018 1.7.8 Fix in CegoNet.closeSession, disconnect method call was added to close finally the socket descriptor. Otherwise this may lead to socket leaks with the error message "too many open sockets"
cego 08.03.2018 2.39.6 Version released
cego 07.03.2018 2.39.6 Some clob related fixes in CegoQueryHelper::decodeNativeFVL / decodeFVL which relevant for recovery handling
cego 07.03.2018 2.39.6 Fix in CegoTableManager::deleteDataTable, pBlock has to be checked for null value, otherwise crash recovery might crash. ( bug came with 2.39.0 to check for pBlock->getTriggerValueList )
cego 06.03.2018 2.39.5 Version released
cegojdbc 06.03.2018 1.7.7 Version released
cegojdbc 06.03.2018 1.7.7 Fix in CegoNet.getClob, the full msgSize has to put to setBytes method, otherwise large are getting corrupted in case of multiple message chunks
cego 06.03.2018 2.39.5 Bug fix in CegoAction::reallocateStringBuf, in the memcpy call, just the previous stringBufLen has to be copied ( _stringBufLen - MAXSTRINGLEN ). This bug might lead to seg fault in case of large parser input ( e.g. clob strings )
cego 06.03.2018 2.39.5 In CegoQuery for insert and insert-by-select case, allocated blob and clob data ( by CegoQueryHelper::prepareFieldValue ) is cleaned now if any exception occurs
cegojdbc 05.03.2018 1.7.6 Version released
cegojdbc 05.03.2018 1.7.6 Fix in CegoClob method setBytes, The copy operation was not correctly done
cego 05.03.2018 2.39.4 Version released
cego 05.03.2018 2.39.4 Small bug fix in CegoDistManager, which came up with version 2.39.0. In method deleteLocalDataTable, the variable delCount was declared two times, which lead to a result of 0 tuples deleted in any case
cego 03.03.2018 2.39.3 Version released
cego 02.03.2018 2.39.3 Small improvement in CegoDbThreadPool. For a better db thread load value calculation, the request queue is no more locked while no incoming requests. Instead the QUEUEDELAY parameter has been increased to a default value of 200 msec to reduce db thread cpu load while idle. Now the db thread have a good chance to report idle time to the db thread pool
cego 02.03.2018 2.39.3 Some boring code cleanup done
cego 02.03.2018 2.39.3 In CegoQuery::execute, changed order for setBlock and setFieldListArray for INSERT_QUERY case
cegobridge 01.03.2018 1.4.0 Version released
cegobridge 01.03.2018 1.4.0 Adaptions for cego-2.39
cego 01.03.2018 2.39.2 Version released
cego 01.03.2018 2.39.2 Fix in CegoTableManager::updateTuple, while setting up expression list, field list array must be setup BEFORE block ist set, since field list is needed by block setup ( in case of subqueries for prepare )
cegojdbc 01.03.2018 1.7.5 Version released
cegojdbc 28.02.2018 1.7.5 Added implementation for several clob relevant methods and like ResultSet.getClob, Clob.getCharacterStream and others
cego 27.02.2018 2.39.1 Version released
cego 27.02.2018 2.39.1 Fix in CegoQueryHelper::encodeFVL, for blob/clob values lists, the corresponding index variables ( blobidx/clobidx ) have not been increaed while encoding lob data. This might lead to invalid results and seg faults in case of multiple lobs values in one insert/update operation.
cego 26.02.2018 2.39.0 Version released
cegojdbc 26.02.2018 1.7.4 Version released
cegojdbc 26.02.2018 1.7.4 Consolidation of methodes CegoNet::connect and CegoNet::requestSession. This is just an small optimization for connection establishment
cego 25.02.2018 2.39.0 Trigger implementation basically completed
cego 24.02.2018 2.39.0 Trigger feature basically works for on insert. Some expansions for triggerValueList handling have to be done in CegoProcBlock class. This is for refering to ( insert ) values from the triggering statement
cego 24.02.2018 2.39.0 Initial trigger implementation done, classes CegoTrigger and CegoTriggerObject added and integrated, Parser expansion for corresponding trigger commands done. Code compiles
cego 23.02.2018 2.39.0 Started with trigger implementation
cego 23.02.2018 2.39.0 Introduced table locking statements to set an explicit lock on a table ( e.g. for update synchronisation ). This feature replaces the "set update sync on/off" command
cego 22.02.2018 2.38.20 Version released
cego 22.02.2018 2.38.20 For heavy update operations on tables with btrees used embedding transactions, duplicate btree errors may occur. This is caused by not checking corresponding tuple states. To solve this problem, the following fixes have been done : - Fix in CegoTableManager::checkBTreeIntegrity : The tuple state for found entries has to be checked if state = COMMITTED - Fix in CegoBTreeNode:checkForAffected ( was checkForDeleted before ) : The tuple state has already checked for state INSERTED if, tid != dataTid
cegojdbc 21.02.2018 1.7.3 Version released
cegojdbc 21.02.2018 1.7.3 Improvements made regarding network IO handling. Instead of using PrintStream for socket output, now native ByteStream is used. It has been observed, that PrintStream seems to have some overhead and slows down network communication significantly. Many parallel threads writing sockets in parallel may lead to an hanging IO ( observed on SUSE Linux ) Furthermore, the P() and V() semmaphore methods in CegoNet have been removed. Instead, for the critical regions, synchronized methods are used now. At all, this patch lead to a much better driver performance, especially for linux based systems
cego 10.02.2018 2.38.19 Version released
cego 10.02.2018 2.38.19 Fix in dbcheck/check065.sql for union sql in view.There must be set up aliases for attributes in selection now
cego 02.02.2018 2.38.18 Version released
cegojdbc 02.02.2018 1.7.2 Version released
cegojdbc 02.02.2018 1.7.2 Switched to sl4j API
cego 30.01.2018 2.38.18 Fix in CegoSelect::prepare, expression alias in select list are checked now for union selects. Alias definition in select expression list should be identical for all select statements in union
cego 28.01.2018 2.38.17 Version released
cego 28.01.2018 2.38.17 Fix in CegoTableManager::createForeignKey, for empty tables, referenced attributes names have not been checked. This might lead to invalid key objects.
lfcbase 18.01.2018 1.11.6 Version released
lfcbase 18.01.2018 1.11.6 Code cleanup class Net and NetHandler ( eg. changed from bind to ::bind since fpr FreeBSD 12, compile problems occured without namespace definition
cego 30.12.2017 2.38.16 Version released
cego 29.12.2017 2.38.16 Optimization for procedure load in CegoFunction::evalFieldValue ( case USERDEFINED ), procedure is just loaded as a dedicated instance ( via loadProcedure method ), if pMasterBlock is set. This avoids ( expensive ) dedicated load, if the procedure is still not in use by the corresponding thread. So just for recursive procedure calls, the dedicated load happens.
cego 26.12.2017 2.38.16 Added dbcheck/check072.sql. This implements the calculation of fibonacci numbers using stored procedures as a demonstration for massive recursive procedure calls
cego 22.12.2017 2.38.15 Version released
cego 21.12.2017 2.38.15 Introduced QUEUEDELAY ( in usec ) config parameter to adjust queue delay in database xml file. This allows to throttle down database response time for incoming connection requests and minimize CPU load
cego 21.12.2017 2.38.15 Increased NETMNG_QUEUE_DELAY to 1000000 ( 1 ms ) to minimize CPU load
cego 20.12.2017 2.38.14 Version released
lfcbase 20.12.2017 1.11.5 Version released
cego 20.12.2017 2.38.14 Fix in CegoAttrCond::getIndexCond, like and no like comparisons must be filtered out for new btree cursor tracing logic
lfcbase 20.12.2017 1.11.5 Stability patch for strptime implementation ( MinGW only )
cego 19.12.2017 2.38.14 Further optimization done in CegoBTreeCursor, introduced methods traceLow and inRange to treat btree comparison in a more efficient way
cego 18.12.2017 2.38.13 Fixed memory lead in CegoDistManager destructor ( _pPA was not deleted )
cego 15.12.2017 2.38.12 Since I had some paranoia regarding btree index cursor evaluation, I made some additional tests with bigger tables, multi-dim btrees and sophisticaed queries. All result sets are identical with the results by retrieving the data without btree ( full table scan ). So all looks good with this patch :)
cego 14.12.2017 2.38.12 Version released
cego 14.12.2017 2.38.12 Optimization in CegoBTreeCursor::getNext. Instead of calling getNext in a recursive way, this is now done in a iterative way. This might avoid heavy stacking in case of special query constraints ( e..g multi dimensional btrees and range conditions like a > 400 and b betweeen 'AAA' and 'DDD' )
cego 12.12.2017 2.38.11 Version released
cego 12.12.2017 2.38.11 More rework for btree evaluation in CegoBTreeCursor
cego 12.12.2017 2.38.11 Small optimization in CegoAttrCond::checkIndex, removed primary flag, since this is done now by attribute ordering. This leads to full index trace match instead of trace with index support and so, additional unnecessary predicate evaluation is avoided.
cego 10.12.2017 2.38.10 Version released
lfcbase 10.12.2017 1.11.4 Version released
cego 10.12.2017 2.38.10 Changed in CegoAttrCond compSet from SetT to TreeT. This is required, since we need the ordering in the set.
lfcbase 10.12.2017 1.11.4 Fixes in TreeT class, changed methods First, Next, isEmpty and compare operators to const
cego 10.12.2017 2.38.10 Fix in CegoBTreeCursor, CegoAttrCond and CegoAttrComp, for conflicting cursor conditions ( e.g. a = 4 and a < 1 ), the cursor evaluation failed, since just the primary condition was treated.
For CegoBTreeCursor, the method fullMatch has been introduced, to make an final evalution in case of multi conditions.
There was also introduced a ordering for CegoAttrComp set in CegoAttrCond to treat more constraint conditions at the beginning ( EQUAL before LESS_THAN before NOT_EQUAL and so on )
cego 09.12.2017 2.38.10 Fix in CegoDistManager, we have to use a dedicated parser for loadView and loadProc methods. Otherwise compilation may fail in case of nested objects ( e.g. a view which references another view object)
cego 09.12.2017 2.38.9 Version released
cego 08.12.2017 2.38.9 Modification in CegoFunction::evalFieldValue. To allow recursive calls of user defined functions and procedures, dedicated procedure instances are created for each call. This is done by parsing the procedure text via CegoAction
cego 07.12.2017 2.38.8 Version released
cego 07.12.2017 2.38.8 Version released
cego 07.12.2017 2.38.8 Introduction of new functions ascii ( get ascii character for numeric value ) , ldiv and lmod ( div and mod operation for long values )
cego 02.12.2017 2.38.7 Version released
lfcbase 02.12.2017 1.11.3 Version released
lfcbase 01.12.2017 1.11.3 Improvements made for dedicated strptime implementation ( pretty old stuff, found this several years ago anywhere in the net ) The function did not return null in case of unparsable date values. This code is just used for MinGW compiles since there is no implementation in the Standard C library available.
cego 01.12.2017 2.38.7 Fix in CegoXPorter::readTableObject, the defintion for MAXROW BUF still was defined locally and rowLen was noch checked.
Optimization in CegoFieldValue::decode, memory was allocated via malloc, rather _staticBuf should be used for performance reasons. _isLocalCopy was not set to true
cego 29.11.2017 2.38.6 Version released
lfcbase 29.11.2017 1.11.2 Version released
cego 29.11.2017 2.38.6 Fix in CegoFunction::getId and CegoSelect::getQueryId : with enabled query cache, the following select is cached
  select nextcount(mycount);
Since nextcount is a modifying operation, this is not a good idea. To avoid caching, CegoFunction now throws an Exception if nexcount / setcount function calls are detected during getQueryId. For these cases, the query id ignored for caching
lfcbase 26.11.2017 1.11.2 More detailed exception messages for BigDecimal and BigInteger
cego 25.11.2017 2.38.5 Version released
cego 25.11.2017 2.38.5 Fix in CegoBTreeValue::valueFromSchema, introducded method getReservedLength to return fixed value length for type fixed and decimal. Since for decimal and fixed type just the dimension is stored in CegoField::getLength, we must define a reserved area for those types. This is done now with constant definition RESERVED_BTREE_FLOATLEN in CegoDefs.h
cego 25.11.2017 2.38.4 Version released
cego 23.11.2017 2.38.4 Improved ordersize calculation in CegoOrderSpace:insertTuple. Now the following formula is used :
int s = sizeof(fv);
if ( fv.getLength() > STATICFIELDBUF )
   s += fv.getLength();
orderEntryLen += s; 
The catches the base memory usage for the instance but also the dynamic allocated part
cego 22.11.2017 2.38.3 Performance optimization done in CegoOrderSpace. Instead of storing the CegoField list for the result tuple in CegoOrderNode, just the values are stored there. The order cursor now gets the schema with the constructor and build the CegoField List in the getFirst / getNext methods. This seems a huge amount of heap space, which is dynamically allocated during the sorting procedure ( sortareasize parameter ).
Especially for large ordering result sets this saves significantly memory and improves performance.
cego 21.11.2017 2.38.2 Version released
cego 21.11.2017 2.38.2 Fix in CegoXMLSpace::setTSSortAreaSize, changed type from int to unsigned long long, otherwise overflow may occur for large sort area size configurations
cego 19.11.2017 2.38.1 Version released
cego 18.11.2017 2.38.1 Fix in CegoPredDesc::decode, loop variable i for IN/NOTIN case was not initialized
Fix in CegoAction::execCheckCreate, check contraints are checked for contained subselects. subselects are ( still ) not supported since the CegoCheckOject::decode method can not provide a valid tablemanager instance ( it is called from CegoObjectManager )
cegobridge 16.11.2017 1.3.0 Version released
cego 16.11.2017 2.38.0 Version released
cegobridge 15.11.2017 1.3.0 Adaptions made for modified cego-2.38.0 API with extended CegoDatabaseFormatter::formatPred method ( exprList was added for new introduced select in ( expr list ) predicate )
cego 15.11.2017 2.38.0 Introduced predicate clause for select .. in ( expr, expr, ... ),
e.g. select * from t1 where a in ( 1, 2, 3 ); This was still not implemented but is part of standard SQL
cego 15.11.2017 2.37.4 Fix in CegoSelect::clone, pUnionSelect was not cloned, which might lead to seg faults
cego 15.11.2017 2.37.3 Version released
cego 15.11.2017 2.37.3 Adaption in CegoMain to also parse comment lines in a more sophisticated way ( same as in CegoMain ), just relevant for server batch mode
cego 14.11.2017 2.37.3 Optimization in CegoDistCuror::joinSetup, the join predicate is now analysed in a way, that a condition list is created ( via makeCNF and createCondition methods in CegoQueryHelper ). The condition list then is analysed to achieve a better cursor condition which results in improved index usage
cego 14.11.2017 2.37.2 Version released
cego 13.11.2017 2.37.2 Fix in CegoClient, the new comment logic by using Tokenizer does not work ( '-' characters are detected as comment tokens ). Code replaced by using posStr chain function
dragon 10.11.2017 1.4.3 Version released
dragon 10.11.2017 1.4.3 Changed generated Java code to abstract class with abstract methods, which have been implemented by the parser action subclass. This seems to be a cleaner modeling
cegojdbc 10.11.2017 1.7.1 Version released
cegojdbc 10.11.2017 1.7.1 Support added for jdom2 and simple log4j
cegobridge 10.11.2017 1.2.1 Version released
cegobridge 10.11.2017 1.2.1 New generated configure script with libtool-2.4.6
dragon 10.11.2017 1.4.2 Version released
dragon 10.11.2017 1.4.2 New generated configure script with libtool-2.4.6
cego 10.11.2017 2.37.1 Version released
cego 10.11.2017 2.37.1 New generated configure script with libtool-2.4.6
lfcxml 10.11.2017 1.2.6 Version released
lfcxml 10.11.2017 1.2.6 New generated configure script with libtool-2.4.6
lfcbase 10.11.2017 1.11.1 Version released
lfcbase 10.11.2017 1.11.1 New generated configure script with libtool-2.4.6
cegojdbc 08.11.2017 1.7.1 Upgrade of 3rd party jars ( JDOM-2.0.6 and log4j ( switch to slf4j ))
cegobridge 07.11.2017 1.2.0 Version released
cegodbd 07.11.2017 1.4.0 Version released
cego 07.11.2017 2.37.0 Version released
lfcbase 07.11.2017 1.11.0 Version released
cego 07.11.2017 2.37.0 Added show parameter admin command to show all tableset independent database parameters
lfcbase 05.11.2017 1.11.0 Layout improvements in Pager class
cegobridge 05.11.2017 1.2.0 Support added for lfcbase-1.11.0
cegodbd 05.11.2017 1.4.0 Adaptions for support of lfcbase-1.11.0
cego 04.11.2017 2.37.0 Support for lfcbase-1.11.x with new Net API. The parameter maxSendLen ist still a constant in CegoDefs.h
Improvements added for CegoXMLSpace::setPerm, for existing permissions, just tableset, filter or right can be set up now,
e.g set permission p1 with right=WRITE for role1 just sets the right value for permission p1 to value WRITE, all other values are unchanged
lfcbase 04.11.2017 1.11.0 Changed constructor for Net and NetHandler class to setup maxSendLen. Since this changes the API, minor release level has been increased
cego 04.11.2017 2.36.6 Version released
cegobridge 04.11.2017 1.1.7 Version released
cego 04.11.2017 2.36.6 Improvements for cgclt, added pipe mode to read input from stdin
Now comments are allowed also after delimiter token, e.g.
create table t1(a int); -- a sample table
cegobridge 03.11.2017 1.1.7 Added index creation statement for MySQL datatype.
Treated are primary, unique and non-unique index objects
cego 03.11.2017 2.36.6 Error message correction in CegoSelect
cego 03.11.2017 2.36.5 Version released
cego 03.11.2017 2.36.5 Improvements for cgblow simulation mode added
cego 03.11.2017 1.10.3 Version released
lfcbase 02.11.2017 1.10.3 Value change of NetHandler::SENDLEN from 1024 to 8192 On FreeBSD based systems, the lower value lead to a poor network performance for large mesages, since subsequent send calls seem to slow down the network throughput. On OSX and Windows/MinGW64 based systems, this effect has not been observed but a sendlen of 8192 seems to be no problem also for these systems
cegobridge 01.11.2017 1.1.6 Version released
cego 01.11.2017 2.36.4 Version released
lfcbase 01.11.2017 1.10.2 Version released
cego 01.11.2017 2.36.4 Fix in CegoSelect::nextTuple, before adding an entry to the query cache, it has to be checked, if any tables from foreign tableset are referenced in the query. If so, no cache entry is made, since table changes for foreign tables are not detected.
cego 01.11.2017 2.36.4 Improved error messages for invalid database objects
cego 01.11.2017 2.36.4 Decreased shutdown delay time by reducing net delays for all thread pools and optimized mediator thread wait procedure
cego 01.11.2017 2.36.4 Completely removed the nologging option for import actions. Logging is disabled in any case now
cego 01.11.2017 2.36.4 Optimization added for log handling. During ( xml ) import, logging is completely deactivated, after import is completed, log is started again and a checkpoint is written.
Since import can be repeated in case of a system during import, nothing gets lost. Deactivating logging increases import speed and avoids side effects
cego 31.10.2017 2.36.3 Version released
cego 31.10.2017 2.36.3 Changed recovery strategy for existing btree / avl index objects. Before creating an index object, it is checked if exists. If exists, it is dropped and recreated. This seems to be a more stable strategy, since it may occur, that index objects still exist for several reasons.
cego 31.10.2017 2.36.3 Fix in CegoTableManager::createBTree : we must create log entry BEFORE creating the index content, since during index build, checkpoints may occur.
The checkpoint writes the btree object already to database and if db crashes after checkpoint, the index already exists.
This causes then "btree already exists" error during recovery
cego 31.10.2017 2.36.3 Added dbcheck/check063 to verify FLA cache handling
cego 30.10.2017 2.36.2 Version released
cego 30.10.2017 2.36.2 Fix in CegoFactor::setFieldListArray, the _flaCached variable has to be set to false, if _pFLA is set to a different value. Otherwise, we might refer to invalid memory, which results in core dump
lfcbase 30.10.2017 1.10.1 Version released
cegobridge 30.10.2017 1.1.5 Version released
lfcbase 29.10.2017 1.10.1 Added File class constructor to support STDIN read mode
cego 03.10.2017 2.36.1 Version released
cego 02.10.2017 2.36.1 Added signal handler to CegoAdmAction. Now, ( long ) running tableset export and import requests can be aborted in a controlled way via Ctrl-C command.
cego 30.09.2017 2.36.1 Fix in CegoXPorter, export file will be removed, if any exception occurs. So it is ensured, that the written export file is consistent and complete
cego 30.09.2017 2.36.1 Small fixes in CegoXPorter for CLOB handling ( was not checked for plain exports )
cego 29.09.2017 2.36.0 Version released
cego 29.09.2017 2.36.0 Adding missing export / import messages to CegoXPorter
cego 27.09.2017 2.36.0 Changed btree cache enabling syntax. Instead of a dedicated switch command ( set btree cache on / off ), the cache option now is directly given with the create btree command ( e.g. create btree b1 on t1(a) cached )
cego 27.09.2017 2.35.12 Version released
cego 27.09.2017 2.35.12 Improvement in CegoBufferPool::calcSegment for segid calculation. It has been recognized, that with the current calculation ( pageid % numsegment ) not all slots can be reached for special buffer pool configurations.
The formula has been changed ( to ( pageid / numpages ) % numsegment )
cego 26.09.2017 2.35.12 Fix in CegoTableManager::createBTree, pC object cursor has to be set to 0, otherwise in case of abortion a seg fault occurs
Changed default value for btree cache enabling to false
cego 24.09.2017 2.35.11 Version released
cego 24.09.2017 2.35.11 Completed pointer cleanup in CegoQueryHelper::evalPredicate, added check061 to check pointer cleanup
cego 17.09.2017 2.35.10 Version released
cego 17.09.2017 2.35.10 Fix in CegoQueryHelper::evalPredicate, for all predicate types, the field array value has to be reset to 0, otherwise seg fault my occur since invalid references might be used
cego 17.09.2017 2.35.9 Version released
cego 17.09.2017 2.35.9 Fix in CegoBufferpool::writeCheckpoint, in case of an locking exception ( lockBufferPool ), the pool must be released in any case. For this the CegoLockManager::lockBufferPool and CegoLockManager::unlockBufferPool have been modified in a way, that lockBufferPool saves the current sema index ( _poolRangeLock ) which is later used for the unlocking call.
cego 16.09.2017 2.35.9 Timeout parameter for bufferpool lock reduced to 60 seconds.
Optimization in CegoBufferPool:bufferfix for minHashId calculation in step 2, there was an unneeded locking operation for the minhashId, which was already locked by the mail loop
cego 12.09.2017 2.35.9 Small format fix in CegoProcCreateStmt ( missing indent )
Add header row out put for client raw mode ( attribute names )
cego 09.09.2017 2.35.8 Version released
cego 09.09.2017 2.35.8 Bug fix in CegoDistCursor::getTuple, for the LEFTOUTER case and moreRight conditions, the right table cursor was called double time ( native and with nextRight ). The native call has to be removed since this may lead to strange effects actually just observed for mingw compiles
cego 09.09.2017 2.35.8 Long type correction in CegoGroupEntry ( just relevant for MINGW compiles )
cego 08.09.2017 2.35.7 Version released
cego 08.09.2017 2.35.7 Change in several files from type long to type long long. This seems to be irrelevant on native Linux/OSX/FreeBSD compiles but has impact for mingw compiles, since sizeof(long) != sizeof(long long)
cego 06.09.2017 2.35.6 Version released
cego 06.09.2017 2.35.6 Fix in CegoPredDesc for INSUB and NOTINSUB constructor + clone method. There was a confusing with the isNegated flag which has been corrected ( also in using class CegoAction ) The wrong negation might lead to wrong query result for views using subselect with in or not in subselects
cego 05.09.2017 2.35.5 Version released
cego 05.09.2017 2.35.5 Fix in CegoQueryHelper::aggregateTuple, in case of min-Aggregation, wrong results may occur, if null values have to be treated. Since null value handling is now treated inside CegoFieldValue, some code here was obsolete.
cego 03.09.2017 2.35.4 Version released
cego 02.09.2017 2.35.4 Added tuple information command tupleinfo to indicate tuple state information for a given table ( COMMITTED, INSERTED, DELETED, OBSOLETE )
Fix in CegoTransactionManager::commitTransaction and CegoTransactionManager::rollbackTransaction, in case of a crash recovery the taList does not contain any transaction entries, but the rollback segments have to be checked in any case for entries to process. Otherwise, the transaction will not be completed
cego 02.09.2017 2.35.3 Version released
lfcxml 02.09.2017 1.2.5 Version released
lfcxml 02.09.2017 1.2.5 Small improvement in XMLSuite::nextChar to check for non-ASCII characters
cego 02.09.2017 2.35.3 Fix in CegoTableManager::finishOpenTransaction, the transaction id for the corresponding tableset must be set to zero, otherwise in case of crash recovery procedures a transaction id might be active and the open transactions are not completed correctly
cego 25.08.2017 2.35.2 Version released
cego 25.08.2017 2.35.2 Fix for a bad patch in 2.35.1, In CegoSelect::clone also the pCache variable has to be copied ( we previously done by calling setTabSetId )
cego 24.08.2017 2.35.1 Version released
cego 24.08.2017 2.35.1 Fix in CegoSelect::setProcBlock, pBlock was not setup for _pPred
This might result in wrong query results within stored procedures with select statements which refer to procedure variables
Changed index recovery handling in a way, that index and btree objects are rebuild immediately instead of invalidating them. This leads to a much better recovery performance in case of expensive queries where index use is needed for fast evaluation
cego 22.08.2017 2.35.0 Version released
cego 22.08.2017 2.35.0 Introduced simple selects, e.g. select 1, select sysdate, etc for select queries without any object access
This might be useful for example for database connection validation queries
cego 20.08.2017 2.34.3 Version released
cego 20.08.2017 2.34.3 The previous problem regarding query cache is a result of the new introduced select cloning. The extended query id string should solve the problem
cego 20.08.2017 2.34.3 Fix in CegoSelect::getId, the values of the parent join buffer have also be added to the query id string, otherwise, nested queries which references attributes to parent join buffer can not be distinguished
cego 19.08.2017 2.34.2 Version released
cego 19.08.2017 2.34.2 Fix in CegoDistCursor to support multiple view references in a query ( e.g. select a from v1 where exists select * from v1 ... ) In the past, this might lead to infinite loops, since just the view select reference was used. Now the reference is cloned.
The usage of clones results in several fixes for the CegoSelect::clone and underlying clone methods
cego 17.08.2017 2.34.1 Version released
cego 16.08.2017 2.34.1 Fix in CegoDistManager::checkKey ( used for verify tableset admin commend ). Check for foreign key has been redesigned
cego 15.08.2017 2.34.1 Fix in CegoBTreeCursor::getFirst, _pAttrCond has to be checked for 0, otherwise a core dump may occur ( detected with verify tableset admin command )
In CegoViewObject::toChain() the view object reference string has to return complete information including the tableset. Otherwise, references to foreign tableset objects with the vie will not work correctly.
cego 12.08.2017 2.34.0 Version released
lfcbase 12.08.2017 1.10.0 Version released
cego 12.08.2017 2.34.0 Introduced new date function newdate with optional numeric input. If used with year and month input, this can double the speed for date construction ( no string parsing required )
cego 11.08.2017 2.34.0 - Use of new introduced lfcbase datetime constructor to create datetime values with numeric input ( year, month, day, hour, minute and second ) for more efficient value handling
- Fix in CegoTypeConverter::getTypeLen for LONG_TYPE values, it should be size of(long long) instead of sizeof(long). This impacts MINGW compiles, since sizeof(long) ist just 4 bytes
- Changed CegoTypeConverter methods to static
lfcbase 11.08.2017 1.10.0 Added Datetime advanced constructor for more efficient datetime construction
cego 06.08.2017 2.33.23 Version released
lfcbase 06.08.2017 1.9.8 Version released
cego 06.08.2017 2.33.23 Small fix in CegoAttrCond::operator = , compare Find result with 0 instead of false. A compile error occured for MINGW compiles
lfcbase 06.08.2017 1.9.8 Adoptions made in CommandExecuter and Outstream for MINGW builds
cego 04.08.2017 2.33.22 Version released
cego 02.08.2017 2.33.22 More fixes in CegoTableManager::keyReferenceExists and CegoTableManager::createForeignKey, there still were missing some adpotions for TableCursor::setup return code and other case handling
cego 29.07.2017 2.33.21 Version released
cego 29.07.2017 2.33.21 Added further constraint check in CegoTableManager::dropObjectSynced. Primary objects just allowed to be removed, if no foreign key reference exists
cego 28.07.2017 2.33.21 More fixes on foreign key contraint handling in CegoTableManager::checkKeyIntegrity and CegoTableManager::insertDataTable methods
cego 27.07.2017 2.33.21 Fix in CegoTableManager::checkKeyIntegrity. The implementation of the mehod has been completly reworked, since not all violation cases have been treated.
cego 22.07.2017 2.33.20 Version released
cego 22.07.2017 2.33.20 Fix in CegoDistCursor to support advanced left and right outer join queries of the form
select tx.a as xa, ty.a as ya from t1 tx left outer join t2 ty on tx.a = ty.a + 1;
For this, the evaluation of the predicate has to be done in a different way to get complete row set
cego 16.07.2017 2.33.19 Version released
cego 16.07.2017 2.33.19 Fix in CegoOrderSpace::insertTuple, for the localTuple variable, also a dedicated copy has to be allocated, otherwise it may happen that invalid tuple references ( caused be page relocation ) lead to invalid order results
cego 16.07.2017 2.33.19 Added performance optimization to CegoTableManager::updateTuple. The already evaluated index, key and checklist are also provided to checkIntegrity method now ( instead of retrieving the lists again ). The improves performance for updates with many tuples significantly
cego 13.07.2017 2.33.18 Version released
cego 11.07.2017 2.33.18 Added tablemanager parameter to CegoProcWhileStmt to catch query abort. In case of infinite while loops, this enables the db admin to abort procedure execution
Optimization for CegoFunction::SETCOUNT procedure implementation added. Now this is an atomic operation ( ( instead of calling getCounterValue previously ).
For this, also the CegoXMLSpace::setCounterValue method has been changed to return the current counter value return the current counter value
cego 02.07.2017 2.33.17 Version released
cego 29.06.2017 2.33.17 Method cleanup in CegoSelect.cc, also some irrelevant case is treated for grouping clauses in combination with distinct operator
lfcbase 27.06.2017 1.9.7 Version released
lfcbase 27.06.2017 1.9.7 Removed include socketvar.h in Net.cc and NetHandler.cc since compile error occured for FreeBSD 12
cego 24.06.2017 2.33.16 Version released
cego 24.06.2017 2.33.16 Fix in CegoAction::execute, missing break added after calling execListView
cego 23.06.2017 2.33.16 Fix in CegoQueryHelper::evalPredicate. In case of subselects, the parent join buf also has to reset after performing the subselect, otherwise invalid pointer references are still active for the next caller
Seg faults have been experienced for delete with double nested subselect conditions ( see check055 )
cego 21.06.2017 2.33.15 Version released
cego 21.06.2017 2.33.15 Completion for admin help backup section, some commands were still missing
Improvements for procedure indent formatting. All sugar, nothing functional
cego 03.06.2017 2.33.14 Version released
cego 03.06.2017 2.33.14 Fix for distinct handling in CegoAggreation
Fix for alias handling regarding view creates. Alias definitions are mandatory now for aggregated attribute definitions, e.g.
create view v1 as select count(*) from t1;
=> returns now
ERROR: Missing alias reference for view create
and must be written as
create view v1 as select count(*) as c from t1;
cego 30.05.2017 2.33.13 Version released
cego 29.05.2017 2.33.13 Design modification in CegoAction for semantic action ( execXXX methods )
An analysed statement is now just executed after complete succesful parsing of the given input. This avoid protocol effects for queries like "select * from t1;;" where the query is executed but the second semicolon is detected as an parse error which also is sent to the client.
For this the new method CegoAction::execute has introduced which is ( explicitly ) called after successful CegoAction::parse
cego 27.05.2017 2.33.12 Version released
cego 27.05.2017 2.33.12 Fix in CegoAttrComp::reset, case VALUE2VALUE still was not treated, which lead to wron index handling for between clauses with native values
cego 25.05.2017 2.33.11 Version released
cego 24.05.2017 2.33.11 Fix in CegoQueryHelper::evalAttrCond, comparison modulation was missing for one case whihc leads to wrong query results for comparisons like 3 < a ( constant left )
Optimization added for between clause, indexes were just used for constant values in between clause ( eg. a between 10 and 20 ) This has been expanded, that also indexes are used, if attribute references are contained ( eg. a between t2.x and t3.y )
cego 14.05.2017 2.33.10 Version released
cego 12.05.2017 2.33.10 basecheck54 added for the previous described problem
cego 12.05.2017 2.33.10 Fix in CegoAttrComp::operator== The values should NOT be compares, since they are set up by the calling CegoAttrCond::update method Otherwise, the error "Cannot set up diff for attribute condition" occurs The following sample produces the error
drop if exists table t1;
create table t1 ( a int, b string(30));

drop if exists table t2;
create table t2 ( a int, b string(30));
create btree b2 on t2(a);

insert into t1 values ( 1, 'XXX');
insert into t1 values ( 2, 'YYY');
insert into t1 values ( 3, 'YYY');
insert into t1 values ( 4, 'YYY');

insert into t2 values ( 1, 'XXX');
insert into t2 values ( 2, 'YYY');
insert into t2 values ( 3, 'XXX');
insert into t2 values ( 4, 'YYY');


drop if exists procedure tproc;
@
create procedure tproc ( x in int )
begin
   delete from t1 where b in ( select b from t2 where a = :x );
end;
@

call tproc(2);
call tproc(3);
cego 10.05.2017 2.33.10 Added space character in CegoSelect::toChain after distinct keyword to avoid the following
ma > create view tview as select distinct hostname, pfcontact from ma_sysview where sysrole = 'production'; 
View tview created 
ok ( 0.001 s ) 
ma > select * from tview; 
Error : Unknown attribute field  
Query failed 
cego 09.05.2017 2.33.10 Fix in CegoObjectManager::createBTreeObject to avoid the following duplicate btree entry
drop if exists table t1;
create table t1 ( a int, b string(30));

create btree b1 on t1 ( a ); 
create unique btree b1 on t1 ( b );  -- this should result in an error

drop btree b1; 
drop btree b1;  -- at least both btrees could be dropped

For objectExists method, the value CegoObject::BTREE must be specifiy to detect the duplicates
cegobridge 07.05.2017 1.1.4 Version released
cego 23.04.2017 2.33.9 Version released
cego 23.04.2017 2.33.9 in CegoTableManager::getClobData added termination character to ensure clob values are terminated with 0 character
cego 23.04.2017 2.33.9 Small fixes for fixed value handling
Small fixes for quote escape handling in cgclt batch mode
cego 23.04.2017 2.33.9 In CegoAction::selectionList1 added alias check for non unique alias defintions
Stored Procedure formatting improvements regarding indent handling
cego 22.04.2017 2.33.8 Version released
cego 22.04.2017 2.33.8 Fix in CegoSelect::buildJoinConditions, the _attrPred array has to be set up. Otherwise it may occur, that the predicate is not evaluated, if it could not been evaluated by the table curser condition.
Furthermore, a setup method has been introduced for CegoAttrCond to evalute joinBuf and parentJoinBuf ( if both references occur in a condition this is needed )
cego 20.04.2017 2.33.7 Version released
cego 20.04.2017 2.33.7 Optimization in CegoCheckpoint::checkpointReached, if interval was reduced, we set up setup the new interval
cego 19.04.2017 2.33.7 Fix in CegoTableManager::removeAllComp, first we have to remove from the list, the we can free the memory. On Linux system with g++, the previous sequence might lead to memory faults
Fix in CegoRecoveryManager::recoverTableSet, after regDataFiles, als registerObjects method must be called, otherwise recovery could fail in case of table view recoveries
Optimization in CegoDistManager::stopDistTableSet, the new introduced method CegoDatabaseManager::removeAllObjects is called, the ensure object cache cleaning
cego 16.04.2017 2.33.7 Added prompt command line option to cgadm to set up specific prompt value
Adding formating improvements to CegoAdminHandler for show logmng and show backupmng commands
lfcbase 14.04.2017 1.9.6 Version released
lfcbase 14.04.2017 1.9.6 Small correction in OutStream, include required by FreeBSD ( fro definition of WEXISTATUS )
cego 13.04.2017 2.33.6 Version released
lfcbase 13.04.2017 1.9.5 Version released
cego 10.04.2017 2.33.6 Small improvements for utility scripts cgmkdb, logManager and backupManager
lfcbase 10.04.2017 1.9.5 Added method getErrorCode to OutStream class
lfcbase 09.04.2017 1.9.4 Version released
lfcbase 09.04.2017 1.9.4 Adaptions in OutStream and CommandExecuter classes for MINGW
lfcbase 08.04.2017 1.9.4 Cleanup of OutStream implementation ( removed some includes, removed ifdef for MINGW
cego 07.04.2017 2.33.5 Version released
cego 06.04.2017 2.33.5 Check052 has been introduced to verify the previous described behaviour
cego 06.04.2017 2.33.5 Fix in CegoSelect and friends for query cleanup. The cleanUp method did not cleanup all field value references which might lead to invalid memory access in case of repeated view calls ( Variable pParentJoinBuf ).
Corresponding cleanUp method have been introduced or CegoExpr, CegoTerm, CegoFactor and friends.
cego 02.04.2017 2.33.4 Version released
cego 02.04.2017 2.33.4 Fix in CegoTableManager::insertDataTable, the newRBEntry method call for the transactions manager also must be catched by the exception. Otherwise, the index might be corrupted if any exception occur ( e.g. out of temp space )
cego 01.04.2017 2.33.3 Version released
lfcbase 01.04.2017 1.9.3 Version released
lfcbase 01.04.2017 1.9.3 Small fixes for Monitor and Pager class, adding missing ifdef for curses option in Pager class, replaced CGNOCURSES with LFCNOCURSES
cego 30.03.2017 2.33.3 Fix in CegoRecoveryManager::recoverTableSet, before calling transactionRecovery, we have to set flag setIgnoreInvalid to true. During transaction recovery phase, we must ignore invalid btrees/index objects since these objects could be invalidated but Log data integrity and consistency is ensured
cego 29.03.2017 2.33.2 Version released
cego 29.03.2017 2.33.2 Added implizit tableset btree and index correction to recovery procedure ( CegoRecoveryManager::recoverTableSet )
cego 28.03.2017 2.33.2 Small syntax for cgadm from "backup TS" to "backup tableset TS" ( conform to other tableset commands )
Fix in CegoTableManager::deleteDataTableEntryAtomic / updateDataTableSynced / beginTransaction / commitTransaction / rollbackTransaction to avoid log entries for forced transactions ( introduction of doLog flag ).
Fix in CegoTableManager:deleteDataTable to avoid object synchronisation during recovery phase ( introduction is isSynced flag ), since during recovery phase, still no objects are registered and there is no need for synchronization
cego 27.03.2017 2.33.2 Added further admin console messages for recovery procedure. This enables the database admin to follow the recovery procedure on admin console level
cego 26.03.2017 2.33.1 Version released
cego 26.03.2017 2.33.1 Some cosmetic changes for backup manager handlng ( change from archmng to backupmng naming )
cego 24.03.2017 2.33.0 Version released
lfcbase 24.03.2017 1.9.2 Version released
cego 24.03.2017 2.33.0 Uplift to version 2.33.0 since the backup feature changes the product specification.
Integration of new introduced lfcbase OutStream class to catch output from backup manager. This allows to indicate a more detailed output from backup manager on admin console.
lfcbase 24.03.2017 1.9.2 Added class OutStream to catch stdout from forked programs via popen
cego 19.03.2017 2.32.16 Introduced archive manager, which can be triggered, to perform an online backup. Far now, online backups have to be triggered externally.
The achive manager should make backup / restore handling more convenient
lfcbase 19.03.2017 1.9.2 Added CommandExecuter::executeStream method to catch stdout for any forked process
cego 18.03.2017 2.32.15 Version released
cego 18.03.2017 2.32.15 Added database verify006 to check multidimensional btrees also in combination of null value handling.
cego 16.03.2017 2.32.15 * Fix in CegoObjectCursor::getNext, double method call for unlockData removed. * Small grammar correction to treat distinct flag for select-star statement * Fix in CegoBTreeCursor::compValue, null values have not been handled correctly. For string values, string termination was not clean, which also might lead to wrong cursor results
cego 11.03.2017 2.32.14 Version released
lfcbase 11.03.2017 1.9.1 Version released
cego 11.03.2017 2.32.14 Added check to CegoXMLSpace::addArchLog to verify, that directory for new archive location really exists
cego 11.03.2017 2.32.14 Added archive log management to curses based CegoAdmMon administration console
lfcbase 11.03.2017 1.9.1 Small fix for Monitor::showFormBox, in case of menu elements, delete key is disabled
cego 08.03.2017 2.32.13 Version released
cego 07.03.2017 2.32.13 - Fix in CegoBTreeValue::valueFromSchema added.
In case of multidimension btree objects, the insert of new values might fail, if string bases attributes occur at the beginning Here comes a sample :
drop if exists table t1; 
create table t1 ( a string(10), b string(10), c int ); 

insert into t1 values ( 'HUGO', 'ALPHA', 0 ); 
insert into t1 values ( 'HUGO', 'BETA', 0 ); 
insert into t1 values ( 'HUGO', 'GAMMA', 0 ); 
insert into t1 values ( 'HUGO', 'EPSILON', 0 ); 

create unique btree b1 on t1  ( a, b); 

-- this update will fail
update t1 set c = 1; 
- Fix in CegoDistManager::registerObjects, registration of btree objects was still missing. This might lead to wrong results for drop if exists btree statements
cego 07.03.2017 2.32.12 Version released
cego 06.03.2017 2.32.12 Correstion for distinct clause. With the current grammar implemention, queries with nested selects and using the distinct operator might fail. Cego.def grammar and CegoAction implementation has been changed in way, that distinct option is just allowed at the beginning ( e.g. select distinct count(a) from t1 and NOT select count(distinct a) from t1 )
This should simplify usage, since by using the distinct clause, distinct tuples are retrieved either for plain queries or for aggregation
Confusing sample not allowed anymore : select count(distinct a), count(distinct b) from t1 ... now select distinct count(a), count(b) from t1 )
cegobridge 05.03.2017 1.1.3 Version released
cego 05.03.2017 2.32.11 Version released
cego 04.03.2017 2.32.11 Online index build up tested and verified. First tests with heavy insert operations ( using cgblow ) during index build went succesful.
cego 04.03.2017 2.32.11 Improvements for CegoAdmMon role permission handling, added remove permission option
cego 04.03.2017 2.32.11 Preparation of CegoObjectCursor and CegoTableManager to support online index rebuild with write access to the table.
For this, concurrent insert operations have to be performed with append =true. The ObjectCursor locks the last page until the index rebuild is finished ( method setLastPageSync )
In this way, the index can be build up in parallel, while further tuples could be appended to the table. ( just supported for btree index objects )
cego 25.02.2017 2.32.10 Version released
cego 25.02.2017 2.32.10 Fix in CegoDistManager::stopDistTableSet, removing of btree objects from database object dictionary was still missing
In CegoTableManager::dropTableSet now also counter objects are dropped ( stored in the database xml file ).
cego 25.02.2017 2.32.10 Added some sizing optimizations for CegoAdmMon forms
cego 25.02.2017 2.32.10 Fix in CegoRecoveryManager::recoverCurrentTransactionLog, added the force option to addCounter method, since counters already could be synched to xml ( not completely transaction save )
cego 18.02.2017 2.32.9 Version released
lfcbase 18.02.2017 1.9.0 Version released
cego 15.02.2017 1.9.0 Added class Pager for curses based pager implementation
cego 15.02.2017 2.32.9 Fix in CegoTableManager::getPoolInfo, readdelay and writedelay was not calculated correctly
lfcbase 05.02.2017 1.9.0 Added Monitor class for ncurses based GUI utility implementation. This class provides GUI layout and event handling to simply ncurses based GUI tool implementaton.
cego 04.02.2017 2.32.9 Added CegoFieldValue::getDim method required for arithmetic operations on fixed values
cegobridge 31.01.2017 1.1.3 Fix in MySQLAction::backChar to avoid clang40 compile error
cego 31.01.2017 2.32.9 Include stdlib.h added in CegoNet ( still missing forLinux compiles )
cego 29.01.2017 2.32.8 Version released
lfcbase 28.01.2017 1.8.12 Version released
lfcbase 28.01.2017 1.8.12 Changed methods for class Sleeper to static. Added Sleeper class test to test suite
cego 28.01.2017 2.32.8 Small improvements for CegoAdmMon curses based admin console
lfcbase 26.01.2017 1.8.12 Added include file limits.h in Chain.cc. For Linux compiles, this include is required ( definition of INT_MAX and INT_MIN )
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 )
lfcbase 15.12.2016 1.8.11 Version released
lfcbase 14.12.2016 1.8.11 Added range check to Chain::toInteger method to catch overflow exception
cego 13.12.2016 2.32.0 Please note : Upgrade to this version requires tableset export / import ( XML mode recommended )
cegojdbc 13.12.2016 1.7.0 Version released
cego 13.12.2016 2.32.0 Version released
cego 13.12.2016 2.32.0 Functional tests with SysMT successful completed
cegojdbc 13.12.2016 1.7.0 Adaptions for cego 2.32.0 ( clob and blob reference handling )
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
cegojdbc 11.08.2016 1.6.1 Version released
cegojdbc 11.08.2016 1.6.1 Added datetime format parameter evaluation to CegoNet ( _dtFormat )
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
lfcbase 25.07.2016 1.8.10 Version released
cego 25.07.2016 2.30.22 Fixes for cast operations regarding values for type fixed
lfcbase 25.07.2016 1.8.10 Improvements for BigDecimal class
All values are normalized now and stored now with non trailing zeros
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
lfcbase 17.07.2016 1.8.9 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
lfcbase 17.07.2016 1.8.9 Patch file File class, operator= and operator+= did not close the file descriptor after copying / appending. This may cause a problem for subsequent method calls on the instance. ( e.g. renaming or removing )
This effect actually has just been observed for MinGW64 compiles
cego 17.07.2016 2.30.18 Version released
lfcbase 17.07.2016 1.8.8 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
lfcbase 16.07.2016 1.8.8 Added File::rename method to be able to move files via file class
lfcbase 15.07.2016 1.8.7 Version released
lfcbase 15.07.2016 1.8.7 Added errno.h include to Chain module
cego 14.07.2016 2.30.17 Version released
lfcbase 14.07.2016 1.8.6 Version released
lfcbase 13.07.2016 1.8.6 Some exception improvements in Chain class
lfcbase 13.07.2016 1.8.6 A space character was missing in exception message for date format lists
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
lfcbase 10.07.2016 1.8.5 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.
lfcbase 09.07.2016 1.8.5 Added statlock mutex in ThreadLock class for protecting staistic counters. It seems, increment and decrement operators on atomic values are no more thread safe ( Once it was, but I guess this is a compiler issue )
Since the lock statistics can be disabled for production mode, there is not performance impact caused by the additional mutex calls
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
lfcbase 03.07.2016 1.8.4 Version released
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 )
lfcbase 30.06.2016 1.8.4 Improved exception handling in class Chain for type conversion methods
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.
sysmt 12.06.2016 5.5.9 Adapted sysmtexp and sysmtimp X-port utilities for current schema definition
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
lfcxml 14.05.2016 1.2.4 Version released
lfcbase 14.05.2016 1.8.3 Version released
cego 12.05.2016 2.30.4 More work on code format cleanup
lfcbase 12.05.2016 1.8.3 More work on code format cleanup
lfcxml 12.05.2016 1.2.4 More work on code format cleanup
lfcbase 10.05.2016 1.8.3 More work on code format cleanup, 29 files to go ...
lfcbase 07.05.2016 1.8.3 update of config.guess to timestamp='2016-04-02'
lfcxml 07.05.2016 1.2.4 Code format cleanup, update of config.guess to timestamp='2016-04-02'
lfcbase 07.05.2016 1.8.3 Code format cleanup, updated config.guess to timestamp='2013-06-10'
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
lfcbase 09.04.2016 1.8.2 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
lfcbase 06.04.2016 1.8.2 Error message fix for Datetime constructor ( format strings are enclosed in brackets )
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
lfcbase 02.04.2016 1.8.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
lfcbase 06.03.2016 1.8.0 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
lfcbase 25.02.2016 1.8.0 Fix in Chain for truncleft, truncRight and cutTrailing. In case of single character strings, the methods might return wrong results.
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');
lfcbase 21.02.2016 1.8.0 Started with implementation of TextIndex class ( utility class for full text index creation )
cego 15.02.2016 2.29.2 Added include of string.h in CegoAction.c ( compile error occured on Suse Linux )
cegojdbc 05.02.2016 1.6.0 Version released ( clob ready, but still unimplemented clob methods)
cego 05.02.2016 2.29.1 Version released
lfcbase 05.02.2016 1.7.2 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
lfcbase 02.02.2016 1.7.2 Memory leak fixed in File::readLine
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
lfcbase 17.01.2016 1.7.1 Version released
lfcbase 17.01.2016 1.7.1 Fix in Datetime.cc, added include config.h, otherwiese the local implementation of strptime ist used. This should just be done, if the system API does not provide this call ( e.g. MINGW ) .
cegobridge 12.01.2016 1.1.2 Version released ( version sync )
cegobridge 12.01.2016 1.1.1 Version released ( with improvements for make environment )
lfcxml 12.01.2016 1.2.3 Version released ( just a small patch in xmltest/Makefile.am )
cegobridge 11.01.2016 1.1.1 Patch in MySQLFormatter.cc to adapt enumeration change in CegoObject::ObjectType
Adaptions in configure.ac
cego 03.01.2016 2.28.3 Version released ( also with fix in configure.ac as same as for lfcxml and dragon )
dragon 03.01.2016 1.4.1 Patch in configure.ac just relevant for FreeBSD compiles, since for configure /bin/sh is used, which cannot handle LDFLAGS+= " $LFC_LIBS" assignment. Instead LDFLAGS="$LDFLAGS $LFC_LIBS" is used now Version released
lfcxml 03.01.2016 1.2.2 Patch in configure.ac just relevant for FreeBSD compiles, since for configure /bin/sh is used, which cannot handle LDFLAGS+= " $LFC_LIBS" assignment. Instead LDFLAGS="$LDFLAGS $LFC_LIBS" is used now
Version released
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.
dragon 02.01.2016 1.4.0 Version released ( adaptions for mingw build )
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
lfcxml 31.12.2015 1.2.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
lfcxml 31.12.2015 1.2.1 Fix in configure.ac to the up path for lfc base library in a right way
cego 30.12.2015 2.28.0 Version released
lfcxml 30.12.2015 1.2.0 Version released
lfcbase 30.12.2015 1.7.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 !
lfcbase 26.12.2015 1.7.0 Adaptions made for build with msys2 / mingw64. Many windows specific stuff could be eliminated, since mingw64 provides better POSIX support ( e.g. pthreads, timer functions .. )
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 
to
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
lfcbase 29.11.2015 1.6.7 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
lfcbase 28.11.2015 1.6.7 Improvement for ListT template class. The end of the list is now stored int _listEnd variable. This improves Insert performance, since the end of the list can immediately accesed instead of tracking through the whole list until the end is reached.
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
lfcbase 28.11.2015 1.6.6 Version released
cego 28.11.2015 2.26.15 Simulation runs stable now
testdb.nepustil.net> ./showSpace 
Total Size      = 1524 GB
Total Allocated = 57 GB
lfcbase 27.11.2015 1.6.6 Patch in ThreadLock, the mutex for lock statistics has been removed, since there is no need for synchronization. Also error have not been checked for the pthread_rwlock_wrlock, which might case some deadlocks
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
lfcbase 24.11.2015 1.6.5 Version released
lfcbase 24.11.2015 1.6.5 Added kill method to class Process, added SigTest check program to basecheck suite
lfcbase 24.11.2015 1.6.5 Improvements in test suite
cego 18.11.2015 2.26.14 Version released
lfcxml 18.11.2015 1.1.8 Version released
lfcxml 18.11.2015 1.1.8 Added automake check suite to package
Small fix for XMLSuite constructor for pInStream initialization
lfcbase 18.11.2015 1.6.4 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;
lfcbase 17.11.2015 1.6.4 Fix in BigDecimal::operator < and > .. comparison was not done correctly.
Added automake check suite in baseecheck directory ( derived from samples )
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
lfcbase 24.10.2015 1.6.3 Version released
cego 24.10.2015 2.26.6 Added online help for query cache and table cache in cgadm
lfcbase 24.10.2015 1.6.3 Performance fix in Datetime class. Changed dynamic allocation of struct tm var to static.
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 )
cegobridge 10.09.2015 1.1.0 Version released
cegobridge 10.09.2015 1.1.0 Adaptions for cego-2.25.0 API change
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;