Compare commits

..

5 Commits

Author SHA1 Message Date
mistachkin 8929eccfcc Merge updates from trunk.
FossilOrigin-Name: 40493680083c4df94b718b4bcd15728d476a4e09
2015-10-15 21:13:14 +00:00
mistachkin 28c7ecb0ed Merge updates from trunk.
FossilOrigin-Name: 0a75ebd23e3bd56d9352549bfb9f97f24e29e0cb
2015-09-23 16:35:52 +00:00
mistachkin d889eae056 Remove a comment that is no longer accurate.
FossilOrigin-Name: cf114c18953044bd50c050c662cef256fddcef9c
2015-09-14 22:54:52 +00:00
mistachkin 2724d0e742 Merge updates from trunk.
FossilOrigin-Name: 25c157714dc1e89988543d9b7df6b1791911e8a1
2015-09-14 22:53:07 +00:00
mistachkin 5d5bea03da Re-check sqlite3GlobalConfig.isInit after the mutex subsystem has been initialized.
FossilOrigin-Name: fea8c0b281b374f2e0b82bec8788275e963a9401
2015-09-14 22:52:37 +00:00
5 changed files with 25 additions and 66 deletions
+9 -12
View File
@@ -1,5 +1,5 @@
C Experiments\swith\san\sOP_Unpack\sopcode\sthat\sextracts\smultiple\scolumns\sfrom\na\srecord\swithout\scaching.
D 2015-10-15T20:17:15.103
C Merge\supdates\sfrom\strunk.
D 2015-10-15T21:13:14.857
F Makefile.in 2ea961bc09e441874eb3d1bf7398e04feb24f3ee
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 8e42cb55739cd8c12e1fd25401956e2019448f6a
@@ -303,7 +303,7 @@ F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e
F src/lempar.c d344a95d60c24e2f490ee59db9784b1b17439012
F src/loadext.c 18586e45a215325f15096821e9c082035d4fb810
F src/main.c fec97668771438033a7559883401067b139729e1
F src/main.c 1a9235d74d2b39c47cc8f49957eaad03a3606d35
F src/malloc.c 0a2e42b835c980ba91c17866e9b6a9810ff54d75
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c 52485a88f22649c3b3b4f3eb15760505d49ccf71
@@ -338,7 +338,7 @@ F src/printf.c 0c4bcdd1c2e2521024f0a69cb5eb334f86b3652a
F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
F src/resolve.c 1954a0f01bf65d78d7d559aea3d5c67f33376d91
F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
F src/select.c a4478981ce53cb7e28d0252417deece6ad5fe693
F src/select.c dbf1fb82317043304da334a33206add211487f96
F src/shell.c d25df04168d6ba5a4fa05bdbf859df667f9eb621
F src/sqlite.h.in 839c818e16ea68703d90d17bd2bb3607191debce
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
@@ -401,7 +401,7 @@ F src/update.c aa10336a2719bd1b9f89004f3d7ba6d566623a49
F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
F src/util.c fc612367108b74573c5fd13a85d0a23027f438bd
F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701
F src/vdbe.c a0a2aea6a146e2479bdb7dba584f3e625ceccc30
F src/vdbe.c 61bd96c72f103d2e96de6ab7852dc009dc9bb6b3
F src/vdbe.h 4bc88bd0e06f8046ee6ab7487c0015e85ad949ad
F src/vdbeInt.h 8b867eac234e28627ffcace3cd4b4b79bbec664b
F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca
@@ -1391,10 +1391,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 871e091df651b2275a672c35ff938bd4b6db0d7f
R 12f17dff849f2a06a10012eebf93b957
T *branch * unpack-opcode
T *sym-unpack-opcode *
T -sym-trunk *
U drh
Z 51853eb094abb609c64d30de1af24213
P 0a75ebd23e3bd56d9352549bfb9f97f24e29e0cb 871e091df651b2275a672c35ff938bd4b6db0d7f
R cc78e127a7227b3b6d8262f8b068d45d
U mistachkin
Z 0cd8afcd2f8c8c2a7357ff44ae9f5ff1
+1 -1
View File
@@ -1 +1 @@
39ae92f5c63de4b95502f438dc7e9f2669efdf91
40493680083c4df94b718b4bcd15728d476a4e09
+6
View File
@@ -177,6 +177,12 @@ int sqlite3_initialize(void){
*/
MUTEX_LOGIC( pMaster = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); )
sqlite3_mutex_enter(pMaster);
if( sqlite3GlobalConfig.isInit ){
assert( sqlite3GlobalConfig.isMutexInit );
assert( sqlite3GlobalConfig.isMallocInit );
sqlite3_mutex_leave(pMaster);
return SQLITE_OK;
}
sqlite3GlobalConfig.isMutexInit = 1;
if( !sqlite3GlobalConfig.isMallocInit ){
rc = sqlite3MallocInit();
+9 -8
View File
@@ -1230,16 +1230,15 @@ static void generateSortTail(
codeOffset(v, p->iOffset, addrContinue);
sqlite3VdbeAddOp3(v, OP_SorterData, iTab, regSortOut, iSortTab);
bSeq = 0;
sqlite3VdbeAddOp4Int(v, OP_Unpack, regSortOut, regRow, nSortData, nKey);
}else{
addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak); VdbeCoverage(v);
codeOffset(v, p->iOffset, addrContinue);
iSortTab = iTab;
bSeq = 1;
for(i=0; i<nSortData; i++){
sqlite3VdbeAddOp3(v, OP_Column, iSortTab, nKey+bSeq+i, regRow+i);
VdbeComment((v, "%s", aOutEx[i].zName ? aOutEx[i].zName : aOutEx[i].zSpan));
}
}
for(i=0; i<nSortData; i++){
sqlite3VdbeAddOp3(v, OP_Column, iSortTab, nKey+bSeq+i, regRow+i);
VdbeComment((v, "%s", aOutEx[i].zName ? aOutEx[i].zName : aOutEx[i].zSpan));
}
switch( eDest ){
case SRT_EphemTab: {
@@ -5341,9 +5340,11 @@ int sqlite3Select(
if( groupBySort ){
sqlite3VdbeAddOp3(v, OP_SorterData, sAggInfo.sortingIdx,
sortOut, sortPTab);
sqlite3VdbeAddOp4Int(v, OP_Unpack, sortOut, iBMem, pGroupBy->nExpr, 0);
}else{
for(j=0; j<pGroupBy->nExpr; j++){
}
for(j=0; j<pGroupBy->nExpr; j++){
if( groupBySort ){
sqlite3VdbeAddOp3(v, OP_Column, sortPTab, j, iBMem+j);
}else{
sAggInfo.directMode = 1;
sqlite3ExprCode(pParse, pGroupBy->a[j].pExpr, iBMem+j);
}
-45
View File
@@ -2614,51 +2614,6 @@ op_column_error:
break;
}
/* Opcode: Unpack P1 P2 P3 P4 *
** Synopsis: r[P2@P3] = unpack(P1)
**
** Decode the P3 fields of the record object held in register P1
** start with the P4-th field and store the values in registers P2
** and following.
*/
case OP_Unpack: {
const unsigned char *aKey;
int d;
u32 idx; /* Offset in aKey[] to read from */
u16 u; /* Unsigned loop counter */
u32 szHdr;
int nField;
u32 serial_type;
int iOfst; /* Skip this many fields */
pIn1 = &aMem[pOp->p1];
assert( pIn1->flags & MEM_Blob );
aKey = (const unsigned char*)pIn1->z;
pOut = &aMem[pOp->p2];
nField = pOp->p3;
assert( pOp->p4type==P4_INT32 );
iOfst = pOp->p4.i;
idx = getVarint32(aKey, szHdr);
d = szHdr;
u = 0;
while( idx<szHdr && d<=pIn1->n ){
idx += getVarint32(&aKey[idx], serial_type);
if( iOfst ){
iOfst--;
d += sqlite3VdbeSerialTypeLen(serial_type);
}else{
memAboutToChange(p, pOut);
sqlite3VdbeMemSetNull(pOut);
pOut->enc = encoding;
d += sqlite3VdbeSerialGet(&aKey[d], serial_type, pOut);
REGISTER_TRACE((int)(pOut - aMem), pOut);
pOut++;
if( (++u)>=nField ) break;
}
}
break;
}
/* Opcode: Affinity P1 P2 * P4 *
** Synopsis: affinity(r[P1@P2])
**