]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add test1.c tcl bindings for sqlite3_column_text/blob_v2(). Replace, essentially...
authorstephan <stephan@noemail.net>
Wed, 2 Jul 2025 07:52:30 +0000 (07:52 +0000)
committerstephan <stephan@noemail.net>
Wed, 2 Jul 2025 07:52:30 +0000 (07:52 +0000)
FossilOrigin-Name: a3ca0adbaf7da8d79341fa88919b11d49a040e5125c67962b93a98ea43f539c9

manifest
manifest.uuid
src/test1.c
test/capi2.test
test/capi3.test

index f1bd3d174b86fe3baf1e7e4654906d90b18016f5..67d5cd38b8ec4d0ef2985c23f6d6e6a0fb8827c1 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\san\s#if\s0\sblock.
-D 2025-07-01T21:33:26.350
+C Add\stest1.c\stcl\sbindings\sfor\ssqlite3_column_text/blob_v2().\sReplace,\sessentially\srandomly,\ssome\sof\sthe\sv1\sAPI\scalls\sin\scapi2.test\sand\scapi2.test\swith\sthe\sv2\scalls\sto\sensure\sidentical\sresults.\sAdd\sa\scouple\snew\stests\scomparing\sresults\sbetween\sv1\sand\sv2.
+D 2025-07-02T07:52:30.801
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -796,7 +796,7 @@ F src/status.c 0e72e4f6be6ccfde2488eb63210297e75f569f3ce9920f6c3d77590ec6ce5ffd
 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 F src/tclsqlite.c 3c604c49e6cf4211960a9ddb9505280fd22cde32175f40884c641c0f5a286036
 F src/tclsqlite.h 65e2c761446e1c9fa0342b7d2612a703483643c8b6a316d12a65b745a4727395
-F src/test1.c 13cc07851f989141b29f7ca3c6c90f6d18f90081ab423c66716c8cb29d277d1f
+F src/test1.c bcd021fadc242b29a5e3e5e552231ca87d1ccb87c282d3a4a2c6a4203eeed8f8
 F src/test2.c 62f0830958f9075692c29c6de51b495ae8969e1bef85f239ffcd9ba5fb44a5ff
 F src/test3.c 432646f581d8af1bb495e58fc98234380250954f5d5535e507fc785eccc3987a
 F src/test4.c 0ac87fc13cdb334ab3a71823f99b6c32a6bebe5d603cd6a71d84c823d43a25a0
@@ -992,8 +992,8 @@ F test/busy2.test 20823a5d7c42fb257d9f108c66312d90b1bb4ec3d80ba6b4e371073727560f
 F test/cache.test 13bc046b26210471ca6f2889aceb1ea52dc717de
 F test/cacheflush.test af25bb1509df04c1da10e38d8f322d66eceedf61
 F test/cachespill.test 895997f84a25b323b166aecb69baab2d6380ea98f9e0bcc688c4493c535cfab9
-F test/capi2.test 4ee545824adc3eb33bf57ef89f77440b28188ec3da72e5425ff0fcdba32e8d5a
-F test/capi3.test ab90c548969613315605c555a8623f6b56e00e28d451c46a17ef73683c422c70
+F test/capi2.test fbcedffd51a60e518402ff9c461cfd4972ed3e1d2f5f4ec6f2e7a1ed71471332
+F test/capi3.test 55c421ef81f4d7cabca19bec8c42df805905a53366ef7f0a75cfea68d3fbcb8b
 F test/capi3b.test efb2b9cfd127efa84433cd7a2d72ce0454ae0dc4
 F test/capi3c.test 31d3a6778f2d06f2d9222bd7660c41a516d1518a059b069e96ebbeadb5a490f7
 F test/capi3d.test 8b778794af891b0dca3d900bd345fbc8ebd2aa2aae425a9dccdd10d5233dfbde
@@ -2208,8 +2208,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 6290a8eaddd97acd02ee417e28c2815e5f3af67acdfc1d97a2cd88b0aee823c0
-R a2e5a2d40c6748f7abef083fde88b1f9
+P 0363c430b5ab8eb8cec526933da2b32263b1959c8a2210bb0e0b1529e72c6f63
+R 5cf8215b0655d83f9ed207972481e36d
 U stephan
-Z f95681e9781d4a8b2c014ed9bd2d271e
+Z e957b7302d7d68762f67142fbbafbcac
 # Remove this line to create a well-formed Fossil manifest.
