From 5b978b257a2917d18383d3fadd115608662e40f2 Mon Sep 17 00:00:00 2001 From: Ziyang Hu Date: Sun, 26 Feb 2023 19:43:01 +0800 Subject: [PATCH] fix JNI bindings --- Cargo.lock | 113 ++++++++++++++++++++------------------- cozo-lib-java/src/lib.rs | 34 ++++++------ 2 files changed, 75 insertions(+), 72 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c0fee988..00642fc2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -184,9 +184,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fb79c228270dcf2426e74864cabc94babb5dbab01a4314e702d2f16540e1591" +checksum = "2bd379e511536bad07447f899300aa526e9bae8e6f66dc5e5ca45d7587b7c1ec" dependencies = [ "async-trait", "axum-core", @@ -462,9 +462,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.4.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +checksum = "77ed9a53e5d4d9c573ae844bfac6872b159cb1d1585a83b29e7a64b7eef7332a" dependencies = [ "glob", "libc", @@ -494,7 +494,7 @@ checksum = "ec0b0588d44d4d63a87dbd75c136c166bbfd9a86a31cb89e09906521c7d3f5e3" dependencies = [ "bitflags", "clap_derive", - "clap_lex 0.3.1", + "clap_lex 0.3.2", "is-terminal", "once_cell", "strsim", @@ -525,9 +525,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade" +checksum = "350b9cf31731f9957399229e9b2adc51eeabdfbe9d71d9a0552275fd12710d09" dependencies = [ "os_str_bytes", ] @@ -930,6 +930,19 @@ dependencies = [ "syn", ] +[[package]] +name = "dashmap" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +dependencies = [ + "cfg-if 1.0.0", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core 0.9.7", +] + [[package]] name = "delegate" version = "0.8.0" @@ -1353,13 +1366,14 @@ dependencies = [ [[package]] name = "graph_builder" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba851e549b0354700eab51c77fc28055936f6565e45c6ecd750f06f6414ac7f" +checksum = "3bed82dbbf80a458a59ee9fa11b03e194e1429b36d94da2ac59356b44eb926d7" dependencies = [ "atoi", "atomic", "byte-slice-cast", + "dashmap", "delegate", "fast-float", "fxhash", @@ -1397,9 +1411,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da3d0613473597a01860f0f802ab18bb019b1d21e33d6a9a0b3c8870084893e5" dependencies = [ "derive-new", - "prost 0.11.6", - "prost-build 0.11.6", - "prost-types 0.11.6", + "prost 0.11.8", + "prost-build 0.11.8", + "prost-types 0.11.8", "tempfile", ] @@ -1691,9 +1705,9 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef" +checksum = "21b6b32576413a8e69b90e952e4a026476040d81017b80445deda5f2d3921857" dependencies = [ "hermit-abi 0.3.1", "io-lifetimes", @@ -1894,9 +1908,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2c65375e552a67fe3829ca63e8a7c27a378a62824594f43b2851d682b5ec2" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -2665,12 +2679,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698" +checksum = "e48e50df39172a3e7eb17e14642445da64996989bc212b583015435d39a58537" dependencies = [ "bytes", - "prost-derive 0.11.6", + "prost-derive 0.11.8", ] [[package]] @@ -2693,9 +2707,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e" +checksum = "2c828f93f5ca4826f97fedcbd3f9a536c16b12cff3dbbb4a007f932bbad95b12" dependencies = [ "bytes", "heck 0.4.1", @@ -2705,8 +2719,8 @@ dependencies = [ "multimap", "petgraph 0.6.3", "prettyplease", - "prost 0.11.6", - "prost-types 0.11.6", + "prost 0.11.8", + "prost-types 0.11.8", "regex", "syn", "tempfile", @@ -2728,9 +2742,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d" +checksum = "4ea9b0f8cbe5e15a8a042d030bd96668db28ecb567ec37d691971ff5731d2b1b" dependencies = [ "anyhow", "itertools 0.10.5", @@ -2751,12 +2765,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788" +checksum = "379119666929a1afd7a043aa6cf96fa67a6dce9af60c88095a4686dbce4c9c88" dependencies = [ - "bytes", - "prost 0.11.6", + "prost 0.11.8", ] [[package]] @@ -2988,15 +3001,6 @@ version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - [[package]] name = "reqwest" version = "0.11.14" @@ -3368,9 +3372,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] @@ -3512,9 +3516,9 @@ dependencies = [ [[package]] name = "swift-bridge" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56efa62550c6981a0dfc972e49b26843e0840551117486885bce0648a1772ee6" +checksum = "6352623c1855d972fac4cf363d584811f8f0b49b5545466d30c454000d1a3646" dependencies = [ "swift-bridge-build", "swift-bridge-macro", @@ -3522,9 +3526,9 @@ dependencies = [ [[package]] name = "swift-bridge-build" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a43d9323db626fcb4fbf79bb34f10b35508ba701e31e10486955559089cd6168" +checksum = "c5ae9c57795f59d2a2c0b2e7016021a3f4fd915f2fb1e2e69e41639f6ba6bddf" dependencies = [ "proc-macro2", "swift-bridge-ir", @@ -3534,9 +3538,9 @@ dependencies = [ [[package]] name = "swift-bridge-ir" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764717afda23f5145c78811334207ae31adcd4d666d441703fabfbcb230aca01" +checksum = "c86d036cef9b93d60c4ddc5ca84efe9da6b71e895cea74eb8a05e688dd17f654" dependencies = [ "proc-macro2", "quote", @@ -3545,9 +3549,9 @@ dependencies = [ [[package]] name = "swift-bridge-macro" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dadbeb7081da4bdf77386d240c7fa14e43c97e2d748e1bc3a2f57df5a87dbc2" +checksum = "61fddf7b308da3bb32f916c8e3e6b97c1dbee89317a3e51ee84cdd6e51ae4e20" dependencies = [ "proc-macro2", "quote", @@ -3557,9 +3561,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -3591,16 +3595,15 @@ checksum = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5" [[package]] name = "tempfile" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" dependencies = [ "cfg-if 1.0.0", "fastrand", - "libc", "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys 0.42.0", ] [[package]] diff --git a/cozo-lib-java/src/lib.rs b/cozo-lib-java/src/lib.rs index 84ec1148..293d0b43 100644 --- a/cozo-lib-java/src/lib.rs +++ b/cozo-lib-java/src/lib.rs @@ -36,15 +36,15 @@ fn get_db(id: i32) -> Option { #[no_mangle] pub extern "system" fn Java_org_cozodb_CozoJavaBridge_openDb( - env: JNIEnv, + mut env: JNIEnv, _class: JClass, engine: JString, path: JString, options: JString, ) -> jint { - let engine: String = env.get_string(engine).unwrap().into(); - let path: String = env.get_string(path).unwrap().into(); - let options: String = env.get_string(options).unwrap().into(); + let engine: String = env.get_string(&engine).unwrap().into(); + let path: String = env.get_string(&path).unwrap().into(); + let options: String = env.get_string(&options).unwrap().into(); let id = match DbInstance::new(&engine, path, &options) { Ok(db) => { let id = HANDLES.current.fetch_add(1, Ordering::AcqRel); @@ -77,14 +77,14 @@ const DB_NOT_FOUND: &str = r#"{"ok":false,"message":"database not found"}"#; #[no_mangle] pub extern "system" fn Java_org_cozodb_CozoJavaBridge_runQuery( - env: JNIEnv, + mut env: JNIEnv, _class: JClass, id: jint, script: JString, params_str: JString, ) -> jstring { - let script: String = env.get_string(script).unwrap().into(); - let params_str: String = env.get_string(params_str).unwrap().into(); + let script: String = env.get_string(&script).unwrap().into(); + let params_str: String = env.get_string(¶ms_str).unwrap().into(); match get_db(id) { None => env.new_string(DB_NOT_FOUND).unwrap().into_raw(), Some(db) => { @@ -96,12 +96,12 @@ pub extern "system" fn Java_org_cozodb_CozoJavaBridge_runQuery( #[no_mangle] pub extern "system" fn Java_org_cozodb_CozoJavaBridge_exportRelations( - env: JNIEnv, + mut env: JNIEnv, _class: JClass, id: jint, rel: JString, ) -> jstring { - let rel: String = env.get_string(rel).unwrap().into(); + let rel: String = env.get_string(&rel).unwrap().into(); match get_db(id) { None => env.new_string(DB_NOT_FOUND).unwrap().into_raw(), Some(db) => { @@ -113,12 +113,12 @@ pub extern "system" fn Java_org_cozodb_CozoJavaBridge_exportRelations( #[no_mangle] pub extern "system" fn Java_org_cozodb_CozoJavaBridge_importRelations( - env: JNIEnv, + mut env: JNIEnv, _class: JClass, id: jint, data: JString, ) -> jstring { - let data: String = env.get_string(data).unwrap().into(); + let data: String = env.get_string(&data).unwrap().into(); match get_db(id) { None => env.new_string(DB_NOT_FOUND).unwrap().into_raw(), Some(db) => { @@ -130,12 +130,12 @@ pub extern "system" fn Java_org_cozodb_CozoJavaBridge_importRelations( #[no_mangle] pub extern "system" fn Java_org_cozodb_CozoJavaBridge_backup( - env: JNIEnv, + mut env: JNIEnv, _class: JClass, id: jint, file: JString, ) -> jstring { - let file: String = env.get_string(file).unwrap().into(); + let file: String = env.get_string(&file).unwrap().into(); match get_db(id) { None => env.new_string(DB_NOT_FOUND).unwrap().into_raw(), Some(db) => { @@ -147,12 +147,12 @@ pub extern "system" fn Java_org_cozodb_CozoJavaBridge_backup( #[no_mangle] pub extern "system" fn Java_org_cozodb_CozoJavaBridge_restore( - env: JNIEnv, + mut env: JNIEnv, _class: JClass, id: jint, file: JString, ) -> jstring { - let file: String = env.get_string(file).unwrap().into(); + let file: String = env.get_string(&file).unwrap().into(); match get_db(id) { None => env.new_string(DB_NOT_FOUND).unwrap().into_raw(), Some(db) => { @@ -164,12 +164,12 @@ pub extern "system" fn Java_org_cozodb_CozoJavaBridge_restore( #[no_mangle] pub extern "system" fn Java_org_cozodb_CozoJavaBridge_importFromBackup( - env: JNIEnv, + mut env: JNIEnv, _class: JClass, id: jint, data: JString, ) -> jstring { - let data: String = env.get_string(data).unwrap().into(); + let data: String = env.get_string(&data).unwrap().into(); match get_db(id) { None => env.new_string(DB_NOT_FOUND).unwrap().into_raw(), Some(db) => {