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]