From 32a176af54f59d46d46eef3d8726a92139a4ba22 Mon Sep 17 00:00:00 2001
From: Denis Smirnov <sd@picodata.io>
Date: Tue, 15 Aug 2023 10:54:00 +0700
Subject: [PATCH] fix: make ddl wait to be committed in pico.sql

Before current commit, sql waited for ddl operations to be prepared
in the cluster, but not committed or aborted. As a result, when the
user queries the space right after the previous ddl successfully
returned "ok", it was possible to retrieve "no space found" error.
---
 src/sql.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/sql.rs b/src/sql.rs
index 65c2a8d75b..39d639026c 100644
--- a/src/sql.rs
+++ b/src/sql.rs
@@ -1,6 +1,6 @@
 //! Clusterwide SQL query execution.
 
-use crate::schema::{CreateSpaceParams, DistributionParam, Field, ShardingFn};
+use crate::schema::{wait_for_ddl_commit, CreateSpaceParams, DistributionParam, Field, ShardingFn};
 use crate::sql::router::RouterRuntime;
 use crate::sql::storage::StorageRuntime;
 use crate::traft::error::Error;
@@ -188,6 +188,7 @@ fn reenterable_ddl_request(
         );
 
         node.wait_index(index, deadline.duration_since(Instant::now()))?;
+        wait_for_ddl_commit(index, deadline.duration_since(Instant::now()))?;
 
         if term != raft::Storage::term(&node.raft_storage, index)? {
             // Leader has changed and the entry got rolled back, retry.
-- 
GitLab