Changeset: 2c9dd318b743 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2c9dd318b743
Modified Files:
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/test/odbc-escape-sequences/Tests/system-functions.test
Branch: escape-sequences
Log Message:

add ifnull


diffs (56 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
@@ -724,7 +724,7 @@ SQLCODE SQLERROR UNDER WHENEVER
 %token X_BODY 
 %token MAX_MEMORY MAX_WORKERS OPTIMIZER
 /* odbc tokens */
-%token DAYNAME MONTHNAME TIMESTAMPADD TIMESTAMPDIFF
+%token DAYNAME MONTHNAME TIMESTAMPADD TIMESTAMPDIFF IFNULL
 /* odbc data type tokens */
 %token <sval>
                SQL_BIGINT
@@ -5683,6 +5683,7 @@ non_reserved_word:
 | MONTHNAME { $$ = sa_strdup(SA, "monthname"); }
 | TIMESTAMPADD { $$ = sa_strdup(SA, "timestampadd"); }
 | TIMESTAMPDIFF { $$ = sa_strdup(SA, "timestampdiff"); }
+| IFNULL { $$ = sa_strdup(SA, "ifnull"); }
 ;
 
 lngval:
@@ -6531,6 +6532,12 @@ odbc_scalar_func:
           append_symbol(l, $5);
                  $$ = _symbol_create_list( SQL_BINOP, l ); 
                }
+    | IFNULL '(' search_condition ',' search_condition ')'
+        { dlist *l = L();
+          append_symbol( l, $3);
+          append_symbol( l, $5);
+                 $$ = _symbol_create_list(SQL_COALESCE, l);
+        }
 ;
 
 odbc_data_type:
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
@@ -528,6 +528,7 @@ scanner_init_keywords(void)
        failed += keywords_insert("fn", ODBC_FUNC_ESCAPE_PREFIX);
        failed += keywords_insert("oj", ODBC_OJ_ESCAPE_PREFIX);
        failed += keywords_insert("DAYNAME", DAYNAME);
+       failed += keywords_insert("IFNULL", IFNULL);
        failed += keywords_insert("MONTHNAME", MONTHNAME);
        failed += keywords_insert("TIMESTAMPADD", TIMESTAMPADD);
        failed += keywords_insert("TIMESTAMPDIFF", TIMESTAMPDIFF);
diff --git a/sql/test/odbc-escape-sequences/Tests/system-functions.test 
b/sql/test/odbc-escape-sequences/Tests/system-functions.test
--- a/sql/test/odbc-escape-sequences/Tests/system-functions.test
+++ b/sql/test/odbc-escape-sequences/Tests/system-functions.test
@@ -7,3 +7,8 @@ query I rowsort
 select length((select { fn database() })) > 0
 ----
 1
+
+query I rowsort
+select { fn ifnull(NULL, 1) }
+----
+1
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to