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

* config/lang2po.hb
    ! fixed negative UTC offsets to string conversion

  * include/dbinfo.ch
  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
    + added DBOI_INDEXPAGESIZE - get index page size

  * include/dbinfo.ch
  * include/hbrdddbf.h
  * src/rdd/dbf1.c
    + added RDDI_INDEXPAGESIZE - get/set default index page size

  * include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * modification for user defined index page size (work in progress)
This commit is contained in:
Przemysław Czerpak
2014-10-20 17:33:49 +02:00
parent 556a6cbc2d
commit 8d8558fbab
9 changed files with 133 additions and 83 deletions

View File

@@ -10,6 +10,25 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2014-10-20 17:33 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* config/lang2po.hb
! fixed negative UTC offsets to string conversion
* include/dbinfo.ch
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfntx/dbfntx1.c
+ added DBOI_INDEXPAGESIZE - get index page size
* include/dbinfo.ch
* include/hbrdddbf.h
* src/rdd/dbf1.c
+ added RDDI_INDEXPAGESIZE - get/set default index page size
* include/hbrddcdx.h
* src/rdd/dbfcdx/dbfcdx1.c
* modification for user defined index page size (work in progress)
2014-10-19 14:46 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtwvt/gtwvt.c
* small cleanup in HB_GTI_UNITRANS

View File

@@ -119,8 +119,8 @@ STATIC FUNCTION ISO_TimeStamp()
RETURN hb_StrFormat( "%1$s%2$s%3$02d%4$02d", ;
hb_TToC( hb_DateTime(), "YYYY-MM-DD", "HH:MM" ), ;
iif( nOffset < 0, "-", "+" ), ;
Int( nOffset / 3600 ), ;
Int( ( ( nOffset / 3600 ) - Int( nOffset / 3600 ) ) * 60 ) )
Int( Abs( nOffset ) / 3600 ), ;
Int( Abs( nOffset ) % 3600 / 60 ) )
STATIC FUNCTION Item( cOri, cTrs, nPos )

View File

@@ -105,6 +105,7 @@
#define RDDI_PASSWORD 42 /* Get/Set default password */
#define RDDI_LOCKRETRY 43 /* Get/Set record and file lock timeout value */
#define RDDI_DIRTYREAD 44 /* Get/Set index dirty read flag */
#define RDDI_INDEXPAGESIZE 45 /* Get/Set default index page size */
/*
Constants for SELF_ORDINFO ()
@@ -203,6 +204,7 @@
#define DBOI_USECURRENT 131 /* get/set "use current index" flag */
#define DBOI_INDEXTYPE 132 /* current index type */
#define DBOI_RESETPOS 133 /* rest logical and raw positions */
#define DBOI_INDEXPAGESIZE 134 /* get index page size */
/* return values for DBOI_OPTLEVEL */
#define DBOI_OPTIMIZED_NONE 0

View File

