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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to