2014-10-23 17:58 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * renamed CDX_TYPE_TEMPORARY to CDX_TYPE_PARTIAL
    * eliminated Temporary member from CDXTAG structure
    * cleaned tag signature flag setting to strictly follow
      CL5.2 (SIx3) and CL5.3 (COMIX)
This commit is contained in:
Przemysław Czerpak
2014-10-23 17:58:21 +02:00
parent e8ab404525
commit 321df92cbe
3 changed files with 35 additions and 28 deletions

View File

@@ -10,6 +10,14 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2014-10-23 17:58 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
* src/rdd/dbfcdx/dbfcdx1.c
* renamed CDX_TYPE_TEMPORARY to CDX_TYPE_PARTIAL
* eliminated Temporary member from CDXTAG structure
* cleaned tag signature flag setting to strictly follow
CL5.2 (SIx3) and CL5.3 (COMIX)
2014-10-23 14:11 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbfcdx/dbfcdx1.c
* pacified warning

View File

@@ -133,7 +133,7 @@ HB_EXTERN_BEGIN
#define CDX_TYPE_UNIQUE 0x01 /* unique index */
#define CDX_TYPE_TEMPORARY 0x02 /* temporary index */
#define CDX_TYPE_PARTIAL 0x02 /* temporary index */
#define CDX_TYPE_CUSTOM 0x04 /* custom index */
#define CDX_TYPE_FORFILTER 0x08 /* for expression present */
#define CDX_TYPE_BITVECTOR 0x10 /* SoftC? */
@@ -147,12 +147,12 @@ HB_EXTERN_BEGIN
/*
SIx3 order temperature flags:
switch ( indexOpt & ( CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM ) )
case CDX_TYPE_TEMPORARY:
switch ( indexOpt & ( CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM ) )
case CDX_TYPE_PARTIAL:
PARTIAL_RYO
case CDX_TYPE_CUSTOM:
PARTIAL_RYO | CHGONLY_RYO
case CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM:
case CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM:
PARTIAL_RYO | NOUPDATE_RYO
if index key begin with:
'sxChar(' or 'sxNum(' or 'sxDate(' or 'sxLog('
@@ -160,23 +160,23 @@ HB_EXTERN_BEGIN
| TEMPLATE_RYO
sx_Chill() if ( ! NOUPDATE_RYO ) then set ( CHGONLY_RYO | PARTIAL_RYO )
if ( indexOpt & ( CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM ) !=
CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM )
if ( indexOpt & ( CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM ) !=
CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM )
{
indexOpt &= ~CDX_TYPE_CUSTOM;
indexOpt |= CDX_TYPE_TEMPORARY
indexOpt |= CDX_TYPE_PARTIAL
}
sx_Warm() if ( ! NOUPDATE_RYO ) then clear CHGONLY_RYO
if ( indexOpt & ( CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM ) !=
CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM )
if ( indexOpt & ( CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM ) !=
CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM )
{
indexOpt |= CDX_TYPE_CUSTOM;
indexOpt &= ~CDX_TYPE_TEMPORARY
indexOpt &= ~CDX_TYPE_PARTIAL
}
sx_Freeze() set NOUPDATE_RYO
indexOpt |= CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM;
indexOpt |= CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM;
*/
/*
indexSig:
@@ -323,7 +323,6 @@ typedef struct _CDXTAG
HB_BYTE OptFlags; /* index options flag */
HB_BOOL AscendKey; /* ascending/descending order flag */
HB_BOOL UniqueKey; /* unique order flag */
HB_BOOL Temporary; /* temporary order flag */
HB_BOOL Custom; /* custom order flag */
HB_BOOL Template; /* user keyadata in ordKeyAdd()/ordKeyDel() accepted */
HB_BOOL MultiKey; /* repeated key values in custom indexes accepted */

View File

