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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list