Update of /cvsroot/monetdb/sql/src/backends/monet4
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv12834/src/backends/monet4

Modified Files:
      Tag: GDK-2
        Makefile.ag sql_gencode.mx sql_result.mx sql_server.mx 
        sql_session.mx sql_user.mx 
Log Message:
propagated changes of Monday Sep 03 2007 - Thursday Sep 06 2007
from the development trunk to the GDK-2 branch


Index: sql_server.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/sql_server.mx,v
retrieving revision 1.171.2.3
retrieving revision 1.171.2.4
diff -u -d -r1.171.2.3 -r1.171.2.4
--- sql_server.mx       24 Aug 2007 09:39:52 -0000      1.171.2.3
+++ sql_server.mx       6 Sep 2007 13:51:58 -0000       1.171.2.4
@@ -293,10 +293,9 @@
 #include <sql_datetime.h>
 #include <sql_env.h>
 #include <algebra.h>
-#include <bat/bat_store.h>
+#include "sql_storage.h"
+#include <store_sequence.h>
 #include <bat/res_table.h>
-#include <bat/bat_bm.h>
-#include <bat/bat_sequence.h>
 
 @-
 The code heavily depends on the (complex) data structures for
@@ -338,16 +337,14 @@
 sql_frontend_wrap(Cntxt stk, YYSTREE lt, ValPtr res)
 {
        Client father = NULL;
-       backend_functions *be_funcs = GDKmalloc(sizeof(backend_functions));
 
        if (lt->cnt != 0) 
                return handle_argerror(res, lt->cnt, 0);
 
-       memset((char *)be_funcs, '\0', sizeof(backend_functions));
-       be_funcs->fstack = &monet4_freestack;
-       be_funcs->fcode = &monet4_freecode;
-       monet4_user_init(be_funcs);
-       backend_init(be_funcs); /* we probably leak be_funcs here */
+       memset((char *)&be_funcs, '\0', sizeof(backend_functions));
+       be_funcs.fstack = &monet4_freestack;
+       be_funcs.fcode = &monet4_freecode;
+       monet4_user_init(&be_funcs);
        CNTXTclient(stk, &father);
        if (father && father->father >= 0) {
                /* if the father itself is a temporary client, let
@@ -358,7 +355,7 @@
        }
        if (father)
                stk = father->stk;
-       if (mvc_init(0, (backend_stack) stk) < 0) {
+       if (mvc_init(0/*debug*/, store_bat, (backend_stack) stk) < 0) {
                return GDK_FAIL;
        }
        res->vtype = TYPE_ptr;
@@ -545,19 +542,12 @@
        sql_table *t = mvc_bind_table(m, s, tname);
        sql_column *c = mvc_bind_column(m, t, cname);
 
-       if (access == UPD || access == RD_UPD)
-               b = bind_ubat(tr, c, access);
-/*
-       else if (access == RDONLY)
-               b = bind_bats(tr, c);
-*/
-       else
-               b = bind_bat(tr, c, access);
+       b = store_funcs.bind_col(tr, c, access);
        return b;
 }
 
 int 
-mvc_append(BAT **b, mvc *M, str sname, str tname, str cname, int *access, BAT 
*i)
+mvc_append(BAT **b, mvc *M, str sname, str tname, str cname, int *access, BAT 
*ins)
 {
        mvc *m = *(mvc**)M;
        sql_trans *tr = m->session->tr;
@@ -565,10 +555,7 @@
        sql_table *t = mvc_bind_table(m, s, tname);
        sql_column *c = mvc_bind_column(m, t, cname);
 
-       if (*access == UPD || *access == RD_UPD)
-               *b = append_ubat(tr, c, *access, i);
-       else
-               *b = append_bat(tr, c, *access, i);
+       *b = store_funcs.append_col(tr, c, *access, ins);
        return GDK_SUCCEED;
 }
 
@@ -581,7 +568,7 @@
        sql_schema *s = mvc_bind_schema(m, sname);
        sql_table *t = mvc_bind_table(m, s, tname);
 
-       b = bind_dbat(tr, t, access);
+       b = store_funcs.bind_del(tr, t, access);
        return b;
 }
 
@@ -593,20 +580,13 @@
        sql_schema *s = mvc_bind_schema(m, sname);
        sql_idx *i = mvc_bind_idx(m, s, iname);
 
