•  


Bug: Rust fails to build surrealdb · Issue #4041 · surrealdb/surrealdb · GitHub
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: Rust fails to build surrealdb #4041

Closed
2 tasks done
miladamery opened this issue May 14, 2024 · 15 comments · Fixed by #4092
Closed
2 tasks done

Bug: Rust fails to build surrealdb #4041

miladamery opened this issue May 14, 2024 · 15 comments · Fixed by #4092
Assignees
Labels
bug Something isn't working topic:datastore This involves the Datastore engine and transaction code

Comments

@miladamery
Copy link

Describe the bug

cargo build fails with this message:

   Compiling rocksdb v0.21.0
   Compiling surrealdb-core v2.0.0-1.5.0
   Compiling surrealdb-core v1.4.2
   Compiling surrealdb v1.5.0
error[E0599]: no method named `with_temporary_directory` found for struct `Datastore` in the current scope
   --> /home/miladamery/.cargo/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/local/native.rs:156:17
    |
156 |         let kvs = kvs.with_temporary_directory(address.config.temporary_directory);
    | 

Steps to reproduce

cargo.toml

[dependencies]
surrealdb = {version = "1.5.0", features = ["kv-rocksdb"]}
serde = {version = "1.0.201", features = ["derive"]}
tokio = {version = "1.37.0", features = ["full"]}

main.rs

#[tokio::main]
async fn main() -> surrealdb::Result<()> {
    let db = Surreal::new::<RocksDb>("/home/miladamery/Pictures/ds")
        .await?;

    Ok(())
}

Expected behaviour

Build should be successful according to documentation

SurrealDB version

1.5.0

Contact Details

No response

Is there an existing issue for this?

  • I have searched the existing issues

Code of Conduct

  • I agree to follow this project's Code of Conduct
@miladamery miladamery added bug Something isn't working triage This issue is new labels May 14, 2024
@charlescgs
Copy link

Have the same issue, I am unable to compile my app after update to 1.5.0

@Vzz1c
Copy link

+1

@AnatoliiShliakhto
Copy link

same

1 similar comment
@drunkplato
Copy link

same

@emmanuel-keller emmanuel-keller self-assigned this May 15, 2024
@emmanuel-keller emmanuel-keller added topic:datastore This involves the Datastore engine and transaction code and removed triage This issue is new labels May 15, 2024
@markocoric
Copy link

markocoric commented May 15, 2024

I can't build on Rust 1.78.0 ... no matter if use 1.3, 1.4, 1.5 version. For exampole, error

error[E0277]: the trait bound surrealdb_core::err::Error: Fromrevision::Error is not satisfied --> /Users/markocoric/.cargo/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:176:74

let kvs = kvs.with_temporary_directory(address.config.temporary_directory);

yup, no mater on version you select, this is my cargo build output

   Compiling speedb v0.0.4
   Compiling surrealdb-core v2.0.0-1.5.0
   Compiling surrealdb-core v1.4.2
   Compiling surrealdb v1.5.0
error[E0599]: no method named `with_temporary_directory` found for struct `Datastore` in the current scope
   --> /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/local/native.rs:156:17
    |
156 |         let kvs = kvs.with_temporary_directory(address.config.temporary_directory);
    |                       ^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `Datastore`

For more information about this error, try `rustc --explain E0599`.

Screenshot 2024-05-15 at 14 40 16

@ctison
Copy link

ctison commented May 15, 2024

Hey, for me it builds on Rust 1.78.0-aarch64-apple-darwin with surrealdb = { version = "1.3.1", features = ["kv-rocksdb", "kv-mem"] } , but fails when upgrading surrealdb to the versions above v1.3.1 .

