| Index: third_party/sqlite/src/src/btreeInt.h
|
| diff --git a/third_party/sqlite/src/src/btreeInt.h b/third_party/sqlite/src/src/btreeInt.h
|
| index a196e18a282a04514547c505966fb30e37edfa7a..b01163c33f49681ce4b14eee9553b17706acdb85 100644
|
| --- a/third_party/sqlite/src/src/btreeInt.h
|
| +++ b/third_party/sqlite/src/src/btreeInt.h
|
| @@ -259,38 +259,39 @@ typedef struct CellInfo CellInfo;
|
| #define PTF_LEAF 0x08
|
|
|
| /*
|
| -** As each page of the file is loaded into memory, an instance of the following
|
| -** structure is appended and initialized to zero. This structure stores
|
| -** information about the page that is decoded from the raw file page.
|
| +** An instance of this object stores information about each a single database
|
| +** page that has been loaded into memory. The information in this object
|
| +** is derived from the raw on-disk page content.
|
| **
|
| -** The pParent field points back to the parent page. This allows us to
|
| -** walk up the BTree from any leaf to the root. Care must be taken to
|
| -** unref() the parent page pointer when this page is no longer referenced.
|
| -** The pageDestructor() routine handles that chore.
|
| +** As each database page is loaded into memory, the pager allocats an
|
| +** instance of this object and zeros the first 8 bytes. (This is the
|
| +** "extra" information associated with each page of the pager.)
|
| **
|
| ** Access to all fields of this structure is controlled by the mutex
|
| ** stored in MemPage.pBt->mutex.
|
| */
|
| struct MemPage {
|
| u8 isInit; /* True if previously initialized. MUST BE FIRST! */
|
| - u8 nOverflow; /* Number of overflow cell bodies in aCell[] */
|
| + u8 bBusy; /* Prevent endless loops on corrupt database files */
|
| u8 intKey; /* True if table b-trees. False for index b-trees */
|
| u8 intKeyLeaf; /* True if the leaf of an intKey table */
|
| - u8 noPayload; /* True if internal intKey page (thus w/o data) */
|
| + Pgno pgno; /* Page number for this page */
|
| + /* Only the first 8 bytes (above) are zeroed by pager.c when a new page
|
| + ** is allocated. All fields that follow must be initialized before use */
|
| u8 leaf; /* True if a leaf page */
|
| u8 hdrOffset; /* 100 for page 1. 0 otherwise */
|
| u8 childPtrSize; /* 0 if leaf==1. 4 if leaf==0 */
|
| u8 max1bytePayload; /* min(maxLocal,127) */
|
| - u8 bBusy; /* Prevent endless loops on corrupt database files */
|
| + u8 nOverflow; /* Number of overflow cell bodies in aCell[] */
|
| u16 maxLocal; /* Copy of BtShared.maxLocal or BtShared.maxLeaf */
|
| u16 minLocal; /* Copy of BtShared.minLocal or BtShared.minLeaf */
|
| u16 cellOffset; /* Index in aData of first cell pointer */
|
| u16 nFree; /* Number of free bytes on the page */
|
| u16 nCell; /* Number of cells on this page, local and ovfl */
|
| u16 maskPage; /* Mask for page offset */
|
| - u16 aiOvfl[5]; /* Insert the i-th overflow cell before the aiOvfl-th
|
| + u16 aiOvfl[4]; /* Insert the i-th overflow cell before the aiOvfl-th
|
| ** non-overflow cell */
|
| - u8 *apOvfl[5]; /* Pointers to the body of overflow cells */
|
| + u8 *apOvfl[4]; /* Pointers to the body of overflow cells */
|
| BtShared *pBt; /* Pointer to BtShared that this page is part of */
|
| u8 *aData; /* Pointer to disk image of the page data */
|
| u8 *aDataEnd; /* One byte past the end of usable data */
|
| @@ -299,17 +300,9 @@ struct MemPage {
|
| DbPage *pDbPage; /* Pager page handle */
|
| u16 (*xCellSize)(MemPage*,u8*); /* cellSizePtr method */
|
| void (*xParseCell)(MemPage*,u8*,CellInfo*); /* btreeParseCell method */
|
| - Pgno pgno; /* Page number for this page */
|
| };
|
|
|
| /*
|
| -** The in-memory image of a disk page has the auxiliary information appended
|
| -** to the end. EXTRA_SIZE is the number of bytes of space needed to hold
|
| -** that extra information.
|
| -*/
|
| -#define EXTRA_SIZE sizeof(MemPage)
|
| -
|
| -/*
|
| ** A linked list of the following structures is stored at BtShared.pLock.
|
| ** Locks are added (or upgraded from READ_LOCK to WRITE_LOCK) when a cursor
|
| ** is opened on the table with root page BtShared.iTable. Locks are removed
|
| @@ -699,11 +692,9 @@ struct IntegrityCk {
|
| */
|
| #if SQLITE_BYTEORDER==4321
|
| # define get2byteAligned(x) (*(u16*)(x))
|
| -#elif SQLITE_BYTEORDER==1234 && !defined(SQLITE_DISABLE_INTRINSIC) \
|
| - && GCC_VERSION>=4008000
|
| +#elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4008000
|
| # define get2byteAligned(x) __builtin_bswap16(*(u16*)(x))
|
| -#elif SQLITE_BYTEORDER==1234 && !defined(SQLITE_DISABLE_INTRINSIC) \
|
| - && defined(_MSC_VER) && _MSC_VER>=1300
|
| +#elif SQLITE_BYTEORDER==1234 && MSVC_VERSION>=1300
|
| # define get2byteAligned(x) _byteswap_ushort(*(u16*)(x))
|
| #else
|
| # define get2byteAligned(x) ((x)[0]<<8 | (x)[1])
|
|
|