Changeset: 70ccd3d3f174 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=70ccd3d3f174 Modified Files: sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_cquery.c sql/server/sql_parser.y Branch: timetrails Log Message:
Drop continuous procedures diffs (100 lines): diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c --- a/sql/backends/monet5/sql_cat.c +++ b/sql/backends/monet5/sql_cat.c @@ -448,7 +448,7 @@ static str drop_func(mvc *sql, char *sname, char *name, int fid, int type, int action) { sql_schema *s = NULL; - char *F, *f; + char *F, *f, *err; char *KF = type == F_FILT ? "FILTER " : type == F_UNION ? "UNION " : ""; char *kf = type == F_FILT ? "filter " : type == F_UNION ? "union " : ""; @@ -484,6 +484,13 @@ drop_func(mvc *sql, char *sname, char *n } if (!action && mvc_check_dependency(sql, func->base.id, !IS_PROC(func) ? FUNC_DEPENDENCY : PROC_DEPENDENCY, NULL)) return sql_message("DROP %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, f, func->base.name); + //if it is a continuous procedure we must remove it first from the Petrinet + if(type == F_CONTINUOUS_PROCEDURE && CQlocate(sname, func->base.name)) { + err = CQderegisterInternal(sname, func->base.name); + if(err) { + return sql_message("DROP %s%s: internal error on %s%s %s: %s", KF, F, kf, f, func->base.name, err); + } + } mvc_drop_func(sql, s, func, action); } @@ -502,6 +509,13 @@ drop_func(mvc *sql, char *sname, char *n list_destroy(list_func); return sql_message("DROP %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, f, func->base.name); } + //if it is a continuous procedure we must remove it first from the Petrinet + if(type == F_CONTINUOUS_PROCEDURE && CQlocate(sname, func->base.name)) { + err = CQderegisterInternal(sname, func->base.name); + if(err) { + return sql_message("DROP %s%s: internal error on %s%s %s: %s", KF, F, kf, f, func->base.name, err); + } + } } mvc_drop_all_func(sql, s, list_func, action); list_destroy(list_func); diff --git a/sql/backends/monet5/sql_cquery.c b/sql/backends/monet5/sql_cquery.c --- a/sql/backends/monet5/sql_cquery.c +++ b/sql/backends/monet5/sql_cquery.c @@ -703,7 +703,7 @@ CQderegisterInternal(str modnme, str fcn idx = CQlocate(modnme, fcnnme); if( idx == pnettop) - throw(SQL,"cquery.deregister","Continuous query %s.%s not accessible\n",modnme,fcnnme); + throw(SQL,"cquery.deregister","Continuous procedure %s.%s not accessible\n",modnme,fcnnme); return CQderegisterInternalRanges(idx, idx+1); } diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -1973,14 +1973,13 @@ func_def: append_int(f, $1); $$ = _symbol_create_list( SQL_CREATE_FUNC, f ); } | create_or_replace CONTINUOUS PROCEDURE qname - '(' opt_paramlist ')' routine_body { dlist *f = L(); append_list(f, $4); /* continuous query name */ - append_list(f, $6); /* no parameters for now :( */ + append_list(f, NULL); /* no parameters */ append_symbol(f, NULL); /* no result */ append_list(f, NULL); /* no external name */ - append_list(f, $8); /* continuous query body */ + append_list(f, $5); /* continuous query body */ append_int(f, F_CONTINUOUS_PROCEDURE); /* continuous query identifier */ append_int(f, FUNC_LANG_SQL); /* for now only SQL */ append_int(f, $1); /* create or replace feature */ @@ -2453,6 +2452,12 @@ routine_designator: append_list(l, $3 ); append_int(l, F_PROC ); $$ = l; } + | CONTINUOUS PROCEDURE qname + { dlist *l = L(); + append_list(l, $3 ); + append_list(l, NULL ); + append_int(l, F_CONTINUOUS_PROCEDURE ); + $$ = l; } | sqlLOADER qname opt_typelist { dlist *l = L(); append_list(l, $2 ); @@ -2505,6 +2510,14 @@ drop_statement: append_int(l, 1 ); append_int(l, $5 ); $$ = _symbol_create_list( SQL_DROP_FUNC, l ); } + | drop ALL CONTINUOUS PROCEDURE qname drop_action + { dlist *l = L(); + append_list(l, $5 ); + append_list(l, NULL ); + append_int(l, F_CONTINUOUS_PROCEDURE ); + append_int(l, 1 ); + append_int(l, $6 ); + $$ = _symbol_create_list( SQL_DROP_FUNC, l ); } | drop ALL sqlLOADER qname drop_action { dlist *l = L(); append_list(l, $4 ); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list