Index: src/expr.c ================================================================== --- src/expr.c +++ src/expr.c @@ -1910,19 +1910,10 @@ assert( p->sign==0 ); assert( negateFlag==0 || negateFlag==1 ); p->sign = negateFlag; sqlite4VdbeAddOp4(v, OP_Num, 0, iMem, 0, (const char *)p, P4_NUM); } -#if 0 - double value; - char *zV; - sqlite4AtoF(z, &value, sqlite4Strlen30(z), SQLITE4_UTF8); - assert( !sqlite4IsNaN(value) ); /* The new AtoF never returns NaN */ - if( negateFlag ) value = -value; - zV = dup8bytes(v, (char*)&value); - sqlite4VdbeAddOp4(v, OP_Real, 0, iMem, 0, zV, P4_REAL); -#endif } } #endif @@ -1949,26 +1940,10 @@ p = (sqlite4_num *)sqlite4DbMallocRaw(pParse->db, sizeof(sqlite4_num)); if( p ){ *p = sqlite4_num_from_text(z, -1, (negFlag ? SQLITE4_NEGATIVE : 0), 0); sqlite4VdbeAddOp4(v, OP_Num, p->e==0, iMem, 0, (const char *)p, P4_NUM); } - -#if 0 - c = sqlite4Atoi64(z, &value, sqlite4Strlen30(z), SQLITE4_UTF8); - if( c==0 || (c==2 && negFlag) ){ - char *zV; - if( negFlag ){ value = c==2 ? SMALLEST_INT64 : -value; } - zV = dup8bytes(v, (char*)&value); - sqlite4VdbeAddOp4(v, OP_Int64, 0, iMem, 0, zV, P4_INT64); - }else{ -#ifdef SQLITE4_OMIT_FLOATING_POINT - sqlite4ErrorMsg(pParse, "oversized integer: %s%s", negFlag ? "-" : "", z); -#else - codeReal(v, z, negFlag, iMem); -#endif - } -#endif } } /* ** Clear a cache entry. Index: src/pragma.c ================================================================== --- src/pragma.c +++ src/pragma.c @@ -45,15 +45,17 @@ ** Generate code to return a single integer value. */ static void returnSingleInt(Parse *pParse, const char *zLabel, i64 value){ Vdbe *v = sqlite4GetVdbe(pParse); int mem = ++pParse->nMem; - i64 *pI64 = sqlite4DbMallocRaw(pParse->db, sizeof(value)); - if( pI64 ){ - memcpy(pI64, &value, sizeof(value)); + sqlite4_num *pNum; + + pNum = sqlite4DbMallocRaw(pParse->db, sizeof(value)); + if( pNum ){ + *pNum = sqlite4_num_from_int64(value); } - sqlite4VdbeAddOp4(v, OP_Int64, 0, mem, 0, (char*)pI64, P4_INT64); + sqlite4VdbeAddOp4(v, OP_Num, 1, mem, 0, (char *)pNum, P4_NUM); sqlite4VdbeSetNumCols(v, 1); sqlite4VdbeSetColName(v, 0, COLNAME_NAME, zLabel, SQLITE4_STATIC); sqlite4VdbeAddOp2(v, OP_ResultRow, mem, 1); } Index: src/vdbe.c ================================================================== --- src/vdbe.c +++ src/vdbe.c @@ -848,35 +848,10 @@ case OP_Integer: { /* out2-prerelease */ pOut->u.num = sqlite4_num_from_int64((i64)pOp->p1); break; } -/* Opcode: Int64 * P2 * P4 * -** -** P4 is a pointer to a 64-bit integer value. -** Write that value into register P2. -*/ -case OP_Int64: { /* out2-prerelease */ - assert( pOp->p4.pI64!=0 ); - pOut->u.num = sqlite4_num_from_int64(*pOp->p4.pI64); - break; -} - -#ifndef SQLITE4_OMIT_FLOATING_POINT -/* Opcode: Real * P2 * P4 * -** -** P4 is a pointer to a 64-bit floating point value. -** Write that value into register P2. -*/ -case OP_Real: { /* same as TK_FLOAT, out2-prerelease */ - pOut->flags = MEM_Real; - assert( !sqlite4IsNaN(*pOp->p4.pReal) ); - pOut->u.num = sqlite4_num_from_double(*pOp->p4.pReal); - break; -} -#endif - /* Opcode: Num P1 P2 * P4 * ** ** P4 is a pointer to an sqlite4_num value. Write that value into ** register P2. Set the register flags to MEM_Int if P1 is non-zero, ** or MEM_Real otherwise.