mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Additional minor speed improvements. (CVS 1496)
FossilOrigin-Name: a90264c0a4c73097fe0ae8933dcebb15b8eaa2bb
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Faster\sversion\sof\ssqlite3VdbeSerialGet.\s(CVS\s1495)
|
C Additional\sminor\sspeed\simprovements.\s(CVS\s1496)
|
||||||
D 2004-05-30T01:51:52
|
D 2004-05-30T02:14:18
|
||||||
F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
|
F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
|
||||||
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
|
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
|
||||||
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
||||||
@@ -24,7 +24,7 @@ F sqlite.def fc4f5734786fe4743cfe2aa98eb2da4b089edb5f
|
|||||||
F sqlite.pc.in 30552343140c53304c2a658c080fbe810cd09ca2
|
F sqlite.pc.in 30552343140c53304c2a658c080fbe810cd09ca2
|
||||||
F src/attach.c c315c58cb16fd6e913b3bfa6412aedecb4567fa5
|
F src/attach.c c315c58cb16fd6e913b3bfa6412aedecb4567fa5
|
||||||
F src/auth.c 5c2f0bea4729c98c2be3b69d6b466fc51448fe79
|
F src/auth.c 5c2f0bea4729c98c2be3b69d6b466fc51448fe79
|
||||||
F src/btree.c 3287b359b0dbfef9ffcddfa776e136505f01cd77
|
F src/btree.c efc15b6c774f4bbba917b6351b5a921bf938fdeb
|
||||||
F src/btree.h b65140b5ae891f30d2a39e64b9f0343225553545
|
F src/btree.h b65140b5ae891f30d2a39e64b9f0343225553545
|
||||||
F src/build.c fd36c4a603e23df35aa7f57772d965e1865e39e0
|
F src/build.c fd36c4a603e23df35aa7f57772d965e1865e39e0
|
||||||
F src/date.c 0eb922af5c5f5e2455f8dc2f98023ed3e04a857e
|
F src/date.c 0eb922af5c5f5e2455f8dc2f98023ed3e04a857e
|
||||||
@@ -69,11 +69,11 @@ F src/update.c 259f06e7b22c684b2d3dda54a18185892d6e9573
|
|||||||
F src/utf.c f8604999a54483533ac20a63879074f01b0df384
|
F src/utf.c f8604999a54483533ac20a63879074f01b0df384
|
||||||
F src/util.c 4df9d9b0d930d81ec581bcb68748e7c48bdc8c7d
|
F src/util.c 4df9d9b0d930d81ec581bcb68748e7c48bdc8c7d
|
||||||
F src/vacuum.c 82ce1fc8ecc2e1aa284c13fe38446709f9936c63
|
F src/vacuum.c 82ce1fc8ecc2e1aa284c13fe38446709f9936c63
|
||||||
F src/vdbe.c c9658279c8d46760afab9714fd988ef052d02b88
|
F src/vdbe.c 61ac9d19277f63e78f09a62d278218fe936574a4
|
||||||
F src/vdbe.h e73f890e0f2a6c42b183d7d6937947930fe4fdeb
|
F src/vdbe.h e73f890e0f2a6c42b183d7d6937947930fe4fdeb
|
||||||
F src/vdbeInt.h c2bcd6e5a6e6a3753e4c5a368629c3a625719bfc
|
F src/vdbeInt.h c2bcd6e5a6e6a3753e4c5a368629c3a625719bfc
|
||||||
F src/vdbeapi.c 0c5d64c81871cb4fe5407e639604ee95738b6942
|
F src/vdbeapi.c 0c5d64c81871cb4fe5407e639604ee95738b6942
|
||||||
F src/vdbeaux.c 419f62488256ac083a996893a46d55180347f3c2
|
F src/vdbeaux.c 9a86cafac031ba04588510c1225fde5cacf85a66
|
||||||
F src/vdbemem.c d5f96663627d54ee8ea47f182c92faa57a015704
|
F src/vdbemem.c d5f96663627d54ee8ea47f182c92faa57a015704
|
||||||
F src/where.c 444a7c3a8b1eb7bba072e489af628555d21d92a4
|
F src/where.c 444a7c3a8b1eb7bba072e489af628555d21d92a4
|
||||||
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
|
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
|
||||||
@@ -204,7 +204,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
|
|||||||
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
|
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
|
||||||
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
|
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
|
||||||
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
|
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
|
||||||
P fcd84ebabca72023e76e6954514948aa9a3ab999
|
P 80985505fe8ba8e505842dae95d37bf412fc586d
|
||||||
R 3f1817a302e026eaf4a3f04c4eee66ee
|
R 10b9132d18af15ef1d5f5ceb8bf5e09c
|
||||||
U drh
|
U drh
|
||||||
Z 2739751628cd79cb153057eaa6054ddd
|
Z f8c785bf166886d7218d6cb24c0a06d2
|
||||||
|
@@ -1 +1 @@
|
|||||||
80985505fe8ba8e505842dae95d37bf412fc586d
|
a90264c0a4c73097fe0ae8933dcebb15b8eaa2bb
|
@@ -9,7 +9,7 @@
|
|||||||
** May you share freely, never taking more than you give.
|
** May you share freely, never taking more than you give.
|
||||||
**
|
**
|
||||||
*************************************************************************
|
*************************************************************************
|
||||||
** $Id: btree.c,v 1.149 2004/05/29 21:46:49 drh Exp $
|
** $Id: btree.c,v 1.150 2004/05/30 02:14:18 drh Exp $
|
||||||
**
|
**
|
||||||
** This file implements a external (disk-based) database using BTrees.
|
** This file implements a external (disk-based) database using BTrees.
|
||||||
** For a detailed discussion of BTrees, refer to
|
** For a detailed discussion of BTrees, refer to
|
||||||
@@ -1505,14 +1505,13 @@ static void releaseTempCursor(BtCursor *pCur){
|
|||||||
** Using this cache reduces the number of calls to parseCell().
|
** Using this cache reduces the number of calls to parseCell().
|
||||||
*/
|
*/
|
||||||
static void getCellInfo(BtCursor *pCur){
|
static void getCellInfo(BtCursor *pCur){
|
||||||
MemPage *pPage = pCur->pPage;
|
|
||||||
if( !pCur->infoValid ){
|
if( !pCur->infoValid ){
|
||||||
parseCell(pPage, pCur->idx, &pCur->info);
|
parseCell(pCur->pPage, pCur->idx, &pCur->info);
|
||||||
pCur->infoValid = 1;
|
pCur->infoValid = 1;
|
||||||
}else{
|
}else{
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
CellInfo info;
|
CellInfo info;
|
||||||
parseCell(pPage, pCur->idx, &info);
|
parseCell(pCur->pPage, pCur->idx, &info);
|
||||||
assert( memcmp(&info, &pCur->info, sizeof(info))==0 );
|
assert( memcmp(&info, &pCur->info, sizeof(info))==0 );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
15
src/vdbe.c
15
src/vdbe.c
@@ -43,7 +43,7 @@
|
|||||||
** in this file for details. If in doubt, do not deviate from existing
|
** in this file for details. If in doubt, do not deviate from existing
|
||||||
** commenting and indentation practices when changing or adding code.
|
** commenting and indentation practices when changing or adding code.
|
||||||
**
|
**
|
||||||
** $Id: vdbe.c,v 1.347 2004/05/29 11:24:50 danielk1977 Exp $
|
** $Id: vdbe.c,v 1.348 2004/05/30 02:14:18 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
@@ -134,7 +134,8 @@ int sqlite3_interrupt_count = 0;
|
|||||||
** stack variables. This routine sets the pMem->enc and pMem->type
|
** stack variables. This routine sets the pMem->enc and pMem->type
|
||||||
** variables used by the sqlite3_value_*() routines.
|
** variables used by the sqlite3_value_*() routines.
|
||||||
*/
|
*/
|
||||||
static void StoreTypeInfo(Mem *pMem, u8 db_enc){
|
#define storeTypeInfo(A,B) _storeTypeInfo(A)
|
||||||
|
static void _storeTypeInfo(Mem *pMem){
|
||||||
int flags = pMem->flags;
|
int flags = pMem->flags;
|
||||||
if( flags & MEM_Null ){
|
if( flags & MEM_Null ){
|
||||||
pMem->type = SQLITE3_NULL;
|
pMem->type = SQLITE3_NULL;
|
||||||
@@ -669,7 +670,6 @@ case OP_Integer: {
|
|||||||
if( pOp->p3==0 ){
|
if( pOp->p3==0 ){
|
||||||
pTos->flags = MEM_Int;
|
pTos->flags = MEM_Int;
|
||||||
pTos->i = pOp->p1;
|
pTos->i = pOp->p1;
|
||||||
pTos->type = SQLITE3_INTEGER;
|
|
||||||
}else{
|
}else{
|
||||||
pTos->flags = MEM_Str|MEM_Static|MEM_Term;
|
pTos->flags = MEM_Str|MEM_Static|MEM_Term;
|
||||||
pTos->z = pOp->p3;
|
pTos->z = pOp->p3;
|
||||||
@@ -994,7 +994,7 @@ case OP_Callback: {
|
|||||||
for(i=0; i<pOp->p1; i++){
|
for(i=0; i<pOp->p1; i++){
|
||||||
Mem *pVal = &pTos[0-i];
|
Mem *pVal = &pTos[0-i];
|
||||||
sqlite3VdbeMemNulTerminate(pVal);
|
sqlite3VdbeMemNulTerminate(pVal);
|
||||||
StoreTypeInfo(pVal, db->enc);
|
storeTypeInfo(pVal, db->enc);
|
||||||
}
|
}
|
||||||
|
|
||||||
p->resOnStack = 1;
|
p->resOnStack = 1;
|
||||||
@@ -1093,7 +1093,6 @@ case OP_Concat: {
|
|||||||
pTos->n = j;
|
pTos->n = j;
|
||||||
pTos->flags = MEM_Str|MEM_Dyn|MEM_Term;
|
pTos->flags = MEM_Str|MEM_Dyn|MEM_Term;
|
||||||
pTos->enc = db->enc;
|
pTos->enc = db->enc;
|
||||||
pTos->type = SQLITE3_TEXT;
|
|
||||||
pTos->z = zNew;
|
pTos->z = zNew;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1242,7 +1241,7 @@ case OP_Function: {
|
|||||||
pArg = &pTos[1-n];
|
pArg = &pTos[1-n];
|
||||||
for(i=0; i<n; i++, pArg++){
|
for(i=0; i<n; i++, pArg++){
|
||||||
apVal[i] = pArg;
|
apVal[i] = pArg;
|
||||||
StoreTypeInfo(pArg, db->enc);
|
storeTypeInfo(pArg, db->enc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.pFunc = (FuncDef*)pOp->p3;
|
ctx.pFunc = (FuncDef*)pOp->p3;
|
||||||
@@ -1432,7 +1431,6 @@ case OP_MustBeInt: {
|
|||||||
}
|
}
|
||||||
Release(pTos);
|
Release(pTos);
|
||||||
pTos->flags = MEM_Int;
|
pTos->flags = MEM_Int;
|
||||||
pTos->type = SQLITE3_INTEGER;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
mismatch:
|
mismatch:
|
||||||
@@ -4098,7 +4096,6 @@ case OP_SortNext: {
|
|||||||
pTos->n = pSorter->nData;
|
pTos->n = pSorter->nData;
|
||||||
pTos->flags = MEM_Blob|MEM_Dyn|MEM_Term;
|
pTos->flags = MEM_Blob|MEM_Dyn|MEM_Term;
|
||||||
pTos->enc = 0;
|
pTos->enc = 0;
|
||||||
pTos->type = SQLITE3_BLOB;
|
|
||||||
sqliteFree(pSorter->zKey);
|
sqliteFree(pSorter->zKey);
|
||||||
sqliteFree(pSorter);
|
sqliteFree(pSorter);
|
||||||
}else{
|
}else{
|
||||||
@@ -4270,7 +4267,7 @@ case OP_AggFunc: {
|
|||||||
|
|
||||||
for(i=0; i<n; i++, pRec++){
|
for(i=0; i<n; i++, pRec++){
|
||||||
apVal[i] = pRec;
|
apVal[i] = pRec;
|
||||||
StoreTypeInfo(pRec, db->enc);
|
storeTypeInfo(pRec, db->enc);
|
||||||
}
|
}
|
||||||
i = pTos->i;
|
i = pTos->i;
|
||||||
assert( i>=0 && i<p->agg.nMem );
|
assert( i>=0 && i<p->agg.nMem );
|
||||||
|
@@ -1241,11 +1241,9 @@ int sqlite3VdbeSerialGet(
|
|||||||
if( serial_type==5 ){
|
if( serial_type==5 ){
|
||||||
pMem->flags = MEM_Real;
|
pMem->flags = MEM_Real;
|
||||||
pMem->r = *(double*)&v;
|
pMem->r = *(double*)&v;
|
||||||
pMem->type = SQLITE3_FLOAT;
|
|
||||||
}else{
|
}else{
|
||||||
pMem->flags = MEM_Int;
|
pMem->flags = MEM_Int;
|
||||||
pMem->i = *(i64*)&v;
|
pMem->i = *(i64*)&v;
|
||||||
pMem->type = SQLITE3_INTEGER;
|
|
||||||
}
|
}
|
||||||
}else if( serial_type>=12 ){
|
}else if( serial_type>=12 ){
|
||||||
/* String or blob */
|
/* String or blob */
|
||||||
@@ -1261,7 +1259,6 @@ int sqlite3VdbeSerialGet(
|
|||||||
assert( serial_type==6 );
|
assert( serial_type==6 );
|
||||||
assert( len==0 );
|
assert( len==0 );
|
||||||
pMem->flags = MEM_Null;
|
pMem->flags = MEM_Null;
|
||||||
pMem->type = SQLITE3_NULL;
|
|
||||||
}
|
}
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user