@@ -3350,23 +3350,23 @@ static void hb_cdxTagHeaderStore( LPCDXTAG pTag )
pTag->TagChanged = HB_FALSE;
pTag->OptFlags &= ~( CDX_TYPE_UNIQUE | CDX_TYPE_FORFILTER |
CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM );
CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM );
if( pTag->UniqueKey )
pTag->OptFlags |= CDX_TYPE_UNIQUE;
if( pTag->pForItem != NULL )
pTag->OptFlags |= CDX_TYPE_FORFILTER;
#if defined( HB_SIXCDX )
if( pTag->Custom )
pTag->OptFlags |= CDX_TYPE_TEMPORARY | CDX_TYPE_CUSTOM;
pTag->OptFlags |= CDX_TYPE_PARTIAL | CDX_TYPE_CUSTOM;
else if( pTag->ChgOnly )
pTag->OptFlags |= CDX_TYPE_CUSTOM;
else if( pTag->Partial )
pTag->OptFlags |= CDX_TYPE_TEMPORARY;
pTag->OptFlags |= CDX_TYPE_PARTIAL;
#else
if( pTag->Temporary )
pTag->OptFlags |= CDX_TYPE_TEMPORARY;
if( pTag->Custom )
pTag->OptFlags |= CDX_TYPE_CUSTOM;
if( pTag->Partial )
pTag->OptFlags |= CDX_TYPE_PARTIAL;
#endif
memset( &tagHeader, 0, sizeof( tagHeader ) );
@@ -3522,24 +3522,20 @@ static void hb_cdxTagLoad( LPCDXTAG pTag )
pTag->OptFlags = tagHeader.indexOpt;
pTag->UniqueKey = ( pTag->OptFlags & CDX_TYPE_UNIQUE ) != 0;
#if defined( HB_SIXCDX )
pTag->Temporary = HB_FALSE;
pTag->Custom = ( pTag->OptFlags & CDX_TYPE_CUSTOM ) != 0 &&
( pTag->OptFlags & CDX_TYPE_TEMPORARY ) != 0;
( pTag->OptFlags & CDX_TYPE_PARTIAL ) != 0;
pTag->ChgOnly = ( pTag->OptFlags & CDX_TYPE_CUSTOM ) != 0 &&
( pTag->OptFlags & CDX_TYPE_TEMPORARY ) == 0;
( pTag->OptFlags & CDX_TYPE_PARTIAL ) == 0;
pTag->Partial = ( pTag->OptFlags & CDX_TYPE_CUSTOM ) != 0 ||
( pTag->OptFlags & CDX_TYPE_TEMPORARY ) != 0;
( pTag->OptFlags & CDX_TYPE_PARTIAL ) != 0;
pTag->Template = hb_cdxIsTemplateFunc( pTag->KeyExpr );
if( pTag->Template )
pTag->Custom = HB_TRUE;
pTag->Template = pTag->Custom && hb_cdxIsTemplateFunc( pTag->KeyExpr );
/* SIx3 does not support repeated key value for the same record */
pTag->MultiKey = HB_FALSE;
#else
pTag->Temporary = ( pTag->OptFlags & CDX_TYPE_TEMPORARY ) != 0;
pTag->Partial = ( pTag->OptFlags & CDX_TYPE_PARTIAL ) != 0;
pTag->Custom = ( pTag->OptFlags & CDX_TYPE_CUSTOM ) != 0;
pTag->ChgOnly = HB_FALSE;
pTag->Partial = pTag->Temporary || pTag->Custom;
pTag->Template = pTag->MultiKey = pTag->Custom;
#endif
@@ -9442,8 +9438,12 @@ static void hb_cdxTagDoIndex( LPCDXTAG pTag, HB_BOOL fReindex )
pEvalItem = pArea->dbfarea.area.lpdbOrdCondInfo->itmCobEval;
pWhileItem = pArea->dbfarea.area.lpdbOrdCondInfo->itmCobWhile;
lStep = pArea->dbfarea.area.lpdbOrdCondInfo->lStep;
if( pArea->dbfarea.area.lpdbOrdCondInfo->fRest )
pTag->Temporary = HB_TRUE;
if( pArea->dbfarea.area.lpdbOrdCondInfo->lNextCount ||
pArea->dbfarea.area.lpdbOrdCondInfo->itmRecID ||
pArea->dbfarea.area.lpdbOrdCondInfo->fRest ||
pArea->dbfarea.area.lpdbOrdCondInfo->fUseCurrent ||
pArea->dbfarea.area.lpdbOrdCondInfo->fUseFilter )
pTag->Partial = HB_TRUE;
}
if( pTag->Custom || ( pTag->OptFlags & CDX_TYPE_STRUCTURE ) )