]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Export the column-metadata APIs to WASM. Doing so requires a non-default build of... wasm-column-metadata
authorstephan <stephan@noemail.net>
Wed, 18 Jun 2025 15:37:04 +0000 (15:37 +0000)
committerstephan <stephan@noemail.net>
Wed, 18 Jun 2025 15:37:04 +0000 (15:37 +0000)
FossilOrigin-Name: 59db3f639d1073678805dea26a4686eddfb238f055aa90bd429fc7fd33241502

ext/wasm/GNUmakefile
ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras
ext/wasm/api/sqlite3-api-glue.c-pp.js
ext/wasm/api/sqlite3-wasm.c
ext/wasm/tester1.c-pp.js
manifest
manifest.uuid

index 28387872f023d0f00171ac9bfd292128ec703a4e..bf1a49111c72d03c5671b9e4b904e27fa94d8a8a 100644 (file)
@@ -260,7 +260,8 @@ SQLITE_OPT.full-featured := \
   -DSQLITE_ENABLE_RTREE \
   -DSQLITE_ENABLE_SESSION \
   -DSQLITE_ENABLE_STMTVTAB \
-  -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+  -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION \
+  -DSQLITE_ENABLE_COLUMN_METADATA
 
 ifeq (0,$(wasm-bare-bones))
   # The so-called canonical build is full-featured:
index e635d93b32ff696a77d924997b9c67d206fd1570..01dad072e3123cebebab78b39824d8726f9ff719 100644 (file)
@@ -1,12 +1,27 @@
+_sqlite3_column_database_name
+_sqlite3_column_origin_name
+_sqlite3_column_table_name
+_sqlite3_create_module
+_sqlite3_create_module_v2
 _sqlite3_create_window_function
-_sqlite3_progress_handler
-_sqlite3_set_authorizer
+_sqlite3_declare_vtab
+_sqlite3_drop_modules
 _sqlite3_preupdate_blobwrite
 _sqlite3_preupdate_count
 _sqlite3_preupdate_depth
 _sqlite3_preupdate_hook
 _sqlite3_preupdate_new
 _sqlite3_preupdate_old
+_sqlite3_progress_handler
+_sqlite3_set_authorizer
+_sqlite3_vtab_collation
+_sqlite3_vtab_distinct
+_sqlite3_vtab_in
+_sqlite3_vtab_in_first
+_sqlite3_vtab_in_next
+_sqlite3_vtab_nochange
+_sqlite3_vtab_on_conflict
+_sqlite3_vtab_rhs_value
 _sqlite3changegroup_add
 _sqlite3changegroup_add_strm
 _sqlite3changegroup_delete
@@ -49,15 +64,3 @@ _sqlite3session_object_config
 _sqlite3session_patchset
 _sqlite3session_patchset_strm
 _sqlite3session_table_filter
-_sqlite3_create_module
-_sqlite3_create_module_v2
-_sqlite3_declare_vtab
-_sqlite3_drop_modules
-_sqlite3_vtab_collation
-_sqlite3_vtab_distinct
-_sqlite3_vtab_in
-_sqlite3_vtab_in_first
-_sqlite3_vtab_in_next
-_sqlite3_vtab_nochange
-_sqlite3_vtab_on_conflict
-_sqlite3_vtab_rhs_value
index a38b9cb5ee40d44423e2944e2929d8568dcc0247..553911018c3a0ca178aade0653dd49921bb3b567 100644 (file)
@@ -368,6 +368,14 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
     );
   }/* sqlite3_set_authorizer() */
 
+  if( !!wasm.exports.sqlite3_column_origin_name ){
+    wasm.bindingSignatures.push(
+      ["sqlite3_column_database_name","string", "sqlite3_stmt*", "int"],
+      ["sqlite3_column_origin_name","string", "sqlite3_stmt*", "int"],
+      ["sqlite3_column_table_name","string", "sqlite3_stmt*", "int"]
+    );
+  }
+
   if(false && wasm.compileOptionUsed('SQLITE_ENABLE_NORMALIZE')){
     /* ^^^ "the problem" is that this is an optional feature and the
        build-time function-export list does not currently take
index 1850d313cba67a5d876e6657b521dd438645f88a..ee8a10209c7b369637d60d99f8a84bdb0d6a83b8 100644 (file)
 
 /*
 ** If SQLITE_WASM_BARE_BONES is defined, undefine most of the ENABLE
-** macros.
+** macros. This will, when using the canonical makefile, also elide
+** any C functions from the WASM exports which are listed in
+** ./EXPORT_FUNCTIONS.sqlite3-extras.
 */
 #ifdef SQLITE_WASM_BARE_BONES
+#  undef  SQLITE_ENABLE_COLUMN_METADATA
 #  undef  SQLITE_ENABLE_DBPAGE_VTAB
 #  undef  SQLITE_ENABLE_DBSTAT_VTAB
 #  undef  SQLITE_ENABLE_EXPLAIN_COMMENTS
index d30e59e38c89d16afecf9c615449ddbf86ee0c19..2fe0c2377075a41e6ddf0704ff1a938ab574a188 100644 (file)
@@ -3302,7 +3302,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
           .assert(true === await u3.removeVfs())
           .assert(false === await P3b.removeVfs());
       }
