1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-07 02:42:48 +03:00

Ensure that the typeof() function always returns SQLITE_FLOAT for floating

point values even when the value is stored as an integer to save space.

FossilOrigin-Name: 48889530a9de22fee536edfd1627be62396ed18d842d5fd6d91e010b4337be95
This commit is contained in:
drh
2019-05-02 17:45:52 +00:00
parent ee253f7881
commit de7109e61b
5 changed files with 69 additions and 14 deletions

View File

@@ -266,7 +266,54 @@ int sqlite3_value_type(sqlite3_value* pVal){
SQLITE_NULL, /* 0x1d */
SQLITE_INTEGER, /* 0x1e */
SQLITE_NULL, /* 0x1f */
SQLITE_BLOB, /* 0x20 */
SQLITE_NULL, /* 0x21 */
SQLITE_TEXT, /* 0x22 */
SQLITE_NULL, /* 0x23 */
SQLITE_FLOAT, /* 0x24 */
SQLITE_NULL, /* 0x25 */
SQLITE_FLOAT, /* 0x26 */
SQLITE_NULL, /* 0x27 */
SQLITE_FLOAT, /* 0x28 */
SQLITE_NULL, /* 0x29 */
SQLITE_FLOAT, /* 0x2a */
SQLITE_NULL, /* 0x2b */
SQLITE_FLOAT, /* 0x2c */
SQLITE_NULL, /* 0x2d */
SQLITE_FLOAT, /* 0x2e */
SQLITE_NULL, /* 0x2f */
SQLITE_BLOB, /* 0x30 */
SQLITE_NULL, /* 0x31 */
SQLITE_TEXT, /* 0x32 */
SQLITE_NULL, /* 0x33 */
SQLITE_FLOAT, /* 0x34 */
SQLITE_NULL, /* 0x35 */
SQLITE_FLOAT, /* 0x36 */
SQLITE_NULL, /* 0x37 */
SQLITE_FLOAT, /* 0x38 */
SQLITE_NULL, /* 0x39 */
SQLITE_FLOAT, /* 0x3a */
SQLITE_NULL, /* 0x3b */
SQLITE_FLOAT, /* 0x3c */
SQLITE_NULL, /* 0x3d */
SQLITE_FLOAT, /* 0x3e */
SQLITE_NULL, /* 0x3f */
};
#ifdef SQLITE_DEBUG
{
int eType = SQLITE_BLOB;
if( pVal->flags & MEM_Null ){
eType = SQLITE_NULL;
}else if( pVal->flags & MEM_Int ){
eType = (pVal->flags & MEM_IntReal) ? SQLITE_FLOAT : SQLITE_INTEGER;
}else if( pVal->flags & MEM_Real ){
eType = SQLITE_FLOAT;
}else if( pVal->flags & MEM_Str ){
eType = SQLITE_TEXT;
}
assert( eType == aType[pVal->flags&MEM_AffMask] );
}
#endif
return aType[pVal->flags&MEM_AffMask];
}