Changeset: 406ff7fd3a0e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/406ff7fd3a0e
Modified Files:
monetdb5/modules/mal/inspect.c
sql/scripts/25_debug.sql
sql/server/sql_parser.y
sql/test/escape-sequences/Tests/scalar-functions.test
Branch: escape-sequences
Log Message:
special case scalar functions
diffs (68 lines):
diff --git a/monetdb5/modules/mal/inspect.c b/monetdb5/modules/mal/inspect.c
--- a/monetdb5/modules/mal/inspect.c
+++ b/monetdb5/modules/mal/inspect.c
@@ -521,6 +521,13 @@ INSPECTgetEnvironmentKey(str *ret, str *
}
static str
+INSPECTgetDatabaseName(str *ret)
+{
+ char* key = "gdk_dbname";
+ return INSPECTgetEnvironmentKey(ret, &key);
+}
+
+static str
INSPECTatom_sup_names(bat *ret)
{
int i, k;
@@ -699,6 +706,7 @@ mel_func inspect_init_funcs[] = {
command("inspect", "getAtomSizes", INSPECTatom_sizes, false, "Collect a BAT
with the atom sizes.", args(1,1, batarg("",int))),
command("inspect", "getEnvironment", INSPECTgetEnvironment, false, "Collect
the environment variables.", args(2,2, batarg("k",str),batarg("v",str))),
command("inspect", "getEnvironment", INSPECTgetEnvironmentKey, false, "Get
the value of an environemnt variable", args(1,2, arg("",str),arg("k",str))),
+ command("inspect", "getDatabaseName", INSPECTgetDatabaseName, false, "Return
database name", args(1,1, arg("",str))),
{ .imp=NULL }
};
#include "mal_import.h"
diff --git a/sql/scripts/25_debug.sql b/sql/scripts/25_debug.sql
--- a/sql/scripts/25_debug.sql
+++ b/sql/scripts/25_debug.sql
@@ -32,6 +32,10 @@ create view sys.optimizers as select * f
create view sys.environment as select * from sys.env();
GRANT SELECT ON sys.environment TO PUBLIC;
+create function sys.database ()
+ returns string
+ external name inspect."getDatabaseName";
+
-- The BAT buffer pool overview
create function sys.bbp ()
returns table (id int, name string,
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -6393,6 +6393,8 @@ odbc_scalar_func:
append_symbol(l, $3);
append_type(l, &$5);
$$ = _symbol_create_list( SQL_CAST, l ); }
+ | USER '(' ')'
+ { $$ = _symbol_create_list(SQL_NAME, append_string(append_string(L(),
sa_strdup(SA, "sys")), sa_strdup(SA, "current_user"))); }
;
odbc_data_type:
diff --git a/sql/test/escape-sequences/Tests/scalar-functions.test
b/sql/test/escape-sequences/Tests/scalar-functions.test
--- a/sql/test/escape-sequences/Tests/scalar-functions.test
+++ b/sql/test/escape-sequences/Tests/scalar-functions.test
@@ -1,3 +1,13 @@
+query T rowsort
+select { fn user() }
+----
+monetdb
+
+query I rowsort
+select length((select { fn database() })) > 0
+----
+1
+
query I rowsort
select { fn abs(-3) }
----
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]