From 34da4ce9aa8a1abec5341a8599dc545e5e24aa3a Mon Sep 17 00:00:00 2001
From: Vladimir Davydov <vdavydov@tarantool.org>
Date: Sat, 30 Apr 2022 15:21:29 +0300
Subject: [PATCH] alter: fix space upgrade check

space_upgrade_check_alter() must be called after the new space
definition is updated.

Follow-up commit 38b25832f9fb ("box: add space upgrade stubs").

NO_DOC=internal
NO_TEST=internal
NO_CHANGELOG=internal
---
 src/box/alter.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/box/alter.cc b/src/box/alter.cc
index 09c26eec57..728cad6169 100644
--- a/src/box/alter.cc
+++ b/src/box/alter.cc
@@ -907,8 +907,6 @@ alter_space_rollback(struct trigger *trigger, void * /* event */)
 static void
 alter_space_do(struct txn_stmt *stmt, struct alter_space *alter)
 {
-	if (space_upgrade_check_alter(alter->old_space, alter->space_def) != 0)
-		diag_raise();
 	/**
 	 * AlterSpaceOp::prepare() may perform a potentially long
 	 * lasting operation that may yield, e.g. building of a new
@@ -937,6 +935,8 @@ alter_space_do(struct txn_stmt *stmt, struct alter_space *alter)
 	 */
 	rlist_foreach_entry(op, &alter->ops, link)
 		op->alter_def(alter);
+	if (space_upgrade_check_alter(alter->old_space, alter->space_def) != 0)
+		diag_raise();
 	/*
 	 * Create a new (empty) space for the new definition.
 	 * Sic: the triggers are not moved over yet.
-- 
GitLab