@@ -62,16 +62,13 @@ HB_EXTERN_BEGIN
#define CDX_PAGELEN (1<<CDX_PAGELEN_BITS)
#define CDX_HEADERLEN 1024
#define CDX_HEADEREXPLEN (CDX_HEADERLEN - 512)
#define CDX_HEADERPAGES ((CDX_HEADERLEN+CDX_PAGELEN-1)/CDX_PAGELEN)
#define CDX_INT_FREESPACE (CDX_PAGELEN-12) /* 500 */
#define CDX_EXT_FREESPACE (CDX_PAGELEN-24) /* 488 */
#define CDX_DUMMYNODE 0xFFFFFFFFL
#define CDX_INT_HEADSIZE 12
#define CDX_EXT_HEADSIZE 24
#define CDX_INT_FREESPACE (CDX_PAGELEN-CDX_INT_HEADSIZE) /* 500 */
#define CDX_EXT_FREESPACE (CDX_PAGELEN-CDX_EXT_HEADSIZE) /* 488 */
#define CDX_HARBOUR_SIGNATURE 0x52434842L /* Harbour index signature: RCHB */
/* #define CDX_LOCKOFFSET 0x7FFFFFFEL */
/* #define CDX_LOCKSIZE 1L */
#define CDX_STACKSIZE 64
#define CDX_PAGECACHESIZE 8
#define CDX_NODE_BRANCH 0
@@ -80,6 +77,7 @@ HB_EXTERN_BEGIN
#define CDX_NODE_UNUSED 0xFF
#define CDX_IGNORE_REC_NUM 0x0L
#define CDX_MAX_REC_NUM 0xFFFFFFFFL
#define CDX_DUMMYNODE 0xFFFFFFFFL
#define CDX_BALANCE_LEAFPAGES 3
#define CDX_BALANCE_INTPAGES 3
@@ -194,7 +192,7 @@ typedef struct _CDXTAGHEADER
{
HB_BYTE rootPtr [ 4 ]; /* offset of the root node */
HB_BYTE freePtr [ 4 ]; /* offset of list of free pages or -1 */
HB_BYTE reserved1[ 4 ]; /* Version number ??? */
HB_BYTE counter [ 4 ]; /* update counter (in root node) */
HB_BYTE keySize [ 2 ]; /* key length */
HB_BYTE indexOpt; /* index options see CDX_TYPE_* */
HB_BYTE indexSig; /* index signature */
@@ -270,13 +268,9 @@ typedef struct _CDXPAGE
HB_ULONG Left;
HB_ULONG Right;
HB_BYTE PageType;
int iKeys;
int iCurKey;
HB_BOOL fChanged;
HB_BYTE bUsed;
HB_ULONG RNMask;
HB_BYTE ReqByte;
HB_BYTE RNBits;
@@ -284,7 +278,20 @@ typedef struct _CDXPAGE
HB_BYTE TCBits;
HB_BYTE DCMask;
HB_BYTE TCMask;
HB_BYTE PageType;
HB_BYTE bUsed;
HB_BOOL fChanged;
HB_BOOL fBufChanged;
HB_BYTE * pKeyBuf; /* pointer to uncompressed leaf page key pool */
struct _CDXPAGE * Owner;
struct _CDXPAGE * Child;
struct _CDXTAG * TagParent;
struct _CDXPAGE * pPoolPrev;
struct _CDXPAGE * pPoolNext;
union
{
CDXEXTNODE extNode;
@@ -295,14 +302,6 @@ typedef struct _CDXPAGE
HB_SHORT bufKeyPos; /* they have to be just after the node */
HB_SHORT bufKeyLen; /* and maybe temporary overwriten when adding */
HB_SHORT iFree; /* new key to interior node record. */
HB_BYTE * pKeyBuf; /* pointer to uncompressed leaf page key pool */
/* HB_SHORT iKeyInBuf; */
struct _CDXPAGE * Owner;
struct _CDXPAGE * Child;
struct _CDXTAG * TagParent;
struct _CDXPAGE * pPoolPrev;
struct _CDXPAGE * pPoolNext;
} CDXPAGE;
typedef CDXPAGE * LPCDXPAGE;
@@ -393,6 +392,9 @@ typedef struct _CDXINDEX
HB_BOOL fReadonly; /* Read only file */
HB_BOOL fDelete; /* delete on close flag */
HB_BOOL fLargeFile; /* page numbers instead of page offsets in index file */
HB_USHORT uiHeaderLen; /* length of tag header */
HB_USHORT uiPageLen; /* length of index page */
HB_UINT uiPageBits; /* length of index page in bits */
HB_ULONG nextAvail; /* offset to next free page in the end of index file */
HB_ULONG freePage; /* offset to next free page inside index file */
LPCDXLIST freeLst; /* list of free pages in index file */

View File

@@ -143,6 +143,7 @@ typedef struct _DBFDATA
HB_BYTE bMemoType; /* DB_MEMO_FPT */
HB_BYTE bMemoExtType; /* DB_MEMOVER_FLEX */
HB_USHORT uiDirtyRead; /* HB_IDXREAD_CLEANMASK */
HB_USHORT uiIndexPageSize; /* 0 */
HB_ULONG ulMemoBlockSize; /* 0 */
HB_BOOL fSortRecNo;

View File

@@ -5959,6 +5959,16 @@ static HB_ERRCODE hb_dbfRddInfo( LPRDDNODE pRDD, HB_USHORT uiIndex, HB_ULONG ulC
hb_itemPutL( pItem, fDirty );
break;
}
case RDDI_INDEXPAGESIZE:
{
int iPageSize = hb_itemGetNI( pItem );
hb_itemPutNI( pItem, pData->uiIndexPageSize );
if( iPageSize && iPageSize >= 0x200 && iPageSize <= 0x2000 &&
( ( iPageSize - 1 ) & iPageSize ) == 0 )
pData->uiIndexPageSize = ( HB_USHORT ) iPageSize;
break;
}
case RDDI_TRIGGER:
{
char * szTrigger = pData->szTrigger;

View File

@@ -78,17 +78,11 @@
#include "hbregex.h"
#include "hbapicdp.h"
#if 1
#define hb_cdxFilePageOffset( I, B ) ( ( HB_FOFFSET ) ( B ) << ( ( I )->fLargeFile ? CDX_PAGELEN_BITS : 0 ) )
#define hb_cdxFilePageNum( I, O ) ( ( HB_ULONG ) ( ( O ) >> ( ( I )->fLargeFile ? CDX_PAGELEN_BITS : 0 ) ) )
#define hb_cdxFilePageNext( I, C ) ( ( C ) << ( ( I )->fLargeFile ? 0 : CDX_PAGELEN_BITS ) )
#define hb_cdxFilePageRootValid( I, B ) ( ( I )->fLargeFile ? CDX_PAGELEN != CDX_DUMMYNODE : ( ( B ) % CDX_PAGELEN == 0 ) )
#else
#define hb_cdxFilePageOffset( I, B ) ( ( HB_FOFFSET ) ( B ) )
#define hb_cdxFilePageNum( I, O ) ( ( HB_ULONG ) ( O ) )
#define hb_cdxFilePageNext( I, C ) ( ( C ) << CDX_PAGELEN_BITS )
#define hb_cdxFilePageRootValid( I, B ) ( ( B ) % CDX_PAGELEN == 0 )
#endif
#define hb_cdxFilePageOffset( I, B ) ( ( HB_FOFFSET ) ( B ) << ( ( I )->fLargeFile ? ( I )->uiPageBits : 0 ) )
#define hb_cdxFilePageNum( I, O ) ( ( HB_ULONG ) ( ( O ) >> ( ( I )->fLargeFile ? ( I )->uiPageBits : 0 ) ) )
#define hb_cdxFilePageNext( I, C ) ( ( C ) << ( ( I )->fLargeFile ? 0 : ( I )->uiPageBits ) )
#define hb_cdxFilePageRootValid( I, B ) ( ( I )->fLargeFile ? ( B ) != CDX_DUMMYNODE : ( ( B ) % ( I )->uiPageLen == 0 ) )
/*
* Tag->fRePos = HB_TRUE means that rootPage->...->childLeafPage path is
* bad and has to be reloaded
@@ -1012,13 +1006,10 @@ static HB_ULONG hb_cdxIndexGetAvailPage( LPCDXINDEX pIndex, HB_BOOL fHeader )
HB_ULONG ulPage;
if( pIndex->fReadonly )
{
hb_errInternal( 9101, "hb_cdxIndexGetAvailPage on readonly database.", NULL, NULL );
}
if( pIndex->fShared && ! pIndex->lockWrite )
{
hb_errInternal( 9102, "hb_cdxIndexGetAvailPage on not locked index file.", NULL, NULL );
}
if( pIndex->freePage != 0 && pIndex->freePage != CDX_DUMMYNODE && ! fHeader )
{
@@ -1034,38 +1025,45 @@ static HB_ULONG hb_cdxIndexGetAvailPage( LPCDXINDEX pIndex, HB_BOOL fHeader )
{
if( hb_fileReadAt( pFile, byBuf, 4, hb_cdxFilePageOffset( pIndex, ulPage ) ) != 4 )
hb_errInternal( EDBF_READ, "hb_cdxIndexGetAvailPage: Read index page failed.", NULL, NULL );
pIndex->freePage = HB_GET_LE_UINT32( byBuf );
#ifdef HB_CDX_DBGUPDT
cdxReadNO++;
#endif
pIndex->freePage = HB_GET_LE_UINT32( byBuf );
}
}
else
{
int iCnt = ( fHeader ? CDX_HEADERPAGES : 1 );
HB_SIZE nSize = fHeader ? pIndex->uiHeaderLen : pIndex->uiPageLen, nLen = 0;
if( pIndex->nextAvail == CDX_DUMMYNODE )
pIndex->nextAvail = hb_cdxFilePageNum( pIndex, hb_fileSize( pFile ) );
ulPage = pIndex->nextAvail;
pIndex->nextAvail += hb_cdxFilePageNext( pIndex, iCnt );
do
{
pIndex->nextAvail += hb_cdxFilePageNext( pIndex, 1 );
nLen += pIndex->uiPageLen;
}
while( nLen < nSize );
/* TODO: ### */
if( fHeader )
{
HB_BYTE byPageBuf[ CDX_PAGELEN ];
HB_FOFFSET fOffset = hb_cdxFilePageOffset( pIndex, ulPage );
HB_BYTE * byPageBuf;
if( nSize < ( HB_SIZE ) pIndex->uiPageLen )
nSize = pIndex->uiPageLen;
byPageBuf = ( HB_BYTE * ) hb_xgrabz( nSize );
hb_cdxIndexLockFlush( pIndex );
memset( byPageBuf, 0, CDX_PAGELEN );
do
{
if( hb_fileWriteAt( pFile, byPageBuf, CDX_PAGELEN, fOffset ) != CDX_PAGELEN )
hb_errInternal( EDBF_WRITE, "Write in index page failed.", NULL, NULL );
fOffset += CDX_PAGELEN;
}
while( --iCnt );
if( hb_fileWriteAt( pFile, byPageBuf, nSize,
hb_cdxFilePageOffset( pIndex, ulPage ) ) != nSize )
hb_errInternal( EDBF_WRITE, "Write in index page failed.", NULL, NULL );
#ifdef HB_CDX_DBGUPDT
cdxWriteNO++;
#endif
pIndex->fChanged = HB_TRUE;
hb_xfree( byPageBuf );
}
}
return ulPage;
@@ -1078,7 +1076,7 @@ static void hb_cdxIndexPutAvailPage( LPCDXINDEX pIndex, HB_ULONG ulPage, HB_BOOL
{
if( ulPage != 0 && ulPage != CDX_DUMMYNODE )
{
int iCnt = ( fHeader ? CDX_HEADERPAGES : 1 );
HB_SIZE nSize = fHeader ? pIndex->uiHeaderLen : pIndex->uiPageLen, nLen = 0;
LPCDXLIST pLst;
if( pIndex->fReadonly )
@@ -1095,8 +1093,9 @@ static void hb_cdxIndexPutAvailPage( LPCDXINDEX pIndex, HB_ULONG ulPage, HB_BOOL
pLst->pNext = pIndex->freeLst;
pIndex->freeLst = pLst;
ulPage += hb_cdxFilePageNext( pIndex, 1 );
nLen += pIndex->uiPageLen;
}
while( --iCnt );
while( nLen < nSize );
}
}
@@ -1106,9 +1105,7 @@ static void hb_cdxIndexPutAvailPage( LPCDXINDEX pIndex, HB_ULONG ulPage, HB_BOOL
static void hb_cdxIndexFlushAvailPage( LPCDXINDEX pIndex )
{
LPCDXLIST pLst = pIndex->freeLst;
HB_BYTE byPageBuf[ CDX_PAGELEN ];
HB_ULONG ulPage;
HB_BOOL fClean = HB_TRUE;
if( pIndex->fReadonly )
hb_errInternal( 9101, "hb_cdxIndexFlushAvailPage on readonly database.", NULL, NULL );
@@ -1117,24 +1114,26 @@ static void hb_cdxIndexFlushAvailPage( LPCDXINDEX pIndex )
hb_cdxIndexLockFlush( pIndex );
ulPage = pIndex->freePage;
while( pLst && pLst->fStat )
if( pLst && pLst->fStat )
{
if( fClean )
HB_BYTE * byPageBuf = ( HB_BYTE * ) hb_xgrabz( pIndex->uiPageLen );
do
{
memset( byPageBuf, 0, CDX_PAGELEN );
fClean = HB_FALSE;
}
HB_PUT_LE_UINT32( byPageBuf, pLst->nextPage );
if( hb_fileWriteAt( pIndex->pFile, byPageBuf, CDX_PAGELEN,
hb_cdxFilePageOffset( pIndex, ulPage ) ) != CDX_PAGELEN )
hb_errInternal( EDBF_WRITE, "Write in index page failed.", NULL, NULL );
pIndex->fChanged = HB_TRUE;
ulPage = pLst->nextPage;
pLst->fStat = HB_FALSE;
pLst = pLst->pNext;
HB_PUT_LE_UINT32( byPageBuf, pLst->nextPage );
if( hb_fileWriteAt( pIndex->pFile, byPageBuf, pIndex->uiPageLen,
hb_cdxFilePageOffset( pIndex, ulPage ) ) != pIndex->uiPageLen )
hb_errInternal( EDBF_WRITE, "Write in index page failed.", NULL, NULL );
#ifdef HB_CDX_DBGUPDT
cdxWriteNO++;
cdxWriteNO++;
#endif
pIndex->fChanged = HB_TRUE;
ulPage = pLst->nextPage;
pLst->fStat = HB_FALSE;
pLst = pLst->pNext;
}
while( pLst && pLst->fStat );
hb_xfree( byPageBuf );
}
}
@@ -1157,10 +1156,8 @@ static void hb_cdxIndexDropAvailPage( LPCDXINDEX pIndex )
* write index page
*/
static void hb_cdxIndexPageWrite( LPCDXINDEX pIndex, HB_ULONG ulPage,
const HB_BYTE * pBuffer, HB_BOOL fHeader )
const HB_BYTE * pBuffer, HB_SIZE nSize )
{
HB_SIZE nSize = fHeader ? CDX_HEADERLEN : CDX_PAGELEN;
if( pIndex->fReadonly )
hb_errInternal( 9101, "hb_cdxIndexPageWrite on readonly database.", NULL, NULL );
if( pIndex->fShared && ! pIndex->lockWrite )
@@ -1180,10 +1177,8 @@ static void hb_cdxIndexPageWrite( LPCDXINDEX pIndex, HB_ULONG ulPage,
* read index page
*/
static void hb_cdxIndexPageRead( LPCDXINDEX pIndex, HB_ULONG ulPage,
HB_BYTE * pBuffer, HB_BOOL fHeader )
HB_BYTE * pBuffer, HB_SIZE nSize )
{
HB_SIZE nSize = fHeader ? CDX_HEADERLEN : CDX_PAGELEN;
if( pIndex->fShared && ! ( pIndex->lockRead || pIndex->lockWrite ) )
hb_errInternal( 9103, "hb_cdxIndexPageRead on not locked index file.", NULL, NULL );
@@ -2285,7 +2280,8 @@ static void hb_cdxPageLoad( LPCDXPAGE pPage )
pPage->fBufChanged = HB_FALSE;
}
hb_cdxIndexPageRead( pPage->TagParent->pIndex, pPage->Page,
( HB_BYTE * ) &pPage->node, HB_FALSE );
( HB_BYTE * ) &pPage->node,
pPage->TagParent->pIndex->uiPageLen );
pPage->PageType = ( HB_BYTE ) HB_GET_LE_UINT16( pPage->node.intNode.attr );
pPage->Left = HB_GET_LE_UINT32( pPage->node.intNode.leftPtr );
pPage->Right = HB_GET_LE_UINT32( pPage->node.intNode.rightPtr );
@@ -2365,7 +2361,8 @@ static void hb_cdxPageStore( LPCDXPAGE pPage )
#endif
}
hb_cdxIndexPageWrite( pPage->TagParent->pIndex, pPage->Page,
( const HB_BYTE * ) &pPage->node, HB_FALSE );
( const HB_BYTE * ) &pPage->node,
pPage->TagParent->pIndex->uiPageLen );
#ifdef HB_CDX_DBGCODE_EXT
hb_cdxPageCheckKeys( pPage );
#endif
@@ -3433,8 +3430,8 @@ static void hb_cdxTagHeaderStore( LPCDXTAG pTag )
memset( &tagHeader, 0, sizeof( tagHeader ) );
HB_PUT_LE_UINT32( tagHeader.rootPtr, pTag->RootBlock );
HB_PUT_LE_UINT16( tagHeader.keySize, pTag->uiLen );
HB_PUT_LE_UINT16( tagHeader.headerLen, CDX_HEADERLEN );
HB_PUT_LE_UINT16( tagHeader.pageLen, CDX_PAGELEN );
HB_PUT_LE_UINT16( tagHeader.headerLen, pTag->pIndex->uiHeaderLen );
HB_PUT_LE_UINT16( tagHeader.pageLen, pTag->pIndex->uiPageLen );
tagHeader.indexOpt = pTag->OptFlags;
if( pTag->TagBlock == 0 )
{
@@ -3471,7 +3468,8 @@ static void hb_cdxTagHeaderStore( LPCDXTAG pTag )
}
}
hb_cdxIndexPageWrite( pTag->pIndex, pTag->TagBlock,
( const HB_BYTE * ) &tagHeader, HB_TRUE );
( const HB_BYTE * ) &tagHeader,
sizeof( tagHeader ) );
}
#if defined( HB_SIXCDX )
@@ -3496,7 +3494,7 @@ static void hb_cdxTagLoad( LPCDXTAG pTag )
/* read the page from a file */
hb_cdxIndexPageRead( pTag->pIndex, pTag->TagBlock,
( HB_BYTE * ) &tagHeader, HB_TRUE );
( HB_BYTE * ) &tagHeader, sizeof( tagHeader ) );
uiForPos = HB_GET_LE_UINT16( tagHeader.forExpPos );
uiForLen = HB_GET_LE_UINT16( tagHeader.forExpLen );
@@ -3723,9 +3721,8 @@ static void hb_cdxTagClose( LPCDXTAG pTag )
pTag->RootPage = NULL;
}
if( pTag->TagChanged )
{
hb_cdxTagHeaderStore( pTag );
}
pTag->fRePos = HB_TRUE;
}
@@ -3739,7 +3736,7 @@ static void hb_cdxTagOpen( LPCDXTAG pTag )
if( ! pTag->RootPage )
{
hb_cdxIndexPageRead( pTag->pIndex, pTag->TagBlock,
( HB_BYTE * ) &tagHeader, HB_TRUE );
( HB_BYTE * ) &tagHeader, sizeof( tagHeader ) );
pTag->RootBlock = HB_GET_LE_UINT32( tagHeader.rootPtr );
if( pTag->RootBlock && pTag->RootBlock != CDX_DUMMYNODE )
pTag->RootPage = hb_cdxPageNew( pTag, NULL, pTag->RootBlock );
@@ -4797,6 +4794,12 @@ static LPCDXINDEX hb_cdxIndexNew( CDXAREAP pArea )
pIndex->pFile = NULL;
pIndex->pArea = pArea;
pIndex->nextAvail = CDX_DUMMYNODE;
pIndex->uiHeaderLen = CDX_HEADERLEN;
pIndex->uiPageLen = CDX_PAGELEN;
pIndex->uiPageBits = CDX_PAGELEN_BITS;
while( ( 1 << pIndex->uiPageBits ) < pIndex->uiPageLen )
++pIndex->uiPageBits;
return pIndex;
}
@@ -8693,6 +8696,11 @@ static HB_ERRCODE hb_cdxOrderInfo( CDXAREAP pArea, HB_USHORT uiIndex, LPDBORDERI
DBOI_TYPE_COMPOUND : DBOI_TYPE_UNDEF );
break;
case DBOI_INDEXPAGESIZE:
pInfo->itmResult = hb_itemPutNI( pInfo->itmResult, pTag ?
pTag->pIndex->uiPageLen : 0 );
break;
default:
return SUPER_ORDINFO( ( AREAP ) pArea, uiIndex, pInfo );

