1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00

Merge the Mem.r value into the MemValue union as Mem.u.r. Hence, a Mem can

now store an integer or a real but not both at the same time.  Strings are
still stored in a separate element Mem.z, for now.

FossilOrigin-Name: 4c8c89d7e62aecfe2eb735f7bb114aed6b452847
This commit is contained in:
drh
2014-09-18 17:52:15 +00:00
parent 24a096297e
commit 74eaba4de2
8 changed files with 58 additions and 56 deletions

View File

@@ -161,7 +161,8 @@ struct VdbeFrame {
** integer etc.) of the same value.
*/
struct Mem {
union {
union MemValue {
double r; /* Real value used when MEM_Realis set in flags */
i64 i; /* Integer value used when MEM_Int is set in flags */
int nZero; /* Used when bit MEM_Zero is set in flags */
FuncDef *pDef; /* Used only when flags==MEM_Agg */
@@ -171,10 +172,9 @@ struct Mem {
u16 flags; /* Some combination of MEM_Null, MEM_Str, MEM_Dyn, etc. */
u8 enc; /* SQLITE_UTF8, SQLITE_UTF16BE, SQLITE_UTF16LE */
int n; /* Number of characters in string value, excluding '\0' */
double r; /* Real value */
char *z; /* String or BLOB value */
char *zMalloc; /* Dynamic buffer allocated by sqlite3_malloc() */
/* ShallowCopy only needs to copy the information above */
char *zMalloc; /* Dynamic buffer allocated by sqlite3_malloc() */
sqlite3 *db; /* The associated database connection */
void (*xDel)(void*);/* Destructor for Mem.z - only valid if MEM_Dyn */
#ifdef SQLITE_DEBUG