diff --git a/bindings/rust/src/lib.rs b/bindings/rust/src/lib.rs index cd26abad6..8dc335d9c 100644 --- a/bindings/rust/src/lib.rs +++ b/bindings/rust/src/lib.rs @@ -108,27 +108,19 @@ impl Builder { io, self.path.as_str(), self.enable_mvcc, - indexes_enabled(), + true, )?; Ok(Database { inner: db }) } path => { let io: Arc = Arc::new(turso_core::PlatformIO::new()?); - let db = - turso_core::Database::open_file(io, path, self.enable_mvcc, indexes_enabled())?; + let db = turso_core::Database::open_file(io, path, self.enable_mvcc, true)?; Ok(Database { inner: db }) } } } } -fn indexes_enabled() -> bool { - #[cfg(feature = "experimental_indexes")] - return true; - #[cfg(not(feature = "experimental_indexes"))] - return false; -} - /// A database. /// /// The `Database` object points to a database and allows you to connect to it diff --git a/bindings/rust/tests/integration_tests.rs b/bindings/rust/tests/integration_tests.rs index 332e86665..7db85bc52 100644 --- a/bindings/rust/tests/integration_tests.rs +++ b/bindings/rust/tests/integration_tests.rs @@ -297,3 +297,40 @@ async fn test_row_get_conversion_error() { let result: Result = row.get(0); assert!(matches!(result, Err(Error::ConversionFailure(_)))); } + +#[tokio::test] +async fn test_index() { + let db = Builder::new_local(":memory:").build().await.unwrap(); + let conn = db.connect().unwrap(); + + conn.execute("CREATE TABLE users (name TEXT PRIMARY KEY, email TEXT)", ()) + .await + .unwrap(); + conn.execute("CREATE INDEX email_idx ON users(email)", ()) + .await + .unwrap(); + conn.execute( + "INSERT INTO users VALUES ('alice', 'a@b.c'), ('bob', 'b@d.e')", + (), + ) + .await + .unwrap(); + + let mut rows = conn + .query("SELECT * FROM users WHERE email = 'a@b.c'", ()) + .await + .unwrap(); + let row = rows.next().await.unwrap().unwrap(); + assert!(row.get::(0).unwrap() == "alice".to_string()); + assert!(row.get::(1).unwrap() == "a@b.c".to_string()); + assert!(rows.next().await.unwrap().is_none()); + + let mut rows = conn + .query("SELECT * FROM users WHERE email = 'b@d.e'", ()) + .await + .unwrap(); + let row = rows.next().await.unwrap().unwrap(); + assert!(row.get::(0).unwrap() == "bob".to_string()); + assert!(row.get::(1).unwrap() == "b@d.e".to_string()); + assert!(rows.next().await.unwrap().is_none()); +}