Changeset: f9d82a0deb89 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f9d82a0deb89
Modified Files:
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/test/BugTracker-2024/Tests/greatest-as-colname-7444.test
Branch: Dec2023
Log Message:

least/greatest aren't keywords


diffs (100 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
@@ -444,7 +444,6 @@ int yydebug=1;
        XML_PI_target
        opt_optimizer
        opt_default_role
-       multi_arg_func_name
 
 %type <l>
        argument_list
@@ -642,7 +641,7 @@ int yydebug=1;
 
 /* sql prefixes to avoid name clashes on various architectures */
 %token <sval>
-       IDENT UIDENT aTYPE ALIAS RANK sqlINT OIDNUM HEXADECIMALNUM OCTALNUM 
BINARYNUM INTNUM APPROXNUM
+       IDENT UIDENT aTYPE ALIAS RANK MARGFUNC sqlINT OIDNUM HEXADECIMALNUM 
OCTALNUM BINARYNUM INTNUM APPROXNUM
        USING
        GLOBAL CAST CONVERT
        CHARACTER VARYING LARGE OBJECT VARCHAR CLOB sqlTEXT BINARY sqlBLOB
@@ -664,7 +663,6 @@ int yydebug=1;
 %token <sval> COMMIT ROLLBACK SAVEPOINT RELEASE WORK CHAIN NO PRESERVE ROWS
 %token  START TRANSACTION READ WRITE ONLY ISOLATION LEVEL
 %token  UNCOMMITTED COMMITTED sqlREPEATABLE SERIALIZABLE DIAGNOSTICS sqlSIZE 
STORAGE SNAPSHOT
-%token  LEAST GREATEST
 
 %token <sval> ASYMMETRIC SYMMETRIC ORDER ORDERED BY IMPRINTS
 %token <operation> ESCAPE UESCAPE HAVING sqlGROUP ROLLUP CUBE sqlNULL
@@ -5876,6 +5874,7 @@ calc_ident:
  |  aTYPE      { $$ = $1; }
  |  ALIAS      { $$ = $1; }
  |  RANK       { $$ = $1; }    /* without '(' */
+ |  MARGFUNC   { $$ = $1; }    /* without '(' */
  |  non_reserved_word
  ;
 
@@ -7014,13 +7013,8 @@ odbc_tsi_qualifier:
        { $$ = iyear; }
 ;
 
-multi_arg_func_name:
-    LEAST      { $$ = sa_strdup(SA, "least"); }
- |  GREATEST   { $$ = sa_strdup(SA, "greatest"); }
- ;
-
 multi_arg_func:
-    multi_arg_func_name '(' case_search_condition_commalist ')' /* create 
nested calls of binary function */
+    MARGFUNC '(' case_search_condition_commalist ')' /* create nested calls of 
binary function */
        { dlist *args = $3;
          dnode *f = args->h;
          symbol *cur = f->data.sym;
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
@@ -590,8 +590,8 @@ scanner_init_keywords(void)
        failed += keywords_insert("SQL_TSI_QUARTER", SQL_TSI_QUARTER);
        failed += keywords_insert("SQL_TSI_YEAR", SQL_TSI_YEAR);
 
-       failed += keywords_insert("LEAST", LEAST);
-       failed += keywords_insert("GREATEST", GREATEST);
+       failed += keywords_insert("LEAST", MARGFUNC);
+       failed += keywords_insert("GREATEST", MARGFUNC);
        return failed;
 }
 
@@ -1472,7 +1472,7 @@ sql_get_next_token(YYSTYPE *yylval, void
                token = aTYPE;
 
        if (token == IDENT || token == COMPARISON ||
-           token == RANK || token == aTYPE || token == ALIAS) {
+           token == RANK || token == aTYPE || token == ALIAS || token == 
MARGFUNC) {
                yylval->sval = sa_strndup(c->sa, yylval->sval, 
lc->yycur-lc->yysval);
                lc->next_string_is_raw = false;
        } else if (token == STRING) {
diff --git a/sql/test/BugTracker-2024/Tests/greatest-as-colname-7444.test 
b/sql/test/BugTracker-2024/Tests/greatest-as-colname-7444.test
--- a/sql/test/BugTracker-2024/Tests/greatest-as-colname-7444.test
+++ b/sql/test/BugTracker-2024/Tests/greatest-as-colname-7444.test
@@ -1,7 +1,7 @@
-statement error 42000!syntax error, unexpected GREATEST, expecting FOREIGN or 
PRIMARY or UNIQUE in: "create table t7444a(greatest"
+statement ok
 create table t7444a(greatest int)
 
-statement error 42000!syntax error, unexpected FROM, expecting '(' in: "select 
greatest from"
+statement ok
 select greatest from t7444a
 
 statement ok
@@ -24,10 +24,10 @@ drop table if exists t7444b
 
 
 -- also check it for: least
-statement error 42000!syntax error, unexpected LEAST, expecting FOREIGN or 
PRIMARY or UNIQUE in: "create table t7444c(least"
+statement ok
 create table t7444c(least int)
 
-statement error 42000!syntax error, unexpected FROM, expecting '(' in: "select 
least from"
+statement ok
 select least from t7444c
 
 statement ok
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to