Changeset: a69d43ac03da for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a69d43ac03da
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/storage/store.c
Branch: Oct2020
Log Message:

Small bugfix, when dropping a SQL function, remove the respective arguments in 
sys.args table


diffs (39 lines):

diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -2395,6 +2395,9 @@ sql_update_oct2020(Client c, mvc *sql, c
                                        "external name 
sysmon.user_statistics;\n"
                                        "update sys.functions set system = true 
where system <> true and name = 'user_statistics' and schema_id = (select id 
from sys.schemas where name = 'sys') and type = %d;\n", (int) F_UNION);
 
+                       /* Remove entries on sys.args table without 
correspondents on sys.functions table */
+                       pos += snprintf(buf + pos, bufsize - pos,
+                                       "delete from sys.args where id in 
(select args.id from sys.args left join sys.functions on args.func_id = 
functions.id where functions.id is null);\n");
                        pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", prev_schema);
 
                        assert(pos < bufsize);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5543,15 +5543,13 @@ sys_drop_func(sql_trans *tr, sql_func *f
        oid rid_func = table_funcs.column_find_row(tr, sys_func_col, 
&func->base.id, NULL);
        if (is_oid_nil(rid_func))
                return ;
-       if (IS_AGGR(func)) {
-               sql_table *sys_tab_args = find_sql_table(syss, "args");
-               sql_column *sys_args_col = find_sql_column(sys_tab_args, 
"func_id");
-               rids *args = table_funcs.rids_select(tr, sys_args_col, 
&func->base.id, &func->base.id, NULL);
-
-               for (oid r = table_funcs.rids_next(args); !is_oid_nil(r); r = 
table_funcs.rids_next(args))
-                       table_funcs.table_delete(tr, sys_tab_args, r);
-               table_funcs.rids_destroy(args);
-       }
+       sql_table *sys_tab_args = find_sql_table(syss, "args");
+       sql_column *sys_args_col = find_sql_column(sys_tab_args, "func_id");
+       rids *args = table_funcs.rids_select(tr, sys_args_col, &func->base.id, 
&func->base.id, NULL);
+
+       for (oid r = table_funcs.rids_next(args); !is_oid_nil(r); r = 
table_funcs.rids_next(args))
+               table_funcs.table_delete(tr, sys_tab_args, r);
+       table_funcs.rids_destroy(args);
 
        assert(!is_oid_nil(rid_func));
        table_funcs.table_delete(tr, sys_tab_func, rid_func);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to