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