From: drh Date: Mon, 10 May 2004 12:07:10 +0000 (+0000) Subject: Add flags values to the Mem structure to accomodate BLOBs and to show X-Git-Tag: version-3.6.10~4732 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3dc0b8ebe380b46705bb9dd2275ee0285889d451;p=thirdparty%2Fsqlite.git Add flags values to the Mem structure to accomodate BLOBs and to show the representation of strings. (CVS 1341) FossilOrigin-Name: 3af283f483f75795d5b03dc8fd886aaf326d50b7 --- diff --git a/manifest b/manifest index db7e62886c..3155975733 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Change\sthe\snames\sof\sexternal\ssymbols\sfrom\ssqlite_XXX\sto\ssqlite3_XXX.\s(CVS\s1340) -D 2004-05-10T10:37:19 +C Add\sflags\svalues\sto\sthe\sMem\sstructure\sto\saccomodate\sBLOBs\sand\sto\sshow\nthe\srepresentation\sof\sstrings.\s(CVS\s1341) +D 2004-05-10T12:07:11 F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -65,7 +65,7 @@ F src/util.c 74ee316594f68c41aed1884d737ab4085d479455 F src/vacuum.c c134702e023db8778e6be59ac0ea7b02315b5476 F src/vdbe.c 5cd18c8a3ab826f02ef1ce88a5798ec744337b30 F src/vdbe.h 2dc4d1161b64f5684faa6a2d292e318a185ecb2e -F src/vdbeInt.h 742e257653aa4249fef3c4313f7e414387b6d7f6 +F src/vdbeInt.h 2567223b73d8807d61f8141d9f5e5f7f2975f50a F src/vdbeaux.c 943484a2437b6cf40d1ffd3d62e48b5c9a043c5a F src/where.c 487e55b1f64c8fbf0f46a9a90c2247fc45ae6a9a F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242 @@ -187,7 +187,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P 19b100ec0d088b2cca147c967a80d18403b7ee86 -R f2908d3295f9c85321a4f31d49755326 -U danielk1977 -Z a170a8ad66f9cc57576a3dbf5696300c +P ac46bd686d2211813d254af578fe4e211162bc4b +R 4a9fc99f56e83c67635aeaf2f3df4688 +U drh +Z 2e2c13a294ecee6121fff95c45eff825 diff --git a/manifest.uuid b/manifest.uuid index 1697e92a09..50437f9ad2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ac46bd686d2211813d254af578fe4e211162bc4b \ No newline at end of file +3af283f483f75795d5b03dc8fd886aaf326d50b7 \ No newline at end of file diff --git a/src/vdbeInt.h b/src/vdbeInt.h index 5ce63b7512..9d254f8ccb 100644 --- a/src/vdbeInt.h +++ b/src/vdbeInt.h @@ -114,22 +114,37 @@ struct Mem { int n; /* Number of characters in string value, including '\0' */ int flags; /* Some combination of MEM_Null, MEM_Str, MEM_Dyn, etc. */ double r; /* Real value */ - char *z; /* String value */ + char *z; /* String or BLOB value */ char zShort[NBFS]; /* Space for short strings */ }; typedef struct Mem Mem; /* -** Allowed values for Mem.flags +** Allowed values for Mem.flags. +** +** The first 5 values determine the data type(s). Null and Blob must +** occur alone. But Str, Int, and Real can occur together. +** +** The next 3 utf entries determine the text representation for strings. +** These values are only meaningful if the type is Str. +** +** The last 4 values specify what kind of memory Mem.z points to. +** These valus are only meaningful if the Str or Blob types are used. */ #define MEM_Null 0x0001 /* Value is NULL */ #define MEM_Str 0x0002 /* Value is a string */ #define MEM_Int 0x0004 /* Value is an integer */ #define MEM_Real 0x0008 /* Value is a real number */ -#define MEM_Dyn 0x0010 /* Need to call sqliteFree() on Mem.z */ -#define MEM_Static 0x0020 /* Mem.z points to a static string */ -#define MEM_Ephem 0x0040 /* Mem.z points to an ephemeral string */ -#define MEM_Short 0x0080 /* Mem.z points to Mem.zShort */ +#define MEM_Blob 0x0010 /* Value is a BLOB */ + +#define MEM_Utf8 0x0020 /* String uses UTF-8 encoding */ +#define MEM_Utf16be 0x0040 /* String uses UTF-16 big-endian */ +#define MEM_Utf16le 0x0080 /* String uses UTF-16 little-endian */ + +#define MEM_Dyn 0x0100 /* Need to call sqliteFree() on Mem.z */ +#define MEM_Static 0x0200 /* Mem.z points to a static string */ +#define MEM_Ephem 0x0400 /* Mem.z points to an ephemeral string */ +#define MEM_Short 0x0800 /* Mem.z points to Mem.zShort */ /* The following MEM_ value appears only in AggElem.aMem.s.flag fields. ** It indicates that the corresponding AggElem.aMem.z points to a @@ -306,6 +321,3 @@ int sqlite3VdbeSerialLen(const Mem *); int sqlite3VdbeDeserialize(Mem *, const unsigned char *); int sqlite2BtreeKeyCompare(BtCursor *, const void *, int, int, int *); - - -