Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory 
sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv26162/src/backends/monet5

Modified Files:
        sql.mx sql_gencode.mx sql_scenario.mx sql_user.mx 
Log Message:
add basket support


Index: sql_scenario.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_scenario.mx,v
retrieving revision 1.375
retrieving revision 1.376
diff -u -d -r1.375 -r1.376
--- sql_scenario.mx     12 Apr 2010 09:20:56 -0000      1.375
+++ sql_scenario.mx     26 Apr 2010 19:27:30 -0000      1.376
@@ -250,6 +250,7 @@
        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;
        monet5_user_init(&be_funcs);
 
        MTIMEtimezone(&tz, &gmt);

Index: sql_gencode.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_gencode.mx,v
retrieving revision 1.359
retrieving revision 1.360
diff -u -d -r1.359 -r1.360
--- sql_gencode.mx      15 Mar 2010 22:27:00 -0000      1.359
+++ sql_gencode.mx      26 Apr 2010 19:27:30 -0000      1.360
@@ -51,6 +51,7 @@
 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);
 
 #endif /* _SQL2MAL_H */
 @c
@@ -63,7 +64,9 @@
 #include "mal_builder.h"
 
 #include <sql_rel2bin.h>
+#include <rel_optimizer.h>
 #include <rel_subquery.h>
+#include <rel_bin.h>
 
 static int _dumpstmt(backend *sql, MalBlkPtr mb, stmt *s);
 static void backend_create_func(backend *be, sql_func *f);
@@ -2199,6 +2202,67 @@
        }
 }
 
+void
+monet5_create_function(ptr M, char *name, sql_rel *rel, sql_table *t)
+{
+       sql_rel *r;
+       mvc *m = (mvc*)M;
+       Client c = mal_clients + m->clientid;
+       backend *be = ((backend *) c->state[MAL_SCENARIO_PARSER]);
+       MalBlkPtr curBlk = 0;
+       InstrPtr curInstr = 0;
+       Symbol backup = NULL;
+       stmt *s, *opt;
+
+       (void)t;
+       r = rel_optimizer(m, rel);
+       s = rel_bin(m, r);
+/*
+       if (s && s->type == st_ordered) {
+               stmt *order = stmt_dup(s->op1.stval);
+               stmt *ns = stmt_dup(s->op2.stval);
+                       
+               stmt_destroy(s);
+               s = sql_reorder(order, ns);
+       }
+*/
+       if (s->type == st_list && s->nrcols == 0 && s->key) {
+               /* row to columns */
+               node *n;
+               list *l = create_stmt_list();
+
+               for(n=s->op1.lval->h; n; n = n->next)
+                       list_append(l, const_column(stmt_dup(n->data)));
+               stmt_destroy(s);
+               s = stmt_list(l);
+       }
+       s = stmt_table(s, 1);
+       s = stmt_return(s, 0);
+       opt = rel2bin(m, s);
+       stmt_destroy(s);
+       s = bin_optimizer(m, opt);
+       stmt_destroy(opt);
+
+       backup = c->curprg;
+       c->curprg = newFunction(userRef,putName(name,strlen(name)), 
FUNCTIONsymbol);
+
+       curBlk = c->curprg->def;
+       curInstr = getInstrPtr(curBlk, 0);
+
+       setVarType(curBlk, 0, newBatType(TYPE_str, TYPE_bat));
+       setVarUDFtype(curBlk,0);
+
+       /* no ops */
+
+       backend_dumpstmt(be, curBlk, s);
+       /* SQL function definitions meant for inlineing should not be optimized 
before */
+       varSetProp(curBlk, getArg(curInstr, 0), sqlfunctionProp, op_eq, NULL);
+       stmt_destroy(s);
+       addQueryToCache(c);
+       if (backup) 
+               c->curprg = backup;
+}
+
 static void
 backend_create_func(backend *be, sql_func *f)
 {
@@ -2240,12 +2304,10 @@
                        setVarType(curBlk, 0, newBatType(TYPE_str, TYPE_bat));
                else
                        setVarType(curBlk, 0, f->res.type->localtype);
-               setVarUDFtype(curBlk,0);
        } else {
                setVarType(curBlk, 0, TYPE_void);
-               setVarUDFtype(curBlk,0);
        }
-       setModuleId(curInstr, putName("user",4));
+       setVarUDFtype(curBlk,0);
 
        if (f->ops) {
                int argc = 0;

Index: sql_user.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_user.mx,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- sql_user.mx 10 Jan 2010 15:33:33 -0000      1.52
+++ sql_user.mx 26 Apr 2010 19:27:30 -0000      1.53
@@ -219,7 +219,7 @@
        list *l;
 
        /* create the authorisation related tables */
-       t = mvc_create_table(m, s, "db_user_info", 1, SQL_PERSIST, 0, -1);
+       t = mvc_create_table(m, s, "db_user_info", tt_table, 1, SQL_PERSIST, 0, 
-1);
        mvc_create_column_(m, t, "name", "varchar", 1024);
        mvc_create_column_(m, t, "fullname", "varchar", 2048);
        mvc_create_column_(m, t, "default_schema", "int", 9);

Index: sql.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql.mx,v
retrieving revision 1.408
retrieving revision 1.409
diff -u -d -r1.408 -r1.409
--- sql.mx      25 Apr 2010 20:59:09 -0000      1.408
+++ sql.mx      26 Apr 2010 19:27:30 -0000      1.409
@@ -2756,7 +2756,7 @@
        s = mvc_bind_schema(m, dt_schema);
        if ( s == NULL)
                throw(MAL,"sql.declared_table","Schema missing");
-       (void)mvc_create_table(m, s, *name, TRUE, SQL_DECLARED_TABLE, CA_DROP, 
0);
+       (void)mvc_create_table(m, s, *name, tt_table, TRUE, SQL_DECLARED_TABLE, 
CA_DROP, 0);
        *res_id = 0;
        return MAL_SUCCEED;
 }
@@ -5116,7 +5116,7 @@
 
 @= crt_tbl
 sprintf(buff, "@2%d", @1);
-...@2_tbl = mvc_create_table(m, sch, buff, 0, SQL_PERSIST, 0, 3);
+...@2_tbl = mvc_create_table(m, sch, buff, tt_table, 0, SQL_PERSIST, 0, 3);
 mvc_create_column(m, @2_tbl, "@3", &tpe);
 mvc_create_column(m, @2_tbl, "@4", &tpe);
 mvc_create_column(m, @2_tbl, "@5", &tpe);
@@ -5206,7 +5206,7 @@
 #endif /* STORE */
 
        sprintf(buff, "map%d", id);
-       map_tbl = mvc_create_table(m, sch, buff, 0, SQL_PERSIST, 0, 2);
+       map_tbl = mvc_create_table(m, sch, buff, tt_table, 0, SQL_PERSIST, 0, 
2);
        mvc_create_column(m, map_tbl, "sid", &tpe);
        sql_find_subtype(&tpe, "varchar", 1024, 0);
        mvc_create_column(m, map_tbl, "lexical", &tpe);


------------------------------------------------------------------------------
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to