Changeset: fc082618586c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fc082618586c
Modified Files:
        sql/src/backends/monet5/sql_gencode.mx
        sql/src/backends/monet5/sql_scenario.mx
        sql/src/common/sql_backend.mx
        sql/src/server/rel_select.mx
        sql/src/server/sql_psm.mx
Branch: Oct2010
Log Message:

resolve function (TODO do the real check in m5)


diffs (144 lines):

diff -r 96f640dc676a -r fc082618586c sql/src/backends/monet5/sql_gencode.mx
--- a/sql/src/backends/monet5/sql_gencode.mx    Mon Dec 13 20:45:08 2010 +0100
+++ b/sql/src/backends/monet5/sql_gencode.mx    Mon Dec 13 22:40:10 2010 +0100
@@ -53,7 +53,8 @@
 sql5_export void backend_call(backend *be, Client c, cq *q);
 sql5_export void initSQLreferences(void);
 sql5_export str backend_name(cq *cq);
-sql5_export void monet5_create_function(ptr M, char *name, sql_rel *rel, 
sql_table *t);
+sql5_export void monet5_create_table_function(ptr M, char *name, sql_rel *rel, 
sql_table *t);
+sql5_export int monet5_resolve_function(ptr M, sql_func *f);
 
 #endif /* _SQL2MAL_H */
 @c
@@ -2252,7 +2253,7 @@
 }
 
 void
-monet5_create_function(ptr M, char *name, sql_rel *rel, sql_table *t)
+monet5_create_table_function(ptr M, char *name, sql_rel *rel, sql_table *t)
 {
        sql_rel *r;
        mvc *m = (mvc*)M;
@@ -2312,6 +2313,24 @@
                c->curprg = backup;
 }
 
+int 
+monet5_resolve_function(ptr M, sql_func *f)
+{
+//     node *n;
+
+       (void)M;
+       (void)f;
+/*
+       newFcnCall(f->mod, f->imp);
+       for (n = f->ops->h; n; n = n->next) {
+               sql_arg *a = n->data;
+
+               q = push ?type? (mb, q, a->);
+       }
+*/
+       return 1;
+}
+
 static void
 backend_create_func(backend *be, sql_func *f)
 {
diff -r 96f640dc676a -r fc082618586c sql/src/backends/monet5/sql_scenario.mx
--- a/sql/src/backends/monet5/sql_scenario.mx   Mon Dec 13 20:45:08 2010 +0100
+++ b/sql/src/backends/monet5/sql_scenario.mx   Mon Dec 13 22:40:10 2010 +0100
@@ -260,7 +260,8 @@
        memset((char*)&be_funcs, 0, sizeof(backend_functions));
        be_funcs.fstack         = &monet5_freestack;
        be_funcs.fcode          = &monet5_freecode;
-       be_funcs.fcreate_function       = &monet5_create_function;
+       be_funcs.fcreate_table_function = &monet5_create_table_function;
+       be_funcs.fresolve_function      = &monet5_resolve_function;
        monet5_user_init(&be_funcs);
 
        MTIMEtimezone(&tz, &gmt);
diff -r 96f640dc676a -r fc082618586c sql/src/common/sql_backend.mx
--- a/sql/src/common/sql_backend.mx     Mon Dec 13 20:45:08 2010 +0100
+++ b/sql/src/common/sql_backend.mx     Mon Dec 13 22:40:10 2010 +0100
@@ -54,7 +54,8 @@
 typedef int  (*alter_user_fptr) (ptr mvc, str user, str passwd, char enc, 
sqlid schema_id, str oldpasswd);
 typedef int  (*rename_user_fptr) (ptr mvc, str olduser, str newuser);
 typedef void*  (*schema_user_dependencies) (ptr mvc, int schema_id);
-typedef void  (*create_function) (ptr mvc, str name, sql_rel *rel, sql_table 
*t);
+typedef void  (*create_table_function) (ptr mvc, str name, sql_rel *rel, 
sql_table *t);
+typedef int  (*resolve_function) (ptr mvc, sql_func *f);
 
 /* backing struct for this interface */
 typedef struct _backend_functions {
@@ -68,7 +69,8 @@
        alter_user_fptr fauser;
        rename_user_fptr fruser;
        schema_user_dependencies fschuserdep;
-       create_function fcreate_function;
+       create_table_function fcreate_table_function;
+       resolve_function fresolve_function;
 } backend_functions;
 
 extern void backend_freestack(int clientid, backend_stack stk);
@@ -82,7 +84,8 @@
 extern int     backend_alter_user(ptr mvc, str user, str passwd, char enc, 
sqlid schema_id, str oldpasswd);
 extern int     backend_rename_user(ptr mvc, str olduser, str newuser);
 extern void*   backend_schema_user_dependencies(ptr trans, int schema_id);
-extern void    backend_create_function(ptr trans, str name, sql_rel *rel, 
sql_table *t);
+extern void    backend_create_table_function(ptr trans, str name, sql_rel 
*rel, sql_table *t);
+extern int     backend_resolve_function(ptr trans, sql_func *f);
 
 extern backend_functions be_funcs;
 
@@ -172,9 +175,16 @@
        return NULL;
 }
 void   
-backend_create_function(ptr trans, str name, sql_rel *rel, sql_table *t)
+backend_create_table_function(ptr trans, str name, sql_rel *rel, sql_table *t)
 {
-       if (be_funcs.fcreate_function != NULL)
-               be_funcs.fcreate_function(trans, name, rel, t);
+       if (be_funcs.fcreate_table_function != NULL)
+               be_funcs.fcreate_table_function(trans, name, rel, t);
+}
+int    
+backend_resolve_function(ptr M, sql_func *f)
+{
+       if (be_funcs.fresolve_function != NULL)
+               return be_funcs.fresolve_function(M, f);
+       return 0;
 }
 @}
diff -r 96f640dc676a -r fc082618586c sql/src/server/rel_select.mx
--- a/sql/src/server/rel_select.mx      Mon Dec 13 20:45:08 2010 +0100
+++ b/sql/src/server/rel_select.mx      Mon Dec 13 22:40:10 2010 +0100
@@ -1366,7 +1366,7 @@
                rel_destroy(sq);
                return NULL;
        }
-       backend_create_function(sql, nme, sq, t);
+       backend_create_table_function(sql, nme, sq, t);
 
        f = NEW(sql_func);
        base_init(&f->base, store_next_oid(), TR_OLD, nme);
diff -r 96f640dc676a -r fc082618586c sql/src/server/sql_psm.mx
--- a/sql/src/server/sql_psm.mx Mon Dec 13 20:45:08 2010 +0100
+++ b/sql/src/server/sql_psm.mx Mon Dec 13 22:40:10 2010 +0100
@@ -649,10 +649,13 @@
                                        list_destroy(l);
                                }
                        } else {
+
                                char *fmod = qname_module(ext_name);
                                char *fnme = qname_fname(ext_name);
-                               mvc_create_func(sql, sql->session->schema, 
fname, l, restype,
-                                               FALSE, is_aggr, fmod, fnme, 
is_func);
+                               sql_func *f = mvc_create_func(sql, 
sql->session->schema, fname, l, restype, FALSE, is_aggr, fmod, fnme, is_func);
+                       
+                               if (!backend_resolve_function(sql, f)) 
+                                       return sql_error(sql, 01, "CREATE %s: 
external name %s.%s not bound", F, fmod, fnme);
                                sql_destroy_params(sql);
                                list_destroy(l);
                        }
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to