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]