]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
In the CLI, the magic parameter :inf and :nan bind floating point values
authordrh <>
Wed, 22 Mar 2023 16:01:06 +0000 (16:01 +0000)
committerdrh <>
Wed, 22 Mar 2023 16:01:06 +0000 (16:01 +0000)
Infinity and NaN, respectively, as an add to testing SQLite's handling of
those quantities.

FossilOrigin-Name: c70a61d8fbfb722679398c211aa48ccd84a392a6b59ba70551fe3a9fbab9a6d5

manifest
manifest.uuid
src/shell.c.in

index cfbaa56a74df17d6b296ae78bc176826494a168c..fe149a5cb302c2800189a4bb4070f5077cd13a5a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Update\sthe\sversion\snumber\sfor\sthe\sTEA\starball\sto\s3.42.0,\sto\smatch\sthe\score.
-D 2023-03-22T14:51:22.647
+C In\sthe\sCLI,\sthe\smagic\sparameter\s:inf\sand\s:nan\sbind\sfloating\spoint\svalues\nInfinity\sand\sNaN,\srespectively,\sas\san\sadd\sto\stesting\sSQLite's\shandling\sof\nthose\squantities.
+D 2023-03-22T16:01:06.778
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -626,7 +626,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 3e53e02ce87c9582bd7e7d22f13f4094a271678d9dc72820fa257a2abb5e4032
 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
 F src/select.c 64a4b48a14f5d19a5ddc4afde37a435aebb92113f52653f8fe9e69fc3e9ff9aa
-F src/shell.c.in 7394f84ace7bcff18c686b09ff7a1c02ffc5fb8fb851b3b2be128762ee71589e
+F src/shell.c.in e66360191de42f8b43454886a059e3eb983e6dc0f2bd855dd4ff5244694f61a6
 F src/sqlite.h.in f01033703156615566bb329144d736a37fc35a278049db91127782a9c799b938
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h da473ce2b3d0ae407a6300c4a164589b9a6bfdbec9462688a8593ff16f3bb6e4
@@ -2051,8 +2051,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 badf7d0e3cfa6efaff4b132cb4ecca79a16e73197c5e275db14ccb5ff938276d
-R f9a0e32a5a944935ccdf4d832a3793b8
+P 03e6918e7f749c3ca1fa66df28b203ff26680f129003e20c71ca246cf7ff34fe
+R 8e977335e4f9dd507a1a79512cd70e26
 U drh
-Z c47bf29e585485f3f7c489971119cf34
+Z e01204911fdf00ed5178cd1186ef489a
 # Remove this line to create a well-formed Fossil manifest.
index 4085c2d2fbae211b8dd14a5143102e8186ccdfa8..50d888f24e61b80e10a745bf973c0f6ca1d70f3f 100644 (file)
@@ -1 +1 @@
-03e6918e7f749c3ca1fa66df28b203ff26680f129003e20c71ca246cf7ff34fe
\ No newline at end of file
+c70a61d8fbfb722679398c211aa48ccd84a392a6b59ba70551fe3a9fbab9a6d5
\ No newline at end of file
index 199a6df9ddf93435e93f41388686d5bafc960136..b97889f9386ace652c6e7c9fc91d3a434b0b4d5e 100644 (file)
@@ -99,6 +99,7 @@ typedef unsigned short int u16;
 #include <string.h>
 #include <stdio.h>
 #include <assert.h>
+#include <math.h>
 #include "sqlite3.h"
 typedef sqlite3_int64 i64;
 typedef sqlite3_uint64 u64;
@@ -3387,12 +3388,13 @@ static void bind_prepared_stmt(ShellState *pArg, sqlite3_stmt *pStmt){
   if( nVar==0 ) return;  /* Nothing to do */
   if( sqlite3_table_column_metadata(pArg->db, "TEMP", "sqlite_parameters",
                                     "key", 0, 0, 0, 0, 0)!=SQLITE_OK ){
-    return; /* Parameter table does not exist */
+    rc = SQLITE_NOTFOUND;
+    pQ = 0;
+  }else{
+    rc = sqlite3_prepare_v2(pArg->db,
+            "SELECT value FROM temp.sqlite_parameters"
+            " WHERE key=?1", -1, &pQ, 0);
   }
-  rc = sqlite3_prepare_v2(pArg->db,
-          "SELECT value FROM temp.sqlite_parameters"
-          " WHERE key=?1", -1, &pQ, 0);
-  if( rc || pQ==0 ) return;
   for(i=1; i<=nVar; i++){
     char zNum[30];
     const char *zVar = sqlite3_bind_parameter_name(pStmt, i);
@@ -3401,8 +3403,12 @@ static void bind_prepared_stmt(ShellState *pArg, sqlite3_stmt *pStmt){
       zVar = zNum;
     }
     sqlite3_bind_text(pQ, 1, zVar, -1, SQLITE_STATIC);
-    if( sqlite3_step(pQ)==SQLITE_ROW ){
+    if( rc==SQLITE_OK && pQ && sqlite3_step(pQ)==SQLITE_ROW ){
       sqlite3_bind_value(pStmt, i, sqlite3_column_value(pQ, 0));
+    }else if( sqlite3_strlike("_NAN", zVar, 0)==0 ){
+      sqlite3_bind_double(pStmt, i, NAN);
+    }else if( sqlite3_strlike("_INF", zVar, 0)==0 ){
+      sqlite3_bind_double(pStmt, i, INFINITY);
     }else{
       sqlite3_bind_null(pStmt, i);
     }