Changeset: 260e29fec629 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/260e29fec629
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_user.c
        sql/scripts/22_clients.sql
Branch: userprofile
Log Message:

one more recursive call removed, by simplifying the
db_users/ password_hash functions. No need for a c-function, just
use the users table directly.


diffs (106 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5197,9 +5197,9 @@ static mel_func sql_init_funcs[] = {
  pattern("sql", "argRecord", SQLargRecord, false, "Glue together the calling 
sequence", args(1,2, arg("",str),varargany("a",0))),
  pattern("sql", "sql_variables", sql_variables, false, "return the table with 
session variables", args(4,4, 
batarg("sname",str),batarg("name",str),batarg("type",str),batarg("value",str))),
  pattern("sql", "sessions", sql_sessions_wrap, false, "SQL export table of 
active sessions, their timeouts and idle status", args(9,9, 
batarg("id",int),batarg("user",str),batarg("start",timestamp),batarg("idle",timestamp),batarg("optmizer",str),batarg("stimeout",int),batarg("qtimeout",int),batarg("wlimit",int),batarg("mlimit",int))),
- pattern("sql", "db_users", db_users_wrap, false, "return table of users with 
sql scenario", args(1,1, batarg("",str))),
- pattern("sql", "password", db_password_wrap, false, "Return password hash of 
user", args(1,2, arg("",str),arg("user",str))),
- pattern("batsql", "password", db_password_wrap, false, "Return password hash 
of user", args(1,2, batarg("",str),batarg("user",str))),
+//pattern("sql", "db_users", db_users_wrap, false, "return table of users with 
sql scenario", args(1,1, batarg("",str))),
+//pattern("sql", "password", db_password_wrap, false, "Return password hash of 
user", args(1,2, arg("",str),arg("user",str))),
+//pattern("batsql", "password", db_password_wrap, false, "Return password hash 
of user", args(1,2, batarg("",str),batarg("user",str))),
  pattern("sql", "rt_credentials", sql_rt_credentials_wrap, false, "Return the 
remote table credentials for the given table", args(3,4, 
batarg("uri",str),batarg("username",str),batarg("hash",str),arg("tablename",str))),
  pattern("sql", "dump_cache", dump_cache, false, "dump the content of the 
query cache", args(2,2, batarg("query",str),batarg("count",int))),
  pattern("sql", "dump_opt_stats", dump_opt_stats, false, "dump the optimizer 
rewrite statistics", args(2,2, batarg("rewrite",str),batarg("count",int))),
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -33,15 +33,6 @@ getUsersTbl(mvc *m)
 }
 
 
-static inline sql_table*
-getSchemasTbl(mvc *m)
-{
-       sql_trans *tr = m->session->tr;
-       sql_schema *sys = find_sql_schema(tr, "sys");
-       return find_sql_table(tr, sys, SCHEMA_TABLE_NAME);
-}
-
-
 static oid
 getUserOIDByName(mvc *m, const char *user)
 {
@@ -65,21 +56,30 @@ getUserName(mvc *m, oid rid)
 }
 
 
-// static str
-// getSchemaName(mvc *m, sqlid schema_id)
-// {
-//     if (schema_id > 0) {
-//             oid rid;
-//             sql_trans *tr = m->session->tr;
-//             sqlstore *store = m->session->tr->store;
-//             sql_table *tbl = getSchemasTbl(m);
-//             if (is_oid_nil(rid = store->table_api.column_find_row(tr, 
find_sql_column(tbl, "id"), &schema_id, NULL)))
-//                     return NULL;
-//             return store->table_api.column_find_value(tr, 
find_sql_column(tbl, "name"), rid);
-//     }
-//     return NULL;
-// }
+#if 0
+static inline sql_table*
+getSchemasTbl(mvc *m)
+{
+       sql_trans *tr = m->session->tr;
+       sql_schema *sys = find_sql_schema(tr, "sys");
+       return find_sql_table(tr, sys, SCHEMA_TABLE_NAME);
+}
 
+static str
+getSchemaName(mvc *m, sqlid schema_id)
+{
+       if (schema_id > 0) {
+               oid rid;
+               sql_trans *tr = m->session->tr;
+               sqlstore *store = m->session->tr->store;
+               sql_table *tbl = getSchemasTbl(m);
+               if (is_oid_nil(rid = store->table_api.column_find_row(tr, 
find_sql_column(tbl, "id"), &schema_id, NULL)))
+                       return NULL;
+               return store->table_api.column_find_value(tr, 
find_sql_column(tbl, "name"), rid);
+       }
+       return NULL;
+}
+#endif
 
 static str
 getUserPassword(mvc *m, oid rid)
@@ -609,9 +609,12 @@ monet5_create_privileges(ptr _mvc, sql_s
        ops = sa_list(m->sa);
        /* following funcion returns a table (single column) of user names
           with the approriate scenario (sql) */
-       mvc_create_func(&f, m, NULL, s, "db_users", ops, res, F_UNION, 
FUNC_LANG_MAL, "sql", "db_users", "CREATE FUNCTION db_users () RETURNS TABLE( 
name varchar(2048)) EXTERNAL NAME sql.db_users;", FALSE, FALSE, TRUE, FALSE);
+       //mvc_create_func(&f, m, NULL, s, "db_users", ops, res, F_UNION, 
FUNC_LANG_MAL, "sql", "db_users", "CREATE FUNCTION db_users () RETURNS TABLE( 
name varchar(2048)) EXTERNAL NAME sql.db_users;", FALSE, FALSE, TRUE, FALSE);
+       mvc_create_func(&f, m, NULL, s, "db_users", ops, res, F_UNION, 
FUNC_LANG_SQL, "sql", NULL, "CREATE FUNCTION db_users () RETURNS TABLE( name 
varchar(2048)) return select name from users;", FALSE, FALSE, TRUE, FALSE);
+       /*
        if (f)
                f->instantiated = TRUE;
+               */
        // TODO this view should go, remove as part of db_user_info -> users 
rename
        t = mvc_init_create_view(m, s, "users",
                            "create view sys.users as select u.\"name\", "
diff --git a/sql/scripts/22_clients.sql b/sql/scripts/22_clients.sql
--- a/sql/scripts/22_clients.sql
+++ b/sql/scripts/22_clients.sql
@@ -6,7 +6,7 @@
 
 create function sys.password_hash (username string)
        returns string
-       external name sql.password;
+       return select password from users where name = username;
 
 create function sys.remote_table_credentials (tablename string)
 returns table ("uri" string, "username" string, "hash" string)
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to