View File

@@ -7652,6 +7652,9 @@ static HB_ERRCODE hb_nsxOrderInfo( NSXAREAP pArea, HB_USHORT uiIndex, LPDBORDERI
pInfo->itmResult = hb_itemPutNI( pInfo->itmResult,
pTag->pIndex->iTags > 1 ? DBOI_TYPE_COMPOUND : DBOI_TYPE_COMPACT );
break;
case DBOI_INDEXPAGESIZE:
pInfo->itmResult = hb_itemPutNI( pInfo->itmResult, NSX_PAGELEN );
break;
}
}
else if( pInfo->itmResult )
@@ -7776,6 +7779,7 @@ static HB_ERRCODE hb_nsxOrderInfo( NSXAREAP pArea, HB_USHORT uiIndex, LPDBORDERI
case DBOI_ORDERCOUNT:
case DBOI_SCOPEEVAL:
case DBOI_UPDATECOUNTER:
case DBOI_INDEXPAGESIZE:
hb_itemPutNI( pInfo->itmResult, 0 );
break;
case DBOI_FILEHANDLE:

View File

@@ -7264,6 +7264,9 @@ static HB_ERRCODE hb_ntxOrderInfo( NTXAREAP pArea, HB_USHORT uiIndex, LPDBORDERI
DBOI_TYPE_COMPOUND : DBOI_TYPE_NONCOMPACT );
#endif
break;
case DBOI_INDEXPAGESIZE:
hb_itemPutNI( pInfo->itmResult, NTXBLOCKSIZE );
break;
}
}
else if( pInfo->itmResult )
@@ -7388,6 +7391,7 @@ static HB_ERRCODE hb_ntxOrderInfo( NTXAREAP pArea, HB_USHORT uiIndex, LPDBORDERI
case DBOI_ORDERCOUNT:
case DBOI_SCOPEEVAL:
case DBOI_UPDATECOUNTER:
case DBOI_INDEXPAGESIZE:
hb_itemPutNI( pInfo->itmResult, 0 );
break;
case DBOI_FILEHANDLE: