aboutsummaryrefslogtreecommitdiff
path: root/src/func.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2017-07-06 13:51:50 +0000
committerdrh <drh@noemail.net>2017-07-06 13:51:50 +0000
commit9d8e401c2dbfeb3b8e841afb534d3098f5cc09d3 (patch)
tree33a0f58f8fbf7589200da9b881ae3110509c23ec /src/func.c
parentebaaa67db22cc4831b988ed609649a9e5fd4f8ad (diff)
downloadsqlite-9d8e401c2dbfeb3b8e841afb534d3098f5cc09d3.tar.gz
sqlite-9d8e401c2dbfeb3b8e841afb534d3098f5cc09d3.zip
More compact implementation of the typeof() SQL function.
FossilOrigin-Name: efb4aab0caa4145732a5438cc2a193bc12c455b4007220564d240e75900ea8ad
Diffstat (limited to 'src/func.c')
-rw-r--r--src/func.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/func.c b/src/func.c
index 3d5a059a9..e59432e37 100644
--- a/src/func.c
+++ b/src/func.c
@@ -76,16 +76,16 @@ static void typeofFunc(
int NotUsed,
sqlite3_value **argv
){
- const char *z = 0;
+ static const char *azType[] = { "integer", "real", "text", "blob", "null" };
+ int i = sqlite3_value_type(argv[0]) - 1;
UNUSED_PARAMETER(NotUsed);
- switch( sqlite3_value_type(argv[0]) ){
- case SQLITE_INTEGER: z = "integer"; break;
- case SQLITE_TEXT: z = "text"; break;
- case SQLITE_FLOAT: z = "real"; break;
- case SQLITE_BLOB: z = "blob"; break;
- default: z = "null"; break;
- }
- sqlite3_result_text(context, z, -1, SQLITE_STATIC);
+ assert( i>=0 && i<ArraySize(azType) );
+ assert( SQLITE_INTEGER==1 );
+ assert( SQLITE_FLOAT==2 );
+ assert( SQLITE_TEXT==3 );
+ assert( SQLITE_BLOB==4 );
+ assert( SQLITE_NULL==5 );
+ sqlite3_result_text(context, azType[i], -1, SQLITE_STATIC);
}