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

Reply via email to