]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Tests for java versions of Fts5ExtensionApi.xSetAuxdata() and xGetAuxdata().
authordan <Dan Kennedy>
Thu, 14 Sep 2023 20:56:42 +0000 (20:56 +0000)
committerdan <Dan Kennedy>
Thu, 14 Sep 2023 20:56:42 +0000 (20:56 +0000)
FossilOrigin-Name: 858fa236f8b673eb03cf2242e8202cd33ae1f13a43b59bdbb2eecdb21d42ef55

ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java
manifest
manifest.uuid

index 2c2d54f3e4f597a00a898572c01248316a6e114c..212edd5516b259978e23f9ee1aadcd153d9042e7 100644 (file)
@@ -245,12 +245,47 @@ public class TesterFts5 {
       public void xDestroy(){ }
     };
 
+    /*
+    ** fts5_aux(<fts>, <value>);
+    */
+    class fts5_aux implements fts5_extension_function {
+      @Override public void call(
+          Fts5ExtensionApi ext, 
+          Fts5Context fCx,
+          sqlite3_context pCx, 
+          sqlite3_value argv[]
+      ){
+        if( argv.length>1 ){
+          throw new RuntimeException("fts5_aux: wrong number of args");
+        }
+
+        boolean bClear = (argv.length==1);
+        Object obj = ext.xGetAuxdata(fCx, bClear);
+        if( obj instanceof String ){
+          sqlite3_result_text16(pCx, (String)obj);
+        }
+
+        if( argv.length==1 ){
+          String val = sqlite3_value_text16(argv[0]);
+          if( !val.equals("") ){
+            ext.xSetAuxdata(fCx, val);
+          }
+        }
+      }
+      public void xDestroy(){ }
+    };
+
+    fts5_aux fts5_aux1 = new fts5_aux();
+
     fts5_api api = fts5_api.getInstanceForDb(db);
     api.xCreateFunction("fts5_rowid", fts5_rowid);
     api.xCreateFunction("fts5_columncount", fts5_columncount);
     api.xCreateFunction("fts5_columnsize", fts5_columnsize);
     api.xCreateFunction("fts5_columntext", fts5_columntext);
     api.xCreateFunction("fts5_columntotalsize", fts5_columntsize);
+
+    api.xCreateFunction("fts5_aux1", new fts5_aux());
+    api.xCreateFunction("fts5_aux2", new fts5_aux());
   }
 
   /* 
@@ -349,9 +384,46 @@ public class TesterFts5 {
     sqlite3_close_v2(db);
   }
 
+  /* 
+  ** Test of various Fts5ExtensionApi methods 
+  */
+  private static void test3(){
+
+    /* Open db and populate an fts5 table */
+    sqlite3 db = createNewDb();
+    do_execsql_test(db, 
+      "CREATE VIRTUAL TABLE ft USING fts5(a, b);" +
+      "INSERT INTO ft(a, b) VALUES('the one', 1);" +
+      "INSERT INTO ft(a, b) VALUES('the two', 2);" +
+      "INSERT INTO ft(a, b) VALUES('the three', 3);" +
+      "INSERT INTO ft(a, b) VALUES('the four', '');"
+    );
+    create_test_functions(db);
+
+    /* Test fts5_aux1() + fts5_aux2() - users of xGetAuxdata and xSetAuxdata */
+    do_execsql_test(db,
+      "SELECT fts5_aux1(ft, a) FROM ft('the')",
+      "[null, the one, the two, the three]"
+    );
+    do_execsql_test(db,
+      "SELECT fts5_aux2(ft, b) FROM ft('the')",
+      "[null, 1, 2, 3]"
+    );
+    do_execsql_test(db,
+      "SELECT fts5_aux1(ft, a), fts5_aux2(ft, b) FROM ft('the')",
+      "[null, null, the one, 1, the two, 2, the three, 3]"
+    );
+    do_execsql_test(db,
+      "SELECT fts5_aux1(ft, b), fts5_aux1(ft) FROM ft('the')",
+      "[null, 1, 1, 2, 2, 3, 3, null]"
+    );
+
+  }
+
   private static synchronized void runTests(){
     test1();
     test2();
+    test3();
   }
 
   public TesterFts5(){
index 6ee08bd891d69c11c0f0e004f8a29f9de9d2f494..a8c9192cbbe90308711704e63ffeab09390ead75 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C JNI:\smove\sXTokenizeCallback\sinterface\sout\sof\sthe\sFts5\sobject\s-\sthat\slevel\sof\sindirection\sis\sa\sholdover\sfrom\swhen\sthose\sclasses\swere\sin\sthe\score\spackage.
-D 2023-09-14T20:02:49.904
+C Tests\sfor\sjava\sversions\sof\sFts5ExtensionApi.xSetAuxdata()\sand\sxGetAuxdata().
+D 2023-09-14T20:56:42.867
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -276,7 +276,7 @@ F ext/jni/src/org/sqlite/jni/fts5/Fts5Context.java 7058da97059b8e156c17561a47ecd
 F ext/jni/src/org/sqlite/jni/fts5/Fts5ExtensionApi.java b1b23431ece266c3308c1089d4cc3d2762a36ff4ea720196be1bcd75577abb9a
 F ext/jni/src/org/sqlite/jni/fts5/Fts5PhraseIter.java 2a7f3d76a1206e6a43d4c4ed9609b294d5431cc7d8fb875d8419f76efa6e56dc
 F ext/jni/src/org/sqlite/jni/fts5/Fts5Tokenizer.java cc9a53846a168a215238af224c31cef0e8379780e36e8a5e743b00c08145cf19
-F ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java 3e78baa14a8df78e6dedbf714d82d223ca7327aa348de2fd84ee04ce60c2ea3f
+F ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java 29899c85710b6210f34beccf97fa853369c87dec25c66f289b7c620f4340ed8d
 F ext/jni/src/org/sqlite/jni/fts5/XTokenizeCallback.java 1efd1220ea328a32f2d2a1b16c735864159e929480f71daad4de9d5944839167
 F ext/jni/src/org/sqlite/jni/fts5/fts5_api.java 6071bf76c2c6a0f035b99adc76715b0324f540a441452b4ff6b94d9360a6a83d
 F ext/jni/src/org/sqlite/jni/fts5/fts5_extension_function.java 1fe0f5692c1d67475d12b067f0469949073446f18c56eba5ee5da6ddd06db9b9
@@ -2121,8 +2121,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 4ce2a7e8ed0f2859efc1038fd0812bc2b667be1479f45c081deccc2cf188c807
-R f711e3426de9db531a6d618c8123212a
-U stephan
-Z f05bc452e4c4de09fefc2072b1c37954
+P 385ec08570451c0be212677d1b681c13d225dc690965effa2293e64cb3d56023
+R a2d5d1579429460e87c61454644eb573
+U dan
+Z cb1a55083883473c283480a0f316b0cc
 # Remove this line to create a well-formed Fossil manifest.
index 5d32a8441f4da112aea33e87d29aabf2956f190e..920aa795621fa7fc4ff741713722e601ec96ca4c 100644 (file)
@@ -1 +1 @@
-385ec08570451c0be212677d1b681c13d225dc690965effa2293e64cb3d56023
\ No newline at end of file
+858fa236f8b673eb03cf2242e8202cd33ae1f13a43b59bdbb2eecdb21d42ef55
\ No newline at end of file