-    }/*OPFS SAH Pool sanity checks*/)
+    }/*OPFS SAH Pool sanity checks*/);
 
   ////////////////////////////////////////////////////////////////////////
   T.g('Misc. APIs')
@@ -3353,6 +3353,16 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
       T.assert( 1===n )
         .assert( 0===capi.sqlite3_stmt_busy(stmt) )
         .assert( !stmt.isBusy() );
+
+      if( wasm.exports.sqlite3_column_origin_name ){
+        log("Column metadata APIs enabled");
+        T.assert( "t" === capi.sqlite3_column_table_name(stmt, 0))
+          .assert("a" === capi.sqlite3_column_origin_name(stmt, 0))
+          .assert("main" === capi.sqlite3_column_database_name(stmt, 0))
+      }else{
+        log("Column metadata APIs not enabled");
+      } // column metadata APIs
+
       stmt.finalize();
       db.close();
     })
@@ -3364,7 +3374,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
       capi.sqlite3_interrupt(db);
       T.assert( 0!==capi.sqlite3_is_interrupted(db) );
       db.close();
-    })
+    });
 
   ////////////////////////////////////////////////////////////////////////
   T.g('Bug Reports')
index feeedd3f496d34c63a4799d5697a9fcf4a5df8fd..733ebd147da30241401ad5505415b27a3eb46047 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\s--enable-column-metadata\sflag\sto\sthe\sconfigure\sscript\s(off\sby\sdefault).\sIt's\sonly\savailable\sin\sthe\scanonical\sbuild,\snot\sthe\sautoconf\sbuild,\sbecause\sit\schanges\show\ssqlite3.c\sgets\sgenerated.
-D 2025-06-18T15:22:50.023
+C Export\sthe\scolumn-metadata\sAPIs\sto\sWASM.\sDoing\sso\srequires\sa\snon-default\sbuild\sof\ssqlite3.c,\sso\sthis\sis\sa\sproof-of-concept\sbranch\ssaved\sjust\sin\scase\sSQLITE_ENABLE_COLUMN_METADATA\sever\sbecomes\sthe\sdefault\sfor\ssqlite3.c.
+D 2025-06-18T15:37:04.332
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -621,7 +621,7 @@ F ext/session/sqlite3session.c 6b0877fe1ab832aa4b85eaca72606dfd1630a1363a1be7af1
 F ext/session/sqlite3session.h 9bb1a6687b467764b35178dc29bbd2c57ab8cd3acdc8a62f088c34ad17e4fe2b
 F ext/session/test_session.c 2ddff73ea368d827028c32851b291416e1008845832feb27b751d15e57e13cc3
 F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c
-F ext/wasm/GNUmakefile e315b903c33b28ca074367041849de9dd2681c96d1437c11a5e9596abc265012
+F ext/wasm/GNUmakefile a05bb1766f97c88cb42fbfe9e349c799c691f8ae0dc959e9d9469f0bcee89350
 F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a
 F ext/wasm/README.md b89605f65661cf35bf034ff6d43e448cc169b8017fc105d498e33b81218b482c
 F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff
@@ -630,7 +630,7 @@ F ext/wasm/SQLTester/SQLTester.run.mjs 57f2adb33f43f2784abbf8026c1bfd049d8013af1
 F ext/wasm/SQLTester/index.html 64f3435084c7d6139b08d1f2a713828a73f68de2ae6a3112cbb5980d991ba06f
 F ext/wasm/SQLTester/touint8array.c 2d5ece04ec1393a6a60c4bf96385bda5e1a10ad49f3038b96460fc5e5aa7e536
 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-core 2bcbbfe3b95c043ed6037e2708a2ee078d212dd1612c364f93588d8dc97300fe
-F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras fe40d6d758646e38f8b15f709044951e10884214f5453d35502100179c388c13
+F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras cb4fa8842c875b6ee99381523792975c5ebb7371bd27fbd1bd863a43c7f3505a
 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-see fb29e62082a658f0d81102488414d422c393c4b20cc2f685b216bc566237957b
 F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
 F ext/wasm/api/README.md c64ec8e84449c069e0217706d9d7d31b3bd53627228b2ba0c3cddbdc2350ca66
@@ -640,7 +640,7 @@ F ext/wasm/api/post-js-footer.js 365405929f41ca0e6d389ed8a8da3f3c93e11d3ef43a90a
 F ext/wasm/api/post-js-header.js 53740d824e5d9027eb1e6fd59e216abbd2136740ce260ea5f0699ff2acb0a701
 F ext/wasm/api/pre-js.c-pp.js a614a2c82b12c4d96d8e3ba77330329efc53c4d56a8a7e60ade900f341866cfb
 F ext/wasm/api/sqlite3-api-cleanup.js 3ac1786e461ada63033143be8c3b00b26b939540661f3e839515bb92f2e35359
