]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
More compact implementation of the typeof() SQL function.
authordrh <drh@noemail.net>
Thu, 6 Jul 2017 13:51:50 +0000 (13:51 +0000)
committerdrh <drh@noemail.net>
Thu, 6 Jul 2017 13:51:50 +0000 (13:51 +0000)
FossilOrigin-Name: efb4aab0caa4145732a5438cc2a193bc12c455b4007220564d240e75900ea8ad

manifest
manifest.uuid
src/func.c

index e8abea9d35d44cf4a66324d9cfbd78271789fecc..b35c0c6bbe694f56b157e090c82d4e97ebe8ebb5 100644 (file)
--- 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
index 0608919b5c6463a4324f318c91f31db2342406cc..4e696488e9c0d27283d99ee0314a636ae43b4591 100644 (file)
@@ -1 +1 @@
-06269257647db51fbc9f8cda88abac5db28b6f917a509768af7686dfa2b94511
\ No newline at end of file
+efb4aab0caa4145732a5438cc2a193bc12c455b4007220564d240e75900ea8ad
\ No newline at end of file
index 3d5a059a9f1fa4ee5def89bed9bd791a207ec210..e59432e370669448fb1851403e37e5f58f851f07 100644 (file)
@@ -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);
 }