From 2203d420c6b7ea0f9279f8db5d6e6e7cb79d5413 Mon Sep 17 00:00:00 2001
From: Aleksandr Lyapunov <alyapunov@tarantool.org>
Date: Tue, 22 Aug 2023 18:57:22 +0300
Subject: [PATCH] sql: don't catch OOM in sql_select_expand_from_tables

Since we panic on OOM now, no OOM error handling is needed now.
Fix both internals of the function and how it is used in alter.

NO_DOC=refactoring
NO_CHANGELOG=reafactoring
NO_TEST=refactoring
---
 src/box/alter.cc     |  2 --
 src/box/sql.h        |  1 -
 src/box/sql/select.c | 13 ++++---------
 3 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/src/box/alter.cc b/src/box/alter.cc
index 1ffe1c2ffb..ab529862e2 100644
--- a/src/box/alter.cc
+++ b/src/box/alter.cc
@@ -1910,8 +1910,6 @@ update_view_references(struct Select *select, int update_value,
 {
 	assert(update_value == 1 || update_value == -1);
 	struct SrcList *list = sql_select_expand_from_tables(select);
-	if (list == NULL)
-		return -1;
 	int from_tables_count = sql_src_list_entry_count(list);
 	for (int i = 0; i < from_tables_count; ++i) {
 		const char *space_name = sql_src_list_entry_name(list, i);
diff --git a/src/box/sql.h b/src/box/sql.h
index aa06a51a0a..965abdd3ab 100644
--- a/src/box/sql.h
+++ b/src/box/sql.h
@@ -285,7 +285,6 @@ sql_select_delete(struct Select *select);
  *
  * @param select Select to be investigated.
  * @retval List containing all involved table names.
- *         NULL in case of OOM.
  */
 struct SrcList *
 sql_select_expand_from_tables(struct Select *select);
diff --git a/src/box/sql/select.c b/src/box/sql/select.c
index 1d12b3b562..4ccba54929 100644
--- a/src/box/sql/select.c
+++ b/src/box/sql/select.c
@@ -489,9 +489,7 @@ src_list_append_unique(struct SrcList *list, const char *new_name)
 		if (name != NULL && strcmp(new_name, name) == 0)
 			return list;
 	}
-	struct SrcList *new_list =
-		sql_src_list_enlarge(list, 1, list->nSrc);
-	list = new_list;
+	list = sql_src_list_enlarge(list, 1, list->nSrc);
 	struct SrcList_item *pItem = &list->a[list->nSrc - 1];
 	pItem->zName = sql_xstrdup(new_name);
 	return list;
@@ -508,8 +506,7 @@ select_collect_table_names(struct Walker *walker, struct Select *select)
 		walker->u.pSrcList =
 			src_list_append_unique(walker->u.pSrcList,
 					       select->pSrc->a[i].zName);
-		if (walker->u.pSrcList == NULL)
-			return WRC_Abort;
+		assert(walker->u.pSrcList != NULL);
 	}
 	return WRC_Continue;
 }
@@ -524,10 +521,8 @@ sql_select_expand_from_tables(struct Select *select)
 	walker.xExprCallback = sqlExprWalkNoop;
 	walker.xSelectCallback = select_collect_table_names;
 	walker.u.pSrcList = table_names;
-	if (sqlWalkSelect(&walker, select) != 0) {
-		sqlSrcListDelete(walker.u.pSrcList);
-		return NULL;
-	}
+	int rc = sqlWalkSelect(&walker, select);
+	assert(rc == WRC_Continue); (void)rc;
 	return walker.u.pSrcList;
 }
 
-- 
GitLab