Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Use memmove() rather than a home-made copy loop in insertCell() too. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
a3d796b1673ca68ced247d63c22ddcfb |
User & Date: | drh 2013-12-09 02:32:19.333 |
Context
2013-12-09
| ||
03:07 | Avoid unnecessary (no-op) calls to sqlite3DbFree() from sqlite3VdbeMemRelease(). (check-in: 2d6dd7c2eb user: drh tags: trunk) | |
02:32 | Use memmove() rather than a home-made copy loop in insertCell() too. (check-in: a3d796b167 user: drh tags: trunk) | |
01:58 | Use memmove() rather than a home-made copy loop in dropCell() of btree.c, for a size reduction and performance improvement. (check-in: 78e1706804 user: drh tags: trunk) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
5729 5730 5731 5732 5733 5734 5735 | ){ int idx = 0; /* Where to write new cell content in data[] */ int j; /* Loop counter */ int end; /* First byte past the last cell pointer in data[] */ int ins; /* Index in data[] where new cell pointer is inserted */ int cellOffset; /* Address of first cell pointer in data[] */ u8 *data; /* The content of the whole page */ | < < < | 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 | ){ int idx = 0; /* Where to write new cell content in data[] */ int j; /* Loop counter */ int end; /* First byte past the last cell pointer in data[] */ int ins; /* Index in data[] where new cell pointer is inserted */ int cellOffset; /* Address of first cell pointer in data[] */ u8 *data; /* The content of the whole page */ int nSkip = (iChild ? 4 : 0); if( *pRC ) return; assert( i>=0 && i<=pPage->nCell+pPage->nOverflow ); assert( pPage->nCell<=MX_CELL(pPage->pBt) && MX_CELL(pPage->pBt)<=10921 ); assert( pPage->nOverflow<=ArraySize(pPage->apOvfl) ); |
︙ | ︙ | |||
5782 5783 5784 5785 5786 5787 5788 | assert( idx+sz <= (int)pPage->pBt->usableSize ); pPage->nCell++; pPage->nFree -= (u16)(2 + sz); memcpy(&data[idx+nSkip], pCell+nSkip, sz-nSkip); if( iChild ){ put4byte(&data[idx], iChild); } | < | < < < < < | 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 | assert( idx+sz <= (int)pPage->pBt->usableSize ); pPage->nCell++; pPage->nFree -= (u16)(2 + sz); memcpy(&data[idx+nSkip], pCell+nSkip, sz-nSkip); if( iChild ){ put4byte(&data[idx], iChild); } memmove(&data[ins+2], &data[ins], end-ins); put2byte(&data[ins], idx); put2byte(&data[pPage->hdrOffset+3], pPage->nCell); #ifndef SQLITE_OMIT_AUTOVACUUM if( pPage->pBt->autoVacuum ){ /* The cell may contain a pointer to an overflow page. If so, write ** the entry for the overflow page into the pointer map. */ |
︙ | ︙ |