diff --git a/ChangeLog.txt b/ChangeLog.txt index f8687debf3..e0fe9318ad 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -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 diff --git a/include/hbrddcdx.h b/include/hbrddcdx.h index 08d68596f3..180e0fa32b 100644 --- a/include/hbrddcdx.h +++ b/include/hbrddcdx.h @@ -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 */ diff --git a/src/rdd/dbfcdx/dbfcdx1.c b/src/rdd/dbfcdx/dbfcdx1.c index 40b0e70211..e96d5c9fb5 100644 --- a/src/rdd/dbfcdx/dbfcdx1.c +++ b/src/rdd/dbfcdx/dbfcdx1.c @@ -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 ) )