When trying to upgrade then downgrade surrealdb (eg. v1.3.1 -> v1.4.2 -> v1.3.1 ), cargo won't be able to downgrade deps' deps, and will continue to output build errors from surrealdb@v1.5.0 (even tho I upgraded to v1.4.2 not v1.5.0 before downgrading to v1.3.1 ) or else, so you must revert changes to the Cargo.lock (and not simply cargo clean or deleting it, it's weird/sad I know).

When upgrading from surrealdb from v1.3.1 to v1.4.2 , cargo build tries to build surrealdb@v1.5.0 , which fails with bunch of errors, and I've seen many more differents errors trying to tinker with surrealdb in Cargo.toml , so this log is not "exhaustive" and I also came accross the logs from previous comments.
error[E0599]: no method named `with_temporary_directory` found for struct `Datastore` in the current scope
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/local/native.rs:156:17
    |
156 |         let kvs = kvs.with_temporary_directory(address.config.temporary_directory);
    |                       ^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `Datastore`

error[E0277]: the trait bound `surrealdb_core::sql::Value: Revisioned` is not satisfied
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/native.rs:444:12
    |
444 | ...                   #[revisioned(revision = 1)]
    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::sql::Value`, which is required by `std::option::Option<surrealdb_core::sql::Value>: Revisioned`
    |
    = help: the following other types implement trait `Revisioned`:
              bool
              char
              isize
              i8
              i16
              i32
              i64
              i128
            and 77 others
    = note: required for `std::option::Option<surrealdb_core::sql::Value>` to implement `Revisioned`
    = note: this error originates in the attribute macro `revisioned` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `surrealdb_core::sql::Value: Revisioned` is not satisfied
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/native.rs:447:17
    |
447 | ...                   id: Option<Value>,
    |                           ^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::sql::Value`, which is required by `std::option::Option<surrealdb_core::sql::Value>: Revisioned`
    |
    = help: the following other types implement trait `Revisioned`:
              bool
              char
              isize
              i8
              i16
              i32
              i64
              i128
            and 77 others
    = note: required for `std::option::Option<surrealdb_core::sql::Value>` to implement `Revisioned`

error[E0277]: the trait bound `surrealdb_core::sql::Value: Revisioned` is not satisfied
  --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:94:1
   |
94 | #[revisioned(revision = 1)]
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::sql::Value`
   |
   = help: the following other types implement trait `Revisioned`:
             bool
             char
             isize
             i8
             i16
             i32
             i64
             i128
           and 76 others
   = note: this error originates in the attribute macro `revisioned` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `QueryMethodResponse: Revisioned` is not satisfied
  --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:94:1
   |
94 | #[revisioned(revision = 1)]
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `QueryMethodResponse`, which is required by `Vec<QueryMethodResponse>: Revisioned`
   |
   = help: the following other types implement trait `Revisioned`:
             bool
             char
             isize
             i8
             i16
             i32
             i64
             i128
           and 76 others
   = note: required for `Vec<QueryMethodResponse>` to implement `Revisioned`
   = note: this error originates in the attribute macro `revisioned` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `surrealdb_core::dbs::Notification: Revisioned` is not satisfied
  --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:94:1
   |
94 | #[revisioned(revision = 1)]
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::dbs::Notification`
   |
   = help: the following other types implement trait `Revisioned`:
             bool
             char
             isize
             i8
             i16
             i32
             i64
             i128
           and 76 others
   = note: this error originates in the attribute macro `revisioned` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `surrealdb_core::sql::Value: Revisioned` is not satisfied
  --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:97:8
   |
97 |     Other(Value),
   |           ^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::sql::Value`
   |
   = help: the following other types implement trait `Revisioned`:
             bool
             char
             isize
             i8
             i16
             i32
             i64
             i128
           and 76 others

error[E0277]: the trait bound `QueryMethodResponse: Revisioned` is not satisfied
  --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:98:8
   |
98 |     Query(Vec<QueryMethodResponse>),
   |           ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `QueryMethodResponse`, which is required by `Vec<QueryMethodResponse>: Revisioned`
   |
   = help: the following other types implement trait `Revisioned`:
             bool
             char
             isize
             i8
             i16
             i32
             i64
             i128
           and 76 others
   = note: required for `Vec<QueryMethodResponse>` to implement `Revisioned`

error[E0277]: the trait bound `surrealdb_core::dbs::Notification: Revisioned` is not satisfied
  --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:99:7
   |
99 |     Live(Notification),
   |          ^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::dbs::Notification`
   |
   = help: the following other types implement trait `Revisioned`:
             bool
             char
             isize
             i8
             i16
             i32
             i64
             i128
           and 76 others

error[E0277]: the trait bound `surrealdb_core::sql::Value: Revisioned` is not satisfied
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:154:1
    |
154 | #[revisioned(revision = 1)]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::sql::Value`, which is required by `std::option::Option<surrealdb_core::sql::Value>: Revisioned`
    |
    = help: the following other types implement trait `Revisioned`:
              bool
              char
              isize
              i8
              i16
              i32
              i64
              i128
            and 76 others
    = note: required for `std::option::Option<surrealdb_core::sql::Value>` to implement `Revisioned`
    = note: this error originates in the attribute macro `revisioned` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `surrealdb_core::sql::Value: Revisioned` is not satisfied
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:157:6
    |
157 |     id: Option<Value>,
    |         ^^^^^^^^^^^^^ the trait `Revisioned` is not implemented for `surrealdb_core::sql::Value`, which is required by `std::option::Option<surrealdb_core::sql::Value>: Revisioned`
    |
    = help: the following other types implement trait `Revisioned`:
              bool
              char
              isize
              i8
              i16
              i32
              i64
              i128
            and 76 others
    = note: required for `std::option::Option<surrealdb_core::sql::Value>` to implement `Revisioned`

error[E0599]: no method named `serialize_revisioned` found for reference `&surrealdb_core::sql::Value` in the current scope
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:164:9
    |
164 |         value.serialize_revisioned(&mut buf).map_err(|error| crate::Error::Db(error.into()))?;
    |               ^^^^^^^^^^^^^^^^^^^^ method not found in `&Value`
    |
    = help: items from traits can only be used if the trait is in scope
help: trait `Revisioned` which provides `serialize_revisioned` is implemented but not in scope; perhaps you want to import it
    |
3   + use revision::Revisioned;
    |

error[E0277]: the trait bound `surrealdb_core::err::Error: From<revision::Error>` is not satisfied
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/engine/remote/ws/mod.rs:176:74
    |
176 |         return T::deserialize_revisioned(bytes).map_err(|x| crate::Error::Db(x.into()));
    |                                                                                ^^^^ the trait `From<revision::Error>` is not implemented for `surrealdb_core::err::Error`, which is required by `revision::Error: Into<_>`
    |
    = help: the following other types implement trait `From<T>`:
              <surrealdb_core::err::Error as From<echodb::err::Error>>
              <surrealdb_core::err::Error as From<async_channel::SendError<T>>>
              <surrealdb_core::err::Error as From<async_channel::RecvError>>
              <surrealdb_core::err::Error as From<Box<bincode::ErrorKind>>>
              <surrealdb_core::err::Error as From<revision::error::Error>>
              <surrealdb_core::err::Error as From<storekey::decode::Error>>
              <surrealdb_core::err::Error as From<storekey::encode::Error>>
              <surrealdb_core::err::Error as From<surrealdb_jsonwebtoken::errors::Error>>
            and 10 others
    = note: required for `revision::Error` to implement `Into<surrealdb_core::err::Error>`

error[E0599]: no method named `to_cond` found for struct `surrealdb_core::sql::Range` in the current scope
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/method/live.rs:70:25
    |
70  |                         stmt.cond = range.to_cond();
    |                                           ^^^^^^^ method not found in `Range`
...
142 |     into_future! {}
    |     --------------- in this macro invocation
    |
    = note: this error originates in the macro `into_future` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no method named `to_cond` found for struct `surrealdb_core::sql::Range` in the current scope
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/method/live.rs:70:25
    |
70  |                         stmt.cond = range.to_cond();
    |                                           ^^^^^^^ method not found in `Range`
...
153 |     into_future! {}
    |     --------------- in this macro invocation
    |
    = note: this error originates in the macro `into_future` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no method named `to_cond` found for struct `surrealdb_core::sql::Range` in the current scope
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/method/live.rs:70:25
    |
70  |                         stmt.cond = range.to_cond();
    |                                           ^^^^^^^ method not found in `Range`
...
164 |     into_future! {}
    |     --------------- in this macro invocation
    |
    = note: this error originates in the macro `into_future` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no function or associated item named `new` found for struct `surrealdb_core::sql::Range` in the current scope
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/opt/resource.rs:24:45
    |
24  |             Resource::Table(table) => Ok(sql::Range::new(table.0, range.start, range.end)),
    |                                                      ^^^ function or associated item not found in `Range`
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `conn::Connection` defines an item `new`, perhaps you need to implement it
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/registry/src/index.crates.io-6f17d22bba15001f/surrealdb-1.5.0/src/api/conn.rs:170:1
    |
170 | pub trait Connection: Sized + Send + Sync + 'static {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: there is a method `ne` with a similar name, but with different arguments
   --> /Users/nil/.local/share/mise/installs/rust/1.78.0/toolchains/1.78.0-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/cmp.rs:263:5
    |
263 |     fn ne(&self, other: &Rhs) -> bool {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Some errors have detailed explanations: E0277, E0599.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `surrealdb` (lib) due to 17 previous errors

Working Cargo.toml with Rust 1.78.0-aarch64-apple-darwin

[
workspace
.
dependencies
]
surrealdb
 = { 
version
 = 
"
1.3.1
"
, 
features
 = [
"
kv-rocksdb
"
, 
"
kv-mem
"
] }

??????

@emmanuel-keller
Copy link
Contributor

Problem confirmed. We're figuring out the best way to solve this. We will provide updates promptly.

@Walker-00
Copy link

same here both on my Arch and ubuntu 22.04 server

@takkuumi
Copy link

same here

@Walker-00
Copy link

I Think it's the problem with kv features

@miladamery
Copy link
Author

@emmanuel-keller Hi. any idea when your pull request will be merged?

@emmanuel-keller
Copy link
Contributor

@miladamery It should be merged to the branch 1.x by tomorrow. I will check with the team when it will be released

@emmanuel-keller
Copy link
Contributor

emmanuel-keller commented May 23, 2024

v1.5.1 is out, the compilation issue should be solved.

@ctison
Copy link

Successfully builds after upgrading surrealdb@1.3.1 to surrealdb@1.5.1 and running cargo update ??.

@miladamery
Copy link
Author

miladamery commented May 24, 2024

After upgrading to surrealdb@1.5.1 compilation issue fixed.
Thank you @emmanuel-keller , Thanks everyone.
Im gona close this issue.

Sign up for free to join this conversation on GitHub . Already have an account? Sign in to comment
Labels
bug Something isn't working topic:datastore This involves the Datastore engine and transaction code
Projects
None yet
Development

Successfully merging a pull request may close this issue.

10 participants
- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본