index 9b0e8b4097dbad58666142d8a5583fdfb0746c00..69e441cc4db9f0148cdba977d9858375650303a9 100644 (file)
@@ -1 +1 @@
-0363c430b5ab8eb8cec526933da2b32263b1959c8a2210bb0e0b1529e72c6f63
+a3ca0adbaf7da8d79341fa88919b11d49a040e5125c67962b93a98ea43f539c9
index 1c363ca3b06638598803228bfa1afb18a8c182f5..e29a290a64c0f6808e0f0ec03dfe9e4e39af032d 100644 (file)
@@ -5611,6 +5611,35 @@ static int SQLITE_TCLAPI test_column_blob(
   return TCL_OK;
 }
 
+/*
+** Usage: sqlite3_column_blob_v2 STMT column
+*/
+static int SQLITE_TCLAPI test_column_blob_v2(
+  void * clientData,
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  sqlite3_stmt *pStmt;
+  int col;
+  int rc;
+  int len = 0;
+  const void *pBlob = 0;
+
+  if( objc!=3 ){
+    Tcl_WrongNumArgs(interp, 1, objv, "STMT column");
+    return TCL_ERROR;
+  }
+
+  if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
+  if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
+
+  rc = sqlite3_column_blob_v2(pStmt, col, &pBlob, &len, 0);
+  if( rc ) return TCL_ERROR;
+  Tcl_SetObjResult(interp, Tcl_NewByteArrayObj(pBlob, len));
+  return TCL_OK;
+}
+
 /*
 ** Usage: sqlite3_column_double STMT column
 **
@@ -5705,6 +5734,36 @@ static int SQLITE_TCLAPI test_stmt_utf8(
   return TCL_OK;
 }
 
+/*
+** Usage: sqlite3_column_text_v2 STMT column
+*/
+static int SQLITE_TCLAPI test_stmt_utf8_v2(
+  void * clientData,        /* Pointer to SQLite API function to be invoke */
+  Tcl_Interp *interp,
+  int objc,
+  Tcl_Obj *CONST objv[]
+){
+  sqlite3_stmt *pStmt;
+  int col;
+  int len = 0;
+  const unsigned char *zRet = 0;
+
+  if( objc!=3 ){
+    Tcl_WrongNumArgs(interp, 1, objv, "STMT column");
+    return TCL_ERROR;
+  }
+
+  if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
+  if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR;
+  if( sqlite3_column_text_v2(pStmt, col, &zRet, &len, 0) ){
+    return TCL_ERROR;
+  }
+  if( zRet ){
+    Tcl_SetResult(interp, (char *)zRet, 0);
+  }
+  return TCL_OK;
+}
+
 static int SQLITE_TCLAPI test_global_recover(
   void * clientData,
   Tcl_Interp *interp,
@@ -9021,12 +9080,14 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
      { "sqlite3_data_count",            test_data_count    ,0 },
      { "sqlite3_column_type",           test_column_type   ,0 },
      { "sqlite3_column_blob",           test_column_blob   ,0 },
+     { "sqlite3_column_blob_v2",        test_column_blob_v2,0 },
      { "sqlite3_column_double",         test_column_double ,0 },
      { "sqlite3_column_int64",          test_column_int64  ,0 },
-     { "sqlite3_column_text",   test_stmt_utf8,  (void*)sqlite3_column_text },
-     { "sqlite3_column_name",   test_stmt_utf8,  (void*)sqlite3_column_name },
-     { "sqlite3_column_int",    test_stmt_int,   (void*)sqlite3_column_int  },
-     { "sqlite3_column_bytes",  test_stmt_int,   (void*)sqlite3_column_bytes},
+     { "sqlite3_column_text",    test_stmt_utf8,    (void*)sqlite3_column_text },
+     { "sqlite3_column_text_v2", test_stmt_utf8_v2, 0 },
+     { "sqlite3_column_name",    test_stmt_utf8,    (void*)sqlite3_column_name },
+     { "sqlite3_column_int",     test_stmt_int,     (void*)sqlite3_column_int  },
+     { "sqlite3_column_bytes",   test_stmt_int,     (void*)sqlite3_column_bytes},
 #ifndef SQLITE_OMIT_DECLTYPE
      { "sqlite3_column_decltype",test_stmt_utf8,(void*)sqlite3_column_decltype},
 #endif
index de47ab3d4fd4b7ccf86436250c343f7edad0a710..4ec87df42a73ccfe5195a4fe647e1a24938508b0 100644 (file)
@@ -18,14 +18,25 @@ set testdir [file dirname $argv0]
 source $testdir/tester.tcl
 
 # Return the text values from the current row pointed at by STMT as a list.
-proc get_row_values {STMT} {
+# $getter is the column-get-text function to invoke.
+proc get_row_values_impl {getter STMT} {
   set VALUES [list]
   for {set i 0} {$i < [sqlite3_data_count $STMT]} {incr i} {
-    lappend VALUES [sqlite3_column_text $STMT $i]
+    lappend VALUES [$getter $STMT $i]
   }
   return $VALUES
 }
 
+proc get_row_values {STMT} {
+  get_row_values_impl sqlite3_column_text $STMT
+}
+
+# Must produce the same result as get_row_values().
+proc get_row_values_v2 {STMT} {
+  get_row_values_impl sqlite3_column_text_v2 $STMT
+}
+
+
 # Return the column names followed by declaration types for the result set
 # of the SQL statement STMT.
 #
@@ -62,6 +73,9 @@ do_test capi2-1.3 {
 do_test capi2-1.4 {
   get_row_values $VM
 } {t1 1}
+do_test capi2-1.4_v2 {
+  get_row_values_v2 $VM
+} {t1 1}
 do_test capi2-1.5 {
   get_column_names $VM
 } {name rowid TEXT INTEGER}
@@ -124,7 +138,7 @@ do_test capi2-2.2 {
 do_test capi2-2.3 {
   set r [sqlite3_step $VM]
   lappend r [sqlite3_column_count $VM] \
-            [get_row_values $VM] \
+            [get_row_values_v2 $VM] \
             [get_column_names $VM]
 } {SQLITE_DONE 2 {} {name rowid TEXT INTEGER}}
 do_test capi2-2.4 {
@@ -191,7 +205,7 @@ do_test capi2-3.6 {
 do_test capi2-3.7 {
   list [sqlite3_step $VM] \
        [sqlite3_column_count $VM] \
-       [get_row_values $VM] \
+       [get_row_values_v2 $VM] \
        [get_column_names $VM]
 } {SQLITE_ROW 1 {{}} {5/0 {}}}
 do_test capi2-3.8 {
@@ -547,7 +561,7 @@ do_test capi2-6.25 {
 do_test capi2-6.26 {
   list [sqlite3_step $VM1] \
        [sqlite3_column_count $VM1] \
-       [get_row_values $VM1] \
+       [get_row_values_v2 $VM1] \
        [get_column_names $VM1]
 } {SQLITE_ROW 1 12 {x counter}}
 do_test capi2-6.27 {
@@ -559,7 +573,7 @@ do_test capi2-6.27 {
 do_test capi2-6.28 {
   list [sqlite3_step $VM1] \
        [sqlite3_column_count $VM1] \
-       [get_row_values $VM1] \
+       [get_row_values_v2 $VM1] \
        [get_column_names $VM1]
 } {SQLITE_ROW 1 13 {x counter}}
 do_test capi2-6.99 {
index 6319d8284d2e397eeca418e5897ed8dff073fe23..eab248256747e911437aab18a3041eef76d130d8 100644 (file)
@@ -513,6 +513,12 @@ do_test $test.5 {
   set utf8
 } $strings
 
+do_test $test.5_v2 {
+  set utf8 [list]
+  foreach i $idxlist {lappend utf8 [sqlite3_column_blob_v2 $STMT $i]}
+  set utf8
+} $strings
+
 # UTF-8
 do_test $test.6 {
   set utf8 [list]
@@ -1261,7 +1267,9 @@ do_test 20.2 {
 do_test 20.3 { sqlite3_column_type $stmt 0 } {TEXT}
 do_test 20.4 { sqlite3_column_blob $stmt 0 } {abcdefghij}
 do_test 20.5 { sqlite3_column_type $stmt 0 } {TEXT}
-do_test 20.6 { sqlite3_finalize $stmt } SQLITE_OK
+do_test 20.6 { sqlite3_column_blob_v2 $stmt 0 } {abcdefghij}
+do_test 20.7 { sqlite3_column_type $stmt 0 } {TEXT}
+do_test 20.8 { sqlite3_finalize $stmt } SQLITE_OK
 
 
 # Tests of the interface when no VFS is registered.