-       (void) tname;
-       if (access == UPD || access == RD_UPD)
-               b = bind_uidx(tr, i, access);
-/* 
-       else if (access == RDONLY)
-               b = bind_idxs(tr, i);
-*/
-       else
-               b = bind_idx(tr, i, access);
+       (void)tname;
+       b = store_funcs.bind_idx(tr, i, access);
        return b;
 }
 
 int
-mvc_append_idxbat(BAT **b, mvc *M, char *sname, char *tname, char *iname, int 
*access, BAT *ib)
+mvc_append_idxbat(BAT **b, mvc *M, char *sname, char *tname, char *iname, int 
*access, BAT *ins)
 {
        mvc *m = *(mvc**)M;
        sql_trans *tr = m->session->tr;
@@ -614,10 +594,7 @@
        sql_idx *i = mvc_bind_idx(m, s, iname);
 
        (void) tname;
-       if (*access == UPD || *access == RD_UPD)
-               *b = append_uidx(tr, i, *access, ib);
-       else
-               *b = append_idx(tr, i, *access, ib);
+       *b = store_funcs.append_idx(tr, i, *access, ins);
        return GDK_SUCCEED;
 }
 
@@ -667,7 +644,7 @@
 static int
 mvc_result_row(mvc *m, int nr_cols, int qtype)
 {
-       m->results = res_table_create(m->session->tr, m->result_id++, nr_cols, 
qtype, m->results);
+       m->results = res_table_create(m->session->tr, m->result_id++, nr_cols, 
qtype, m->results, NULL);
        return m->results->id;
 }
 

Index: sql_gencode.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/sql_gencode.mx,v
retrieving revision 1.153.2.1
retrieving revision 1.153.2.2
diff -u -d -r1.153.2.1 -r1.153.2.2
--- sql_gencode.mx      18 Aug 2007 09:07:51 -0000      1.153.2.1
+++ sql_gencode.mx      6 Sep 2007 13:51:58 -0000       1.153.2.2
@@ -105,7 +105,7 @@
        stream_write(sql->out, buf, 1, len);
 
        if (mvc_debug_on(sql->mvc, 8))
-                fwrite(buf, 1, len, stderr);
+               fprintf(stderr, "%.*s", (int) len, buf);
 }
 
 static void