-F ext/wasm/api/sqlite3-api-glue.c-pp.js bd8ae059bb3ea489666b2f167025833e55dc5941be99c129a56fc25e541d37ce
+F ext/wasm/api/sqlite3-api-glue.c-pp.js 098a2887ce4c1668c7621a0bd4e5457677b89cbd3c4735fa3f99cfa254c0c322
 F ext/wasm/api/sqlite3-api-oo1.c-pp.js f3a8e2004c6625d17946c11f2fb32008be78bc5207bf746fc77d59848813225f
 F ext/wasm/api/sqlite3-api-prologue.js 8708570165f5b4bce9a78ccd91bc9ddf8735970ac1c4d659e36c9a7d9a644bb4
 F ext/wasm/api/sqlite3-api-worker1.c-pp.js f646a65257973b8c4481f8a6a216370b85644f23e64b126e7ae113570587c0ab
@@ -650,7 +650,7 @@ F ext/wasm/api/sqlite3-vfs-helper.c-pp.js 3f828cc66758acb40e9c5b4dcfd87fd478a14c
 F ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js 0f68a64e508598910e7c01214ae27d603dfc8baec6a184506fafac603a901931
 F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js 4ab0704ee198de7d1059eccedc7703c931510b588d10af0ee36ea5b3ebbac284
 F ext/wasm/api/sqlite3-vtab-helper.c-pp.js e809739d71e8b35dfe1b55d24d91f02d04239e6aef7ca1ea92a15a29e704f616
-F ext/wasm/api/sqlite3-wasm.c 7ea3d4a286a2241f6fcc65c9ff10fc04ee5590f80f40763a57001dd5e93aa4c4
+F ext/wasm/api/sqlite3-wasm.c d2672a83b99a89db6bab31eccf9f93fca15a01838d8b0224967db6d4c4bff560
 F ext/wasm/api/sqlite3-worker1-promiser.c-pp.js bc65debfe43b81fc39fb25c40ad0cc1946bd82580fbf644351107b544d6177ee
 F ext/wasm/api/sqlite3-worker1.c-pp.js 5e8706c2c4af2a57fbcdc02f4e7ef79869971bc21bb8ede777687786ce1c92d5
 F ext/wasm/batch-runner-sahpool.html e9a38fdeb36a13eac7b50241dfe7ae066fe3f51f5c0b0151e7baee5fce0d07a7
@@ -698,7 +698,7 @@ F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555
 F ext/wasm/test-opfs-vfs.js 1618670e466f424aa289859fe0ec8ded223e42e9e69b5c851f809baaaca1a00c
 F ext/wasm/tester1-worker.html ebc4b820a128963afce328ecf63ab200bd923309eb939f4110510ab449e9814c
 F ext/wasm/tester1.c-pp.html 1c1bc78b858af2019e663b1a31e76657b73dc24bede28ca92fbe917c3a972af2
-F ext/wasm/tester1.c-pp.js 419717b16e12703487a7ccf3ea4e63d693bdfbf7657e55a7e6c559bbccf027d3
+F ext/wasm/tester1.c-pp.js 9019cc013fced0f26fc09526ce9b6ce95af84a59d2c79bf06787d3ac541f0b83
 F ext/wasm/tests/opfs/concurrency/index.html 657578a6e9ce1e9b8be951549ed93a6a471f4520a99e5b545928668f4285fb5e
 F ext/wasm/tests/opfs/concurrency/test.js d08889a5bb6e61937d0b8cbb78c9efbefbf65ad09f510589c779b7cc6a803a88
 F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
@@ -2208,8 +2208,12 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 7ca545fd3b460fcf92e117baef42655eb6e78ebb5bdc6302f8f1b5b8446c0a06
-R 764ba5d771ee5182bdcc0c7d367e5acd
+P 986b601db11a041d280eb61004723604bf4b6fd573b9832c97e3a9da9ea16e9a
+R 609b0835e81ac1717735a969fa744927
+T *branch * wasm-column-metadata
+T *sym-wasm-column-metadata *
+T +closed *
+T -sym-trunk *
 U stephan
-Z efc4f4269747f4f0c229bfede53f9649
+Z e503e9679838a4c2db2f5b2294d32d28
 # Remove this line to create a well-formed Fossil manifest.
index 43b2749e5f5f1eb98c7d21f44a8052282d9b624d..d65f2d62cf502ace2f2ce3575fe0fc9fc7b1b206 100644 (file)
@@ -1 +1 @@
-986b601db11a041d280eb61004723604bf4b6fd573b9832c97e3a9da9ea16e9a
+59db3f639d1073678805dea26a4686eddfb238f055aa90bd429fc7fd33241502