From 9d8e401c2dbfeb3b8e841afb534d3098f5cc09d3 Mon Sep 17 00:00:00 2001 From: drh Date: Thu, 6 Jul 2017 13:51:50 +0000 Subject: [PATCH] More compact implementation of the typeof() SQL function. FossilOrigin-Name: efb4aab0caa4145732a5438cc2a193bc12c455b4007220564d240e75900ea8ad --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/func.c | 18 +++++++++--------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/manifest b/manifest index e8abea9d35..b35c0c6bbe 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sunnecessary\supper-to-lower\scase\sconversion\sfor\sfunction\snames\swhen\nregistering\sthe\sbuilt-in\sfunctions. -D 2017-07-06T13:23:26.761 +C More\scompact\simplementation\sof\sthe\stypeof()\sSQL\sfunction. +D 2017-07-06T13:51:50.091 F Makefile.in 081e48dfe7f995d57ce1a88ddf4d2917b4349158648a6cd45b42beae30de3a12 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 4ebb1d257cac7fb1bcb4ba59278416d410ff1c4bf59447a9c37a415f3516056a @@ -404,7 +404,7 @@ F src/delete.c 3213547e97b676c6fa79948b7a9ede4801ea04a01a2043241deafedf132ecf5d F src/expr.c cc024ddd19aa37b6672caedab90e2a5ec69a4a1a97da94c2f1a0bd81cf0cd922 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 5ff2c895fe087756d8085dc1a9bc229b5670e2a65c3929dd87c71e43649af333 -F src/func.c 9d52522cc8ae7f5cdadfe14594262f1618bc1f86083c4cd6da861b4cf5af6174 +F src/func.c 7647140a8624c66cc6e34bdf8005a92390253d6272e87c7901dc8065b563d435 F src/global.c 8a6ab6b4d91effb96ffa81b39f0d70c862abca157f8aaa194600a4a8b7923344 F src/hash.c a12580e143f10301ed5166ea4964ae2853d3905a511d4e0c44497245c7ce1f7a F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4 @@ -1628,7 +1628,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 55ecd30304517acd23f89b3450fd6a5e18ac2f79aa24a4ff693f8d71a49f7837 -R f2caa248598afe69c11c79f692296985 +P 06269257647db51fbc9f8cda88abac5db28b6f917a509768af7686dfa2b94511 +R 8d88458ca1178062a686c7622fab862c U drh -Z 44f64d9a1e77f2b97c5ca936f62c9641 +Z 16d02781d00f9c4bbd9708369c77eae3 diff --git a/manifest.uuid b/manifest.uuid index 0608919b5c..4e696488e9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -06269257647db51fbc9f8cda88abac5db28b6f917a509768af7686dfa2b94511 \ No newline at end of file +efb4aab0caa4145732a5438cc2a193bc12c455b4007220564d240e75900ea8ad \ No newline at end of file diff --git a/src/func.c b/src/func.c index 3d5a059a9f..e59432e370 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