Changeset: aeb5dcbc8b7d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/aeb5dcbc8b7d
Added Files:
sql/test/remote/Tests/remote_info_missing.test
Modified Files:
sql/server/sql_mvc.c
sql/test/remote/Tests/All
Branch: Dec2023
Log Message:
in case the remote user info is missing still drop the remote table definition.
Added test as well.
diffs (59 lines):
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -1296,8 +1296,9 @@ mvc_create_remote(sql_table **t, mvc *m,
}
static str
-remote_drop(mvc *m, sqlid id)
+remote_drop(mvc *m, sql_table *t)
{
+ sqlid id = t->base.id;
int log_res = 0;
sql_trans *tr = m->session->tr;
sqlstore *store = tr->store;
@@ -1305,7 +1306,9 @@ remote_drop(mvc *m, sqlid id)
sql_table *remote_user_info = find_sql_table(tr, sys, REMOTE_USER_INFO);
sql_column *remote_user_info_id = find_sql_column(remote_user_info,
"table_id");
oid rid = store->table_api.column_find_row(tr, remote_user_info_id,
&id, NULL);
- if (is_oid_nil(rid) || (log_res = store->table_api.table_delete(tr,
remote_user_info, rid)) != 0)
+ if (is_oid_nil(rid)) {
+ TRC_WARNING(SQL_TRANS, "Drop table: %s %s no remote info\n",
t->s->base.name, t->base.name);
+ } else if ((log_res = store->table_api.table_delete(tr,
remote_user_info, rid)) != 0)
throw(SQL, "sql.drop_table", SQLSTATE(42000) "Drop table
failed%s", log_res == LOG_CONFLICT ? " due to conflict with another
transaction" : "");
return MAL_SUCCEED;
}
@@ -1316,7 +1319,7 @@ mvc_drop_table(mvc *m, sql_schema *s, sq
char *msg = NULL;
TRC_DEBUG(SQL_TRANS, "Drop table: %s %s\n", s->base.name, t->base.name);
- if (isRemote(t) && (msg = remote_drop(m, t->base.id)) != NULL)
+ if (isRemote(t) && (msg = remote_drop(m, t)) != NULL)
return msg;
switch (sql_trans_drop_table(m->session->tr, s, t->base.name,
drop_action ? DROP_CASCADE_START : DROP_RESTRICT)) {
diff --git a/sql/test/remote/Tests/All b/sql/test/remote/Tests/All
--- a/sql/test/remote/Tests/All
+++ b/sql/test/remote/Tests/All
@@ -3,3 +3,4 @@ HAVE_DATA_PATH?creds
HAVE_DATA_PATH?invalid_creds
HAVE_DATA_PATH?different_user
THREADS>=2?partition_elim
+remote_info_missing
diff --git a/sql/test/remote/Tests/remote_info_missing.test
b/sql/test/remote/Tests/remote_info_missing.test
new file mode 100644
--- /dev/null
+++ b/sql/test/remote/Tests/remote_info_missing.test
@@ -0,0 +1,12 @@
+statement ok
+create remote table t1234 (c int) on 'mapi:monetdb://localhost:50000/demo/t1'
+
+statement ok
+delete from remote_user_info where table_id = (select id from sys._tables
where name = 't1234')
+
+statement ok
+drop table t1234;
+
+query T
+select name from sys._tables where name = 't1234';
+----
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]