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

@@ -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;