diff --git a/libsql-server/src/query_analysis.rs b/libsql-server/src/query_analysis.rs index 477b53938b..38886f3df4 100644 --- a/libsql-server/src/query_analysis.rs +++ b/libsql-server/src/query_analysis.rs @@ -139,6 +139,7 @@ impl StmtKind { )) } Cmd::Stmt(Stmt::Detach(_)) => Some(Self::Detach), + Cmd::Stmt(Stmt::Reindex { .. }) => Some(Self::Write), _ => None, } } diff --git a/libsql-server/tests/hrana/batch.rs b/libsql-server/tests/hrana/batch.rs index 315480886a..68b6c43d03 100644 --- a/libsql-server/tests/hrana/batch.rs +++ b/libsql-server/tests/hrana/batch.rs @@ -355,3 +355,27 @@ fn stream() { sim.run().unwrap(); } + +#[test] +fn reindex_statement() { + let mut sim = turmoil::Builder::new() + .simulation_duration(Duration::from_secs(1000)) + .build(); + sim.host("primary", super::make_standalone_server); + sim.client("client", async { + let db = Database::open_remote_with_connector("http://primary:8080", "", TurmoilConnector)?; + let conn = db.connect()?; + + conn.execute("create table t(x text)", ()).await?; + conn.execute("create index t_idx on t(x)", ()).await?; + conn.execute("insert into t(x) values(?)", params!["hello"]) + .await?; + conn.execute("insert into t(x) values(?)", params!["hello"]) + .await?; + conn.execute("reindex t_idx", ()).await?; + + Ok(()) + }); + + sim.run().unwrap(); +} diff --git a/libsql/src/parser.rs b/libsql/src/parser.rs index 3119d5b320..afce19af24 100644 --- a/libsql/src/parser.rs +++ b/libsql/src/parser.rs @@ -120,6 +120,7 @@ impl StmtKind { }) => Some(Self::Release), Cmd::Stmt(Stmt::Attach { .. }) => Some(Self::Attach), Cmd::Stmt(Stmt::Detach(_)) => Some(Self::Detach), + Cmd::Stmt(Stmt::Reindex { .. }) => Some(Self::Write), _ => None, } }