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]