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]