- Fix in CegoAttrComp::reset, case VALUE2VALUE still was not treated,
which lead to wrong index handling for between clauses with native values
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- Fix in CegoObjectManager::createBTreeObject to avoid some duplicate btree
entries
- Added space character in CegoSelect::toChain after distinct keyword
to avoid certain errors
- Fix in CegoAttrComp::operator== The values should NOT be compared,
since they are set up by the calling CegoAttrCond::update method
Otherwise, the error "Cannot set up diff for attribute condition"
occurs.
basecheck54 added to test for the this problem
- 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 )
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- in CegoTableManager::getClobData added termination character to
ensure clob values are terminated with 0 character
- Small fixes for fixed value handling
- Small fixes for quote escape handling in cgclt batch mode
- In CegoAction::selectionList1 added alias check for non unique
alias definitions
- Stored Procedure formatting improvements regarding indent handling
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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 )
- Optimization in CegoCheckpoint::checkpointReached, if interval
was reduced, we set up the new interval
- 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
- 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
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: update 2.33.5 -> 2.33.6
lfcbase:
- Small correction in OutStream, include required by FreeBSD
( for definition of WEXISTATUS )
- Added method getErrorCode to OutStream class
- Cleanup of OutStream implementation ( removed some includes,
removed ifdef for MINGW)
cego:
- Small improvements for utility scripts cgmkdb, logManager and backupManager
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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.
- Check052 has been introduced to verify the previous described behaviour
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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 )
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: update 2.33.1 -> 2.33.3
lfcbase:
- Small fixes for Monitor and Pager class, adding missing ifdef for
curses option in Pager class, replaced CGNOCURSES with LFCNOCURSES
cego:
- 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
- Added implizit tableset btree and index correction to recovery procedure
( CegoRecoveryManager::recoverTableSet )
- 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 of isSynced flag ), since
during recovery phase, still no objects are registered and there is
no need for synchronization
- Added further admin console messages for recovery procedure.
This enables the database admin to follow the recovery procedure on
admin console level
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: update 2.32.14 -> 2.33.0
lfcbase:
- Added CommandExecuter::executeStream method to catch stdout for
any forked process
- Added class OutStream to catch stdout from forked programs via popen
cego:
- Added database verify006 to check multidimensional btrees also in
combination of null value handling.
- 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
- Introduced archive manager, which can be triggered, to perform
an online backup. For now, online backups have to be triggered
externally.
The achive manager should make backup / restore handling more convenient
- Update to version 2.33.0 since the backup feature changes the product
specification.
- Integration of newly introduced lfcbase OutStream class to catch output
from backup manager. This allows to indicate a more detailed
output from backup manager on the admin console.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: update 2.32.11 -> 2.32.14
lfcbase:
- Small fix for Monitor::showFormBox, in case of menu elements,
delete key is disabled
cego:
- 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 )
- 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
- Fix in CegoDistManager::registerObjects, registration of btree
objects was still missing. This might lead to wrong results for
drop if exists btree statements
- Added check to CegoXMLSpace::addArchLog to verify, that directory
for new archive location really exists
- Added archive log management to curses based CegoAdmMon administration
console
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: update 2.32.8 -> 2.32.11
databases/cegobridge: update 1.1.2 -> 1.1.3, fix build with clang 4.0
devel/lfcbase:
- Added Monitor class for ncurses based GUI utility implementation.
This class provides GUI layout and event handling to simply ncurses
based GUI tool implementaton.
- Added class Pager for curses based pager implementation
databases/cego:
- Include stdlib.h added in CegoNet ( still missing forLinux compiles )
- Added CegoFieldValue::getDim method required for arithmetic operations
on fixed values
- Fix in CegoTableManager::getPoolInfo, readdelay and writedelay was
not calculated correctly
- 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 ).
- Added some sizing optimizations for CegoAdmMon forms
- Fix in CegoRecoveryManager::recoverCurrentTransactionLog, added
the force option to addCounter method, since counters already could
be synched to xml ( not completely transaction save )
- Online index build up tested and verified. First tests with heavy
insert operations ( using cgblow ) during index build went succesful.
- Improvements for CegoAdmMon role permission handling, added remove
permission option
- 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 )
PR: 216621
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
Reported by: jbeich
databases/cego: update 2.32.7 -> 2.32.8
lfcbase:
- Changed methods for class Sleeper to static. Added Sleeper class
test to test suite
- Added include file limits.h in Chain.cc. For Linux compiles, this
include is required ( definition of INT_MAX and INT_MIN )
cego:
- Small improvements for CegoAdmMon curses based admin console
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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
- 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.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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 ...
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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 )
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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
- 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
- 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.
- 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 )
- 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 )
- 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
- 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
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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.
- Code cleanup in CegoBTReeManager and CegoBTreeNode, use of static
method CegoDataPointer::getEncodingLength, (define of DPENCODINGLENGTH)
- Fix in CegoFileHandler::CleanDataFile,pageId was not calculated
correctly ( missing offset )
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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 )
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
lfcbase:
- Added range check to Chain::toInteger method to catch overflow exception
cego:
- 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 )
- First performance analysis indicates a speedup of about 10% for
btree creation, so significant speedup for full table scans.
- All base checks passed, but there is still a page allocation leak
for table drops
- Functional tests with SysMT successful completed
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
The only reason to use post-stage is because the port needs to do
"things" at a later time, like some plist manipulation.
While there, fold post-install in do-install targets when they are
defined.
PR: 214780
Submitted by: mat
Exp-run by: antoine
Sponsored by: Absolight
- 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
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- Changed CegoQueryHelper methods to static
- 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, databases need to
be exported and imported.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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
Submitted by: lemke@lemke-it.com
- Fix in CegoClient for escape character handling in batch mode
- Fix in CegoClient for dumpfile generation. Default values handling corrected
- Join optimizer fix in CegoSelect, CegoAttrCond and CegoBtreeCursor.
join attributes are checked now in a more sophisticed way, which
leads to improved execution performace for advanced joins
PR: Bjoern Lemke <lemke@lemke-it.com>
- 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
- Adaptions for CegoBlowTab to use CegoNet API
- Completion for blob methods in CegoNet
- Improved flow control in CegoClient ( based on ncurses )
- Optimization in CegoClient, just high level CegoNet API methods
are used now for client implementation. Missing methods have been
added to CegoNet API
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- Fix in CegoNet::connect, the global vars __dateTimeFormat,
__currencySymbol and __decimalPoint are set up now to appropriate
defaults
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: 2.30.21 -> 2.30.23
lfcbase:
- Improvements for BigDecimal class
All values are normalized now and stored now with non trailing zeros
cego:
- Fixes for cast operations regarding values for type fixed
- Fix in CegoClient, global vars __currencySymbol and __decimalPoint
still have not been set up correctly, done in the same way as for
CegoMain on server side
- Added verify005.sql to dbcheck suite to verify cast operations
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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
- Fixed cgadm online help for import command, the nologging option
was not documented
- 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
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: 2.30.17 -> 2.30.19
lfcbase:
- Added File::rename method to be able to move files via file class
- 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:
- Catched server termination in CegoTableManager::writeCheckpoint.
If log files could not be archived, the method does not recognized
server termination ( runstate = OFFLINE )
- Improvement added for log file shipping in CegoLogThreadPool::copyLog.
The archive log file is first written 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
- 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
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- Fixed for point-in-time recovery, Date format handling was not
done correectly
- 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
- 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.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: 2.30.14 -> 2.30.15
lfcbase:
- Added statlock mutex in ThreadLock class for protecting statistic
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:
- Made __dateFormatList in CegoMain threadsafe
For the point-in-time recovery timestamp format, now the server
defined format is used ( variable CGPITFORMAT is obsolete )
- 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
- 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.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- Added alter table modify command just for default values.
alter table t1 modify column a default 42;
- Improvement for hash calculation in CegoBufferPool::calcSegement.
For a better page spreading, the segment calculation was changed
to a more linear approach
- Added more cast cases to CegoField::castTo, still not completed
- 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 )
- Fix in CegoBufferPool::poolInfo, the spread rate calculation was
not done correctly
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- Added cast improvements to CegoFieldValue::castTo method, which are
also checked now with check050
- 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.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- Fix in CegoRecoveryManager::recoverTableSet, the lsn was incremented
which lead to leaks in the transaction log. This could result in
an incomplete recovery procedure
- Improvements for tableset recovery, external log manage field is
checked in CegoAdminThread::medRecover before restore procedure is
started.
- 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
- Fixes for query and table cache added (addEntry method was still not clean)
- 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 )
- 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
- Patch in CegoQueryCache and CegoTableCache ( for each method addEntry )
The usedSize calculation was not done correctly for replaces entries
- 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
- Added synrchonization for query and table cache handling.
The lack of synchronization might 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
- 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.
- Adapted sysmtexp and sysmtimp X-port utilities for current schema definition
- 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
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
- 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...
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
The following query can 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.
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
devel/lfcxml: 1.2.3 -> 1.2.4
databases/cego: 2.30.3 -> 2.30.5
lfcbase:
- code format cleanup
lfcxml:
- code format cleanup
cego:
- Code optimizations tested. The performance improvements on
subselects are achieved as expected.
- 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.
- code format cleanup
- Fix in CegoAdmMon, CGNOMONITOR definition was fixed, now defined
via configure
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
Changes:
- Fix in CegoBufferPool::bufferFix. Small leak, since last page for each
pool segment never could be used ( hashId calculation )
- Cosmetic syntax change for set permission and remove permission admin
command
- Small information fix for query cache information in show tableset
admin command
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: 2.29.3 -> 2.30.2
Changes:
- Fix in CegoAction and CegoDbHandler to handle query abort requests correctly
( initiated by cgadm via abort db thread command )
- Fix in CegoDistCursor for query 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.
- 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.
- Changed default protocol from xml to serial. Date format handling
completely implemented
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: 2.29.1 -> 2.29.3
Changes to lfcbase:
- Fix in Chain for truncleft, truncRight and cutTrailing. In case
of single character strings, the methods might return wrong results.
- Started with implementation of TextIndex class ( utility class
for full text index creation )
Changes to cego:
- Fixes for table and query cache handling
- Fix in CegoDistManager::dropDistObject, table and query cache
have been checked for cleanup, if a table is dropped
- Fix in CegoQuery.cc, added table and query cache cleanup for alter
and rename queries
- 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');
- Added include of string.h in CegoAction.c ( compile error occured
on Suse Linux )
Submitted by: Bjoern Lemke <lemke@lemke-it.com>
databases/cego: 2.28.3 -> 2.29.1
databases/cegobridge: 1.1.1 -> 1.1.2
Please note: Updating cego databases needs an export/import
cycle for 2.28 -> 2.29
lfcbase:
- 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 ) .
- Memory leak fixed in File::readLine
cego:
- Started with clob datatype implementation
- 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
- Required network protocol expansions done for clob handling
(putclob, getclob, delclob)
- More work on clob handling. A fix was done for update operations
on clob values in CegoTableManager::updateTuple method. Before
updating the tuple, all clob references must be cloned, otherwise
in case of untouched clobs, references are invalid. This approach
is brute force, better would be, to stay on the untouched clob
references. But in terms of transaction and recovery handling,
this is not trivial
- Very long strings are handled now in CegoAction and CegoClient
to also parse large clob values
- 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
cegobridge:
- fix build problem
Submitted by: Bjoern Lemke <lemke@lemke-it.com>