Changeset: 9d57cceda8fc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9d57cceda8fc
Added Files:
        sql/test/escape-sequences/Tests/scalar-functions.test
Modified Files:
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/test/escape-sequences/Tests/All
Branch: escape-sequences
Log Message:

scalar function that map 1:1


diffs (99 lines):

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
@@ -380,11 +380,6 @@ int yydebug=1;
        XML_query
        XML_text
        XML_validate
-    odbc_date_escape
-    odbc_time_escape
-    odbc_timestamp_escape
-    odbc_guid_escape
-    odbc_interval_escape
 
 %type <type>
        data_type
@@ -728,8 +723,22 @@ SQLCODE SQLERROR UNDER WHENEVER
 
 %token X_BODY 
 %token MAX_MEMORY MAX_WORKERS OPTIMIZER
-/* escape sequence tokens */
-%token<sval> DATE_ESCAPE_PREFIX TIME_ESCAPE_PREFIX TIMESTAMP_ESCAPE_PREFIX 
GUID_ESCAPE_PREFIX
+/* odbc escape prefix tokens */
+%token <sval>
+    DATE_ESCAPE_PREFIX
+    TIME_ESCAPE_PREFIX
+    TIMESTAMP_ESCAPE_PREFIX
+    GUID_ESCAPE_PREFIX
+    ODBC_FUNC_ESCAPE_PREFIX
+/* odbc symbolic types */
+%type <sym>
+    odbc_date_escape
+    odbc_time_escape
+    odbc_timestamp_escape
+    odbc_guid_escape
+    odbc_interval_escape
+    odbc_scalar_func_escape
+    odbc_scalar_func
 %%
 
 sqlstmt:
@@ -4127,6 +4136,7 @@ value_exp:
  |  param
  |  string_funcs
  |  XML_value_function
+ |  odbc_scalar_func_escape
  ;
 
 param:
@@ -5598,6 +5608,7 @@ non_reserved_word:
 | TIME_ESCAPE_PREFIX { $$ = sa_strdup(SA, "t"); }
 | TIMESTAMP_ESCAPE_PREFIX { $$ = sa_strdup(SA, "ts"); }
 | GUID_ESCAPE_PREFIX { $$ = sa_strdup(SA, "guid"); }
+| ODBC_FUNC_ESCAPE_PREFIX { $$ = sa_strdup(SA, "fn"); }
 ;
 
 lngval:
@@ -6327,6 +6338,13 @@ odbc_interval_escape:
      '{' interval_expression '}' {$$ = $2;}
     ;
 
+odbc_scalar_func_escape:
+    '{' ODBC_FUNC_ESCAPE_PREFIX odbc_scalar_func '}' {$$ = $3;}
+;
+
+odbc_scalar_func:
+    func_ref { $$ = $1;}
+;
 
 %%
 
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -525,6 +525,7 @@ scanner_init_keywords(void)
        failed += keywords_insert("t", TIME_ESCAPE_PREFIX);
        failed += keywords_insert("ts", TIMESTAMP_ESCAPE_PREFIX);
        failed += keywords_insert("guid", GUID_ESCAPE_PREFIX);
+       failed += keywords_insert("fn", ODBC_FUNC_ESCAPE_PREFIX);
 
        return failed;
 }
diff --git a/sql/test/escape-sequences/Tests/All 
b/sql/test/escape-sequences/Tests/All
--- a/sql/test/escape-sequences/Tests/All
+++ b/sql/test/escape-sequences/Tests/All
@@ -1,3 +1,4 @@
 literals
 like-sequences
 call-procedures
+scalar-functions
diff --git a/sql/test/escape-sequences/Tests/scalar-functions.test 
b/sql/test/escape-sequences/Tests/scalar-functions.test
new file mode 100644
--- /dev/null
+++ b/sql/test/escape-sequences/Tests/scalar-functions.test
@@ -0,0 +1,5 @@
+query I rowsort
+select { fn abs(-3) }
+----
+3
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to