Changeset: ce9d00d6af1b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ce9d00d6af1b
Modified Files:
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/test/odbc-escape-sequences/Tests/All
        sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
Branch: escape-sequences
Log Message:

add dayname odbc func


diffs (73 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
@@ -723,6 +723,8 @@ SQLCODE SQLERROR UNDER WHENEVER
 
 %token X_BODY 
 %token MAX_MEMORY MAX_WORKERS OPTIMIZER
+/* odbc tokens */
+%token DAYNAME
 /* odbc data type tokens */
 %token <sval>
                SQL_BIGINT
@@ -5664,6 +5666,7 @@ non_reserved_word:
 | ODBC_GUID_ESCAPE_PREFIX { $$ = sa_strdup(SA, "guid"); }
 | ODBC_FUNC_ESCAPE_PREFIX { $$ = sa_strdup(SA, "fn"); }
 | ODBC_OJ_ESCAPE_PREFIX { $$ = sa_strdup(SA, "oj"); }
+| DAYNAME { $$ = sa_strdup(SA, "dayname"); }
 ;
 
 lngval:
@@ -6420,6 +6423,14 @@ odbc_datetime_func:
           append_symbol(l, $3);
           $$ = _symbol_create_list( SQL_UNOP, l ); 
                }
+    | DAYNAME '(' search_condition ')'
+               { dlist *l = L(); 
+                 append_list( l, append_string(L(), sa_strdup(SA, 
"date_to_str")));
+             append_int(l, FALSE); /* ignore distinct */
+          append_symbol(l, $3);
+          append_symbol(l, makeAtomNode(m, "char", "%A", 2, 0, false));
+          $$ = _symbol_create_list( SQL_BINOP, l ); 
+               }
     | MONTH '(' search_condition ')'
                { dlist *l = L(); 
                  append_list( l, append_string(L(), sa_strdup(SA, "month")));
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
@@ -527,6 +527,7 @@ scanner_init_keywords(void)
        failed += keywords_insert("guid", ODBC_GUID_ESCAPE_PREFIX);
        failed += keywords_insert("fn", ODBC_FUNC_ESCAPE_PREFIX);
        failed += keywords_insert("oj", ODBC_OJ_ESCAPE_PREFIX);
+       failed += keywords_insert("DAYNAME", DAYNAME);
        failed += keywords_insert("SQL_BIGINT", SQL_BIGINT);
        failed += keywords_insert("SQL_BINARY", SQL_BINARY);
        failed += keywords_insert("SQL_BIT", SQL_BIT);
diff --git a/sql/test/odbc-escape-sequences/Tests/All 
b/sql/test/odbc-escape-sequences/Tests/All
--- a/sql/test/odbc-escape-sequences/Tests/All
+++ b/sql/test/odbc-escape-sequences/Tests/All
@@ -6,3 +6,4 @@ numeric-functions
 string-functions
 time-date-interval-functions
 join
+system-functions
diff --git 
a/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test 
b/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
--- a/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
+++ b/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
@@ -18,11 +18,10 @@ select length(cast((select { fn curtime(
 ----
 1
 
-# TODO not implemented
-# query T rowsort
-# select { fn dayname('2022-11-11') }
-# ----
-# Friday
+query T rowsort
+select { fn dayname('2022-11-11') }
+----
+Friday
 
 query I rowsort
 select { fn dayofmonth('2022-11-11') }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to