Combine the OP_Column and OP_DfltValue opcodes. (CVS 4664)

FossilOrigin-Name: c30f8206353f32a08ef0b323c9fd0bdbeaa28b02
This commit is contained in:
danielk1977 2008-01-03 08:08:40 +00:00
parent 207872a488
commit 60585ddc7d
4 changed files with 13 additions and 28 deletions

@ -1,5 +1,5 @@
C Change\sOP_OpenRead\sand\sOP_OpenWrite\sso\sthat\sthe\sdatabase\snumber\sis\sread\sfrom\sthe\sP3\soperand,\snot\sthe\sstack.\s(CVS\s4663)
D 2008-01-03T07:54:24
C Combine\sthe\sOP_Column\sand\sOP_DfltValue\sopcodes.\s(CVS\s4664)
D 2008-01-03T08:08:40
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in 30789bf70614bad659351660d76b8e533f3340e9
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -164,11 +164,11 @@ F src/test_tclvar.c b2d1115e4d489179d3f029e765211b2ad527ba59
F src/test_thread.c e297dd41db0b249646e69f97d36ec13e56e8b730
F src/tokenize.c a4e04438c11fed2c67ec47fe3edbef9cca2d1b48
F src/trigger.c e7642cf61056655905aaba8db1ca51d299a1003b
F src/update.c c67129529717f420f2955d735e04bb4d28aa2e7b
F src/update.c 587df2777e78a47d2c4399059cdd7a2cea5e0b19
F src/utf.c ef4b7d83bae533b76c3e1bf635b113fdad86a736
F src/util.c 05f31144bbd3f1a24f4139ae029c42545cb72624
F src/vacuum.c 3f34f278809bf3eb0b62ec46ff779e9c385b28f0
F src/vdbe.c 847acbfd9d55a59725fb02c004af8158a9cd09a0
F src/vdbe.c 429493ced32e5bb3d17fabd4f893374ebe5ffdf2
F src/vdbe.h ad5fd7aa694928e54efa84ac8f8133b77053c97d
F src/vdbeInt.h 2985f1369273e635898cf5952237efcb3fdb21f3
F src/vdbeapi.c bf615ff2cf2b121f1609cbadd4f52720289733b5
@ -603,7 +603,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P b166c33a7b9a58d571619d2248019eda09651dd2
R 8be529e6a54294a6d1844c01bcfcfc53
P 35da261daf602b1e938f05bbad1ff99213d9f4b9
R 20b90fa8179664d61eeec8c990a7aa2a
U danielk1977
Z d1a83a5d28422a97fb0c22148135704a
Z 86771e92c9dc1d8cb50d685596a6b3c2

@ -1 +1 @@
35da261daf602b1e938f05bbad1ff99213d9f4b9
c30f8206353f32a08ef0b323c9fd0bdbeaa28b02

@ -12,7 +12,7 @@
** This file contains C code routines that are called by the parser
** to handle UPDATE statements.
**
** $Id: update.c,v 1.150 2008/01/03 07:54:24 danielk1977 Exp $
** $Id: update.c,v 1.151 2008/01/03 08:08:40 danielk1977 Exp $
*/
#include "sqliteInt.h"
@ -64,7 +64,6 @@ void sqlite3ColumnDefault(Vdbe *v, Table *pTab, int i){
sqlite3ValueFromExpr(sqlite3VdbeDb(v), pCol->pDflt, enc,
pCol->affinity, &pValue);
if( pValue ){
sqlite3VdbeAddOp2(v, OP_DfltValue, 0, 0);
sqlite3VdbeChangeP4(v, -1, (const char *)pValue, P4_MEM);
}
}

@ -43,7 +43,7 @@
** in this file for details. If in doubt, do not deviate from existing
** commenting and indentation practices when changing or adding code.
**
** $Id: vdbe.c,v 1.666 2008/01/03 07:54:24 danielk1977 Exp $
** $Id: vdbe.c,v 1.667 2008/01/03 08:08:40 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@ -2028,7 +2028,7 @@ case OP_SetNumColumns: { /* no-push */
break;
}
/* Opcode: Column P1 P2 P3 *
/* Opcode: Column P1 P2 P3 P4 *
**
** Interpret the data that cursor P1 points to as a structure built using
** the MakeRecord instruction. (See the MakeRecord opcode for additional
@ -2259,9 +2259,8 @@ case OP_Column: {
sqlite3VdbeSerialGet((u8*)zData, aType[p2], pDest);
pDest->enc = encoding;
}else{
if( pOp[1].opcode==OP_DfltValue ){
assert( pOp[1].p4type==P4_MEM );
sqlite3VdbeMemShallowCopy(pDest, (Mem *)(pOp[1].p4.p), MEM_Static);
if( pOp->p4type==P4_MEM ){
sqlite3VdbeMemShallowCopy(pDest, (Mem *)(pOp->p4.p), MEM_Static);
}else{
assert( pDest->flags==MEM_Null );
}
@ -2286,22 +2285,9 @@ case OP_Column: {
rc = sqlite3VdbeMemMakeWriteable(pDest);
op_column_out:
if( pOp[1].opcode==OP_DfltValue ){
pc++;
}
break;
}
/* Opcode: DfltValue * * P4
**
** This instruction always follows an OP_Column. This instruction
** does nothing by itself. It is just a place holder for the default
** value for the previous OP_Column instruction.
*/
case OP_DfltValue: { /* no-push */
assert( 0 );
}
/* Opcode: MakeRecord P1 P2 P4
**
** Convert the top abs(P1) entries of the stack into a single entry