@@ -326,6 +326,7 @@
 static int
 backend_dumpstmt_(stmt *s, int *nr, backend *sql)
 {
+       size_t buflen = SMALLBUFSIZ;
        char *buf = NULL;
        size_t len = 0;
        node *n;
@@ -344,7 +345,7 @@
 
                switch (s->type) {
                case st_none:{
-                       size_t buflen = SMALLBUFSIZ;
+                       buflen = SMALLBUFSIZ;
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        strcpy(buf, "var none := \"none\";\n");
@@ -356,7 +357,7 @@
                        break;
                case st_var:{
                        if (s->op1.sval) {
-                               size_t buflen = strlen(s->op1.sval) + 64;
+                               buflen = strlen(s->op1.sval) + 64;
                                buf = NEW_ARRAY(char, buflen + 1);
 
                                if (VAR_GLOBAL(s->flag)) { /* globals */
@@ -375,7 +376,7 @@
                                }
                                assert(len <= buflen);
                        } else {
-                               size_t buflen = 32;
+                               buflen = 32;
                                buf = NEW_ARRAY(char, buflen + 1);
 
                                len = snprintf(buf, buflen, "var s%d := 
A%d;\n", -s->nr, s->flag);
@@ -386,7 +387,7 @@
                        break;
                }
                case st_temp:{
-                       size_t buflen = strlen(s->op4.typeval.type->base.name) 
+ SMALLBUFSIZ;
+                       buflen = strlen(s->op4.typeval.type->base.name) + 
SMALLBUFSIZ;
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        len = snprintf(buf, buflen, "var s%d := 
new(void,%s).seqbase(oid(0));\n", -s->nr, s->op4.typeval.type->base.name);
@@ -400,7 +401,7 @@
                        backend_dec_nr2(s->op1.stval);
                        break;
                case st_bat: {
-                       size_t buflen = 128 + 
strlen(s->op1.cval->t->s->base.name) + strlen(s->op1.cval->t->base.name) + 
strlen(s->op1.cval->base.name);
+                       buflen = 128 + strlen(s->op1.cval->t->s->base.name) + 
strlen(s->op1.cval->t->base.name) + strlen(s->op1.cval->base.name);
 
                        buf = NEW_ARRAY(char, buflen + 1);
 
@@ -411,7 +412,7 @@
                        break;
                }
                case st_dbat:{
-                       size_t buflen = 128 + strlen(s->op1.tval->s->base.name) 
+ strlen(s->op1.tval->base.name);
+                       buflen = 128 + strlen(s->op1.tval->s->base.name) + 
strlen(s->op1.tval->base.name);
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        len = snprintf(buf, buflen, "var s%d := 
mvc_bind_dbat(myc, \"%s\", \"%s\", %d);\n", -s->nr, s->op1.tval->s->base.name, 
s->op1.tval->base.name, s->flag);
@@ -421,7 +422,7 @@
                        break;
                }
                case st_idxbat:{
-                       size_t buflen = 128 + 
strlen(s->op1.idxval->t->s->base.name) + strlen(s->op1.idxval->t->base.name) + 
strlen(s->op1.idxval->base.name);
+                       buflen = 128 + strlen(s->op1.idxval->t->s->base.name) + 
strlen(s->op1.idxval->t->base.name) + strlen(s->op1.idxval->base.name);
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        len = snprintf(buf, buflen, "var s%d := 
mvc_bind_idxbat(myc, \"%s\", \"%s\", \"%s\", %d);\n", -s->nr, 
s->op1.idxval->t->s->base.name, s->op1.idxval->t->base.name, 
s->op1.idxval->base.name, s->flag);
@@ -748,7 +749,7 @@
                        char *convert = s->op4.typeval.type->base.name;
                        /* convert types and make sure they are rounded up 
correctly */
                        int l = backend_dumpstmt_(s->op1.stval, nr, sql);
-                       size_t buflen = SMALLBUFSIZ;
+                       buflen = SMALLBUFSIZ;
 
                        /* external types have sqlname convert functions,
                           these can generate errors (fromstr cannot) */
@@ -811,8 +812,8 @@
                }
                case st_op:{
                        char *fimp = sql_func_imp(s->op4.funcval->func);
-                       size_t buflen = strlen(fimp) + 32;
 
+                       buflen = strlen(fimp) + 32;
                        backend_create_func(sql, s->op4.funcval->func); 
                        buf = NEW_ARRAY(char, buflen + 1);
                        len = snprintf(buf, buflen, "var s%d := %s();\n", 
-s->nr, fimp);
@@ -824,7 +825,6 @@
                case st_unop:{
                        char *fimp = sql_func_imp(s->op4.funcval->func);
                        int l = backend_dumpstmt_(s->op1.stval, nr, sql);
-                       size_t buflen;
 
                        backend_create_func(sql, s->op4.funcval->func); 
                        if (s->op1.stval->nrcols) {
@@ -852,9 +852,9 @@
                        int l = backend_dumpstmt_(s->op1.stval, nr, sql);
                        int r = backend_dumpstmt_(s->op2.stval, nr, sql);
                        char dec_func[SMALLBUFSIZ];
-                       size_t buflen = strlen(fimp) + SMALLBUFSIZ;
-                       buf = NEW_ARRAY(char, buflen + 1);
 
+                       buflen = strlen(fimp) + SMALLBUFSIZ;
+                       buf = NEW_ARRAY(char, buflen + 1);
                        dec_func[0] = 0;
                        backend_create_func(sql, s->op4.funcval->func); 
                        if (strcmp(fimp, "round")==0 &&
@@ -880,7 +880,6 @@
                        int opslen = 0;
                        char *ops;
                        node *n;
-                       size_t buflen;
                        int cnt = list_length(s->op1.stval->op1.lval);
 
                        backend_create_func(sql, s->op4.funcval->func); 
@@ -951,10 +950,11 @@
                case st_aggr:{
                        int output_type_needed = 0;
                        int l = backend_dumpstmt_(s->op1.stval, nr, sql);
-                       size_t buflen = strlen(s->op4.aggrval->aggr->imp) + 
SMALLBUFSIZ;
+
                        char *aggrfunc = s->op4.aggrval->aggr->imp;
                        sql_subtype *tpe = tail_type(s);
 
+                       buflen = strlen(aggrfunc) + SMALLBUFSIZ;
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        /* some aggr functions require bigger outputs types */
@@ -1033,7 +1033,7 @@
                            s->op2.stval->nrcols) {
                                stmt *c = s->op1.stval; 
 
-                               size_t buflen = 128 + 
strlen(c->op1.cval->t->s->base.name) + strlen(c->op1.cval->t->base.name) + 
strlen(c->op1.cval->base.name);
+                               buflen = 128 + 
strlen(c->op1.cval->t->s->base.name) + strlen(c->op1.cval->t->base.name) + 
strlen(c->op1.cval->base.name);
 
                                buf = NEW_ARRAY(char, buflen + 1);
                                len = snprintf(buf, buflen, "var s%d := 
mvc_append(myc, \"%s\", \"%s\", \"%s\", %d, s%d);\n", -s->nr, 
c->op1.cval->t->s->base.name, c->op1.cval->t->base.name, 
c->op1.cval->base.name, c->flag, r);
@@ -1043,7 +1043,7 @@
                                   s->op2.stval->nrcols) {
                                stmt *c = s->op1.stval; 
 
-                               size_t buflen = 128 + 
strlen(c->op1.idxval->t->s->base.name) + strlen(c->op1.idxval->t->base.name) + 
strlen(c->op1.idxval->base.name);
+                               buflen = 128 + 
strlen(c->op1.idxval->t->s->base.name) + strlen(c->op1.idxval->t->base.name) + 
strlen(c->op1.idxval->base.name);
 
                                buf = NEW_ARRAY(char, buflen + 1);
                                len = snprintf(buf, buflen, "var s%d := 
mvc_append_idxbat(myc, \"%s\", \"%s\", \"%s\", %d, s%d);\n", -s->nr, 
c->op1.idxval->t->s->base.name, c->op1.idxval->t->base.name, 
c->op1.idxval->base.name, c->flag, r);
@@ -1082,7 +1082,8 @@
                }
                case st_table_clear:{
                        sql_table *t = s->op1.tval;
-                       size_t buflen = strlen(t->base.name) + 
strlen(t->s->base.name) + SMALLBUFSIZ;
+
+                       buflen = strlen(t->base.name) + strlen(t->s->base.name) 
+ SMALLBUFSIZ;
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        len = snprintf(buf, buflen, "var s%d := 
mvc_clear_table(myc, \"%s\", \"%s\");\n", -s->nr, t->s->base.name, 
t->base.name);
@@ -1107,7 +1108,8 @@
                }
                case st_alias: {
                        int l = backend_dumpstmt_(s->op1.stval, nr, sql);
-                       int buflen = 32;
+
+                       buflen = 32;
                        buf = NEW_ARRAY(char, buflen + 1);
                        len = snprintf(buf, buflen, "var s%d := s%d;\n", 
-s->nr, l);
                        write_command(sql, buf);
@@ -1142,8 +1144,8 @@
                        char *tname = s->op1.stval->op1.tval->base.name;
                        int sep = backend_dumpstmt_(s->op2.stval, nr, sql);
                        int rsep = backend_dumpstmt_(s->op3.stval, nr, sql);
-                       size_t buflen = strlen(tname) + 512;
 
+                       buflen = strlen(tname) + 512;
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        if (s->op4.stval) {
@@ -1197,11 +1199,11 @@
                case st_output:{
                        stmt *order = NULL;
                        stmt *lst = s->op1.stval;
-                       size_t buflen = BUFSIZ;
 
                        backend_dumpstmt_(lst, nr, sql);
 
                        write_head(sql, -s->nr);
+                       buflen = BUFSIZ;
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        buf[0] = 0;
@@ -1319,11 +1321,11 @@
 
                case st_table: {
                        stmt *lst = s->op1.stval;
-                       size_t buflen = BUFSIZ;
 
                        backend_dumpstmt_(lst, nr, sql);
 
                        write_head(sql, -s->nr);
+                       buflen = BUFSIZ;
                        buf = NEW_ARRAY(char, buflen + 1);
 
                        buf[0] = 0;
@@ -1413,9 +1415,9 @@
                }       break;
                case st_assign: {
                        int v = backend_dumpstmt_(s->op2.stval, nr, sql);
-                       size_t buflen = strlen(s->op1.sval) + 32;
-                       buf = NEW_ARRAY(char, buflen + 1);
 
+                       buflen = strlen(s->op1.sval) + 32;
+                       buf = NEW_ARRAY(char, buflen + 1);
                        if (VAR_GLOBAL(s->flag)) { /* globals */
                                int vn = backend_dumpstmt_(s->op1.stval, nr, 
sql);
                                len = snprintf(buf, buflen, "setVariable(myc, 
s%d, s%d);\n", vn, v);

Index: sql_result.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/sql_result.mx,v
retrieving revision 1.62.2.1
retrieving revision 1.62.2.2
diff -u -d -r1.62.2.1 -r1.62.2.2
--- sql_result.mx       12 Aug 2007 17:42:26 -0000      1.62.2.1
+++ sql_result.mx       6 Sep 2007 13:51:58 -0000       1.62.2.2
@@ -51,7 +51,6 @@
 #include <monettime.h>
 #include <sql_scope.h>
 #include <bat/res_table.h>
-#include <bat/bat_bm.h>
 
 @= dec_tostr
        char buf[32];
@@ -1119,10 +1118,7 @@
 int
 mvc_result_table(mvc *m, int nr_cols, int type, BAT *order)
 {
-       res_table *t = res_table_create(m->session->tr, m->result_id++, 
nr_cols, type, m->results);
-
-       t->order = order->batCacheid;
-       bat_incref(t->order, TRUE, "mvc_result_table");
+       res_table *t = res_table_create(m->session->tr, m->result_id++, 
nr_cols, type, m->results, order);
        m->results = t;
        return t->id;
 }
@@ -1130,20 +1126,14 @@
 int
 mvc_result_column(mvc *m, char *tn, char *name, char *typename, int digits, 
int scale, BAT *b)
 {
-       res_col *c = res_col_create(m->session->tr, m->results, tn, name, 
typename, digits, scale);
-
-       c->b = b->batCacheid;
-       bat_incref(c->b, TRUE, "mvc_result_column");
+       (void)res_col_create(m->session->tr, m->results, tn, name, typename, 
digits, scale, TYPE_bat, b);
        return 0;
 }
 
 int
 mvc_result_value(mvc *m, char *tn, char *name, char *typename, int digits, int 
scale, ptr *p, int mtype)
 {
-       res_col *c = res_col_create(m->session->tr, m->results, tn, name, 
typename, digits, scale);
-
-       c->mtype = mtype;
-       c->p = ATOMdup(mtype, p);
+       (void)res_col_create(m->session->tr, m->results, tn, name, typename, 
digits, scale, mtype, p);
        return 0;
 }
 

Index: sql_user.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/sql_user.mx,v
retrieving revision 1.16
retrieving revision 1.16.6.1
diff -u -d -r1.16 -r1.16.6.1
--- sql_user.mx 3 Jan 2007 12:39:25 -0000       1.16
+++ sql_user.mx 6 Sep 2007 13:51:58 -0000       1.16.6.1
@@ -47,11 +47,11 @@
        sql_table *users = find_sql_table(sys, "db_users");
        sql_column *users_name = find_sql_column(users, "name");
 
-       rid = column_find_row(m->session->tr, users_name, auth, NULL);
+       rid = table_funcs.column_find_row(m->session->tr, users_name, auth, 
NULL);
 
        if (rid >= 0) {
                sql_column *users_schema = find_sql_column(users, 
"default_schema");
-               int *p = (int *) column_find_value(m->session->tr, 
users_schema, rid);
+               int *p = (int *) table_funcs.column_find_value(m->session->tr, 
users_schema, rid);
 
                if (p) {
                        res = *p;
@@ -87,11 +87,11 @@
        sql_table *auths = find_sql_table(sys, "auths");
        sql_column *auths_name = find_sql_column(auths, "name");
 
-       rid = column_find_row(m->session->tr, auths_name, user, NULL);
+       rid = table_funcs.column_find_row(m->session->tr, auths_name, user, 
NULL);
 
        if (rid >= 0) {
                sql_column *auths_id = find_sql_column(auths, "id");
-               int *p = (int *) column_find_value(m->session->tr, auths_id, 
rid);
+               int *p = (int *) table_funcs.column_find_value(m->session->tr, 
auths_id, rid);
 
                if (p) {
                        res = *p;
@@ -118,7 +118,7 @@
        /* add monetdb user */
        schema_id = sql_find_schema(m, "sys");
        assert(schema_id >= 0);
-       table_insert(m->session->tr, t, "monetdb", "monetdb", "MonetDB Admin", 
&schema_id);
+       table_funcs.table_insert(m->session->tr, t, "monetdb", "monetdb", 
"MonetDB Admin", &schema_id);
 
        t = mvc_create_view(m, s, "users", "SELECT \"name\", \"fullname\", 
\"default_schema\" FROM \"sys\".\"db_users\";", 1);
        mvc_create_column_(m, t, "name", "varchar", 1024);
@@ -134,7 +134,7 @@
        sql_table *users = find_sql_table(sys, "db_users");
        sql_column *users_schema = find_sql_column(users, "default_schema");
        sqlid schema_id = s->base.id;
-       ssize_t rid = column_find_row(m->session->tr, users_schema, &schema_id, 
NULL);
+       ssize_t rid = table_funcs.column_find_row(m->session->tr, users_schema, 
&schema_id, NULL);
        if (rid < 0)
                return FALSE;
        return TRUE;
@@ -149,19 +149,19 @@
        sql_table *users = find_sql_table(sys, "db_users");
        sql_column *users_name = find_sql_column(users, "name");
 
-       rid = column_find_row(m->session->tr, users_name, user, NULL);
+       rid = table_funcs.column_find_row(m->session->tr, users_name, user, 
NULL);
        if (rid < 0)
                return FALSE;
 
        if (passwd) {
                sql_column *users_passwd = find_sql_column(users, "passwd");
 
-               column_update_value(m->session->tr, users_passwd, rid, passwd);
+               table_funcs.column_update_value(m->session->tr, users_passwd, 
rid, passwd);
        }
        if (schema_id) {
                sql_column *users_schema = find_sql_column(users, 
"default_schema");
 
-               column_update_value(m->session->tr, users_schema, rid, 
&schema_id);
+               table_funcs.column_update_value(m->session->tr, users_schema, 
rid, &schema_id);
        }
 
        return TRUE;
@@ -176,50 +176,36 @@
        sql_table *users = find_sql_table(sys, "db_users");
        sql_column *users_name = find_sql_column(users, "name");
 
-       rid = column_find_row(m->session->tr, users_name, user, NULL);
+       rid = table_funcs.column_find_row(m->session->tr, users_name, user, 
NULL);
        if (rid < 0)
                return FALSE;
-       table_delete(m->session->tr, users, rid);
+       table_funcs.table_delete(m->session->tr, users, rid);
        
        return TRUE;    
 }
 
-list* 
+void* 
 monet4_schema_user_dependencies(ptr _trans, int schema_id)
 {
+       rids *A, *U;
        sql_trans *tr = (sql_trans*) _trans;
-       oid rid_user;
-        int user_id;
-        list *users_list = NULL, *user_id_list = NULL;
-        sql_table *users, *auths;
-        sql_column *auth_id, *auth_name, *users_name, *users_sch;
        sql_schema *s = find_sql_schema(tr, "sys");
        
-        auths = find_sql_table(s, "auths");
-        users = find_sql_table(s, "db_users");
-
-        auth_id = find_sql_column(auths, "id");
-        auth_name = find_sql_column(auths, "name");
-        users_name = find_sql_column(users, "name");
-        users_sch = find_sql_column(users, "default_schema");
-
-
-       users_list = table_select_column(tr, users_name, users_sch, &schema_id, 
NULL);
-       if (users_list)
-               user_id_list = list_create((fdestroy) NULL); 
-        while (users_list->h) {
-               rid_user = column_find_row(tr, auth_name, (char *) 
users_list->h->data, NULL);
-                user_id =  *(int *) column_find_value(tr, auth_id, rid_user);
-
-               list_append(user_id_list, &user_id);
+        sql_table *auths = find_sql_table(s, "auths");
+        sql_column *auth_name = find_sql_column(auths, "name");
 
-                users_list->h = users_list->h->next;
-        }
+        sql_table *users = find_sql_table(s, "db_users");
+        sql_column *users_name = find_sql_column(users, "name");
+        sql_column *users_sch = find_sql_column(users, "default_schema");
 
-       if (users_list)
-               list_destroy(users_list);
-       
-       return user_id_list;
+       /* select users with give schema */
+       U = table_funcs.rids_select(tr, users_sch, &schema_id, &schema_id, 
NULL);
+       /* select all authorization ids */
+       A = table_funcs.rids_select(tr, auth_name, NULL, NULL);
+       /* join all authorization with the selected users */
+       A = table_funcs.rids_join(tr, A, auth_name, U, users_name);
+       table_funcs.rids_destroy(U);
+       return A;
 }
 
 

Index: sql_session.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/sql_session.mx,v
retrieving revision 1.229
retrieving revision 1.229.2.1
diff -u -d -r1.229 -r1.229.2.1
--- sql_session.mx      6 Jul 2007 09:48:07 -0000       1.229
+++ sql_session.mx      6 Sep 2007 13:51:58 -0000       1.229.2.1
@@ -63,7 +63,7 @@
 #include <sql_qc.h>
 #include <sql_parser.h>                /* for sqlparse() */
 #include <sql_env.h>           /* explain,debug,reply_size,auto_commit etc */
-#include <bat/bat_store.h>
+#include <sql_storage.h>
 #include <bat/res_table.h>
 #include <mapi.h>
 
@@ -804,13 +804,13 @@
        users = find_sql_table(sys, "db_users");
        users_name = find_sql_column(users, "name");
 
-       if ((rid = column_find_row(m->session->tr, users_name, user, NULL)) >= 
0) {
+       if ((rid = table_funcs.column_find_row(m->session->tr, users_name, 
user, NULL)) >= 0) {
                sql_column *users_passwd = find_sql_column(users, "passwd");
-               char *pwd = column_find_value(m->session->tr, users_passwd, 
rid);
+               char *pwd = table_funcs.column_find_value(m->session->tr, 
users_passwd, rid);
 
                if (pwd && strcmp(passwd, pwd) == 0) {
                        sql_column *users_schema = find_sql_column(users, 
"default_schema");
-                       void *p = column_find_value(m->session->tr, 
users_schema, rid);
+                       void *p = table_funcs.column_find_value(m->session->tr, 
users_schema, rid);
                        unsigned int schema_id = *(unsigned int *)p;
                        sql_table *schemas = find_sql_table(sys, "schemas");
                        sql_column *schemas_name = find_sql_column(schemas, 
"name");
@@ -819,14 +819,14 @@
                        sql_column *auths_name = find_sql_column(auths, "name");
 
                        _DELETE(p);
-                       if ((rid = column_find_row(m->session->tr, schemas_id, 
&schema_id, NULL)) >= 0)
-                               schema = column_find_value(m->session->tr, 
schemas_name, rid);
+                       if ((rid = table_funcs.column_find_row(m->session->tr, 
schemas_id, &schema_id, NULL)) >= 0)
+                               schema = 
table_funcs.column_find_value(m->session->tr, schemas_name, rid);
 
                        /* only set schema if user is found */
-                       rid = column_find_row(m->session->tr, auths_name, user, 
NULL);
+                       rid = table_funcs.column_find_row(m->session->tr, 
auths_name, user, NULL);
                        if (rid >= 0) {
                                sql_column *auths_id = find_sql_column(auths, 
"id");
-                               void *p = column_find_value(m->session->tr, 
auths_id, rid);
+                               void *p = 
table_funcs.column_find_value(m->session->tr, auths_id, rid);
                                int id = *(int *) p;
 
                                _DELETE(p);

Index: Makefile.ag
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/Makefile.ag,v
retrieving revision 1.30
retrieving revision 1.30.6.1
diff -u -d -r1.30 -r1.30.6.1
--- Makefile.ag 3 Jan 2007 12:39:24 -0000       1.30
+++ Makefile.ag 6 Sep 2007 13:51:58 -0000       1.30.6.1
@@ -25,7 +25,7 @@
                sql_session.mx \
                sql_gencode.mx \
                sql_result.mx
-       LIBS = ../../server/libsqlserver ../../storage/bat/libbatstore 
../../common/libsqlcommon \
+       LIBS = ../../server/libsqlserver ../../storage/libstore 
../../storage/bat/libbatstore ../../common/libsqlcommon \
                $(MONETDB_LIBS) -lbat -lstream $(MONETDB4_LIBS) -lmonet \
                $(MONETDB4_MODS) -l_logger -l_streams -l_bat -l_builtin 
-l_ascii_io -l_algebra -l_str -l_monettime \
                $(PTHREAD_LIBS)


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to