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

Add the experimental affinity() SQL function when SQLITE_DEBUG is defined.

FossilOrigin-Name: bed0eaa5f50112e64fc97a2afdc9d56cf8f5026a
This commit is contained in:
drh
2017-01-03 14:45:35 +00:00
5 changed files with 30 additions and 10 deletions

View File

@@ -1,5 +1,5 @@
C Defer\ssize\schecking\son\srow-value\sassignments\sfor\swhen\sthe\sRHS\sis\sa\sSELECT\nuntil\safter\sthe\s"*"\swildcards\shave\sbeen\sexpanded.
D 2017-01-03T13:45:22.450
C Add\sthe\sexperimental\saffinity()\sSQL\sfunction\swhen\sSQLITE_DEBUG\sis\sdefined.
D 2017-01-03T14:45:35.313
F Makefile.in 41bd4cad981487345c4a84081074bcdb876e4b2e
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
@@ -341,10 +341,10 @@ F src/ctime.c 9f2296a4e5d26ebf0e0d95a0af4628f1ea694e7a
F src/date.c dc3f1391d9297f8c748132813aaffcb117090d6e
F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
F src/delete.c c8bc10d145c9666a34ae906250326fdaa8d58fa5
F src/expr.c 59418cecc99adfb5cdd6c088ff38c1dde827e077
F src/expr.c 449cbb8b9857ff8eb685b72555086818a178858c
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 2e9aabe1aee76273aff8a84ee92c464e095400ae
F src/func.c d8582ee91975975645f206db332c38f534b783ad
F src/func.c c67273e1ec08abbdcc14c189892a3ff6eeece86b
F src/global.c 4a34512d82fc5aa13c802db06bcfff5e1d3de955
F src/hash.c 63d0ee752a3b92d4695b2b1f5259c4621b2cfebd
F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4
@@ -393,7 +393,7 @@ F src/shell.c 6095531aa900decdaa765e0f3993fba7153c92c1
F src/sqlite.h.in e8e2d108d82647f0a812fdb74accf91c1ec08ddc
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
F src/sqliteInt.h 943ba94907e64b4325ff99583bdca166a8278331
F src/sqliteInt.h 2c22eae7a29f17e0dfee9737d4844d7c08cc38cd
F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
@@ -1541,8 +1541,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P abc27b6023e28a717bfa15648ddc152bda9c7b96 696219b11049930cdbc38f574820f4bbaf8621bb
R 8e229780f94246cbc66f37b63195235a
T +closed 696219b11049930cdbc38f574820f4bbaf8621bb
P 36944be6be5c42096f5da84187ff203af26b08ae f778f58ae4ea3e16f51b94591a2c1e563dcb0cde
R 4de702ec2e06c17a2db8893398d4255a
T +closed f778f58ae4ea3e16f51b94591a2c1e563dcb0cde
U drh
Z c02d09c2f2bfe5e823a2e301838383db
Z ab80b4c4af6ffab14c74e7e3612d1ec8

View File

@@ -1 +1 @@
36944be6be5c42096f5da84187ff203af26b08ae
bed0eaa5f50112e64fc97a2afdc9d56cf8f5026a

View File

@@ -3660,6 +3660,22 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
return sqlite3ExprCodeTarget(pParse, pFarg->a[0].pExpr, target);
}
#ifdef SQLITE_DEBUG
/* The AFFINITY() function evaluates to a string that describes
** the type affinity of the argument. This is used for testing of
** the SQLite type logic.
*/
if( pDef->funcFlags & SQLITE_FUNC_AFFINITY ){
const char *azAff[] = { "blob", "text", "numeric", "integer", "real" };
char aff;
assert( nFarg==1 );
aff = sqlite3ExprAffinity(pFarg->a[0].pExpr);
sqlite3VdbeLoadString(v, target,
aff ? azAff[aff-SQLITE_AFF_BLOB] : "none");
return target;
}
#endif
for(i=0; i<nFarg; i++){
if( i<32 && sqlite3ExprIsConstant(pFarg->a[i].pExpr) ){
testcase( i==31 );

View File

@@ -1775,6 +1775,9 @@ void sqlite3RegisterBuiltinFunctions(void){
FUNCTION2(unlikely, 1, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY),
FUNCTION2(likelihood, 2, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY),
FUNCTION2(likely, 1, 0, 0, noopFunc, SQLITE_FUNC_UNLIKELY),
#ifdef SQLITE_DEBUG
FUNCTION2(affinity, 1, 0, 0, noopFunc, SQLITE_FUNC_AFFINITY),
#endif
FUNCTION(ltrim, 1, 1, 0, trimFunc ),
FUNCTION(ltrim, 2, 1, 0, trimFunc ),
FUNCTION(rtrim, 1, 2, 0, trimFunc ),

View File

@@ -1565,6 +1565,7 @@ struct FuncDestructor {
#define SQLITE_FUNC_MINMAX 0x1000 /* True for min() and max() aggregates */
#define SQLITE_FUNC_SLOCHNG 0x2000 /* "Slow Change". Value constant during a
** single query - might change over time */
#define SQLITE_FUNC_AFFINITY 0x4000 /* Built-in affinity() function */
/*
** The following three macros, FUNCTION(), LIKEFUNC() and AGGREGATE() are