Changeset: 23a0c03c3568 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=23a0c03c3568
Modified Files:
clients/mapiclient/dump.c
clients/mapiclient/mhelp.c
sql/server/sql_parser.y
sql/server/sql_scan.c
Branch: Aug2018
Log Message:
Various fixes to sequences.
- NOMINVALUE, NOMAXVALUE, NOCYCLE are not SQL keywords: don't accept them;
- dump CACHE;
- fix help text.
diffs (158 lines):
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1162,14 +1162,15 @@ describe_sequence(Mapi mid, const char *
query = malloc(maxquerylen);
snprintf(query, maxquerylen,
"%s "
- "SELECT s.name, "
- "seq.name, "
- "get_value_for(s.name, seq.name), "
- "seq.\"minvalue\", "
- "seq.\"maxvalue\", "
- "seq.\"increment\", "
- "seq.\"cycle\", "
- "rem.\"remark\" "
+ "SELECT s.name, " /* 0 */
+ "seq.name, " /* 1 */
+ "get_value_for(s.name, seq.name), " /* 2 */
+ "seq.\"minvalue\", " /* 3 */
+ "seq.\"maxvalue\", " /* 4 */
+ "seq.\"increment\", " /* 5 */
+ "seq.\"cycle\", " /* 6 */
+ "seq.\"cacheinc\", " /* 7 */
+ "rem.\"remark\" " /* 8 */
"FROM sys.sequences seq LEFT OUTER JOIN sys.comments rem ON
seq.id = rem.id, "
"sys.schemas s "
"WHERE s.id = seq.schema_id "
@@ -1190,7 +1191,8 @@ describe_sequence(Mapi mid, const char *
const char *maxvalue = mapi_fetch_field(hdl, 4);
const char *increment = mapi_fetch_field(hdl, 5);
const char *cycle = mapi_fetch_field(hdl, 6);
- const char *remark = mapi_fetch_field(hdl, 7);
+ const char *cacheinc = mapi_fetch_field(hdl, 7);
+ const char *remark = mapi_fetch_field(hdl, 8);
mnstr_printf(toConsole,
"CREATE SEQUENCE \"%s\".\"%s\" START WITH %s",
@@ -1201,6 +1203,8 @@ describe_sequence(Mapi mid, const char *
mnstr_printf(toConsole, " MINVALUE %s", minvalue);
if (strcmp(maxvalue, "0") != 0)
mnstr_printf(toConsole, " MAXVALUE %s", maxvalue);
+ if (strcmp(cacheinc, "1") != 0)
+ mnstr_printf(toConsole, " CACHE %s", cacheinc);
mnstr_printf(toConsole, " %sCYCLE;\n", strcmp(cycle, "true") ==
0 ? "" : "NO ");
comment_on(toConsole, "SEQUENCE", schema, name, NULL, remark);
if (mnstr_errnr(toConsole)) {
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -66,7 +66,7 @@ SQLhelp sqlhelp[] = {
{"ALTER SEQUENCE",
"",
"ALTER SEQUENCE ident [ AS datatype] [ RESTART [WITH start]]
[INCREMENT BY increment]\n"
- "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NOMAXVALUE] |
[ [NO] CYCLE]",
+ "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NO MAXVALUE]
[CACHE cachevalue] [[NO] CYCLE]",
NULL,
"See also
https://www.monetdb.org/Documentation/Manuals/SQLreference/SerialTypes"},
{"ALTER USER",
@@ -198,7 +198,7 @@ SQLhelp sqlhelp[] = {
{"CREATE SEQUENCE",
"Define a new sequence generator",
"CREATE SEQUENCE ident [ AS datatype] [ START [WITH start]] [INCREMENT
BY increment]\n"
- "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NOMAXVALUE] |
[ [NO] CYCLE]",
+ "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NO MAXVALUE]
[CACHE cachevalue] [[NO] CYCLE]",
NULL,
"See also
https://www.monetdb.org/Documentation/Manuals/SQLreference/SerialTypes"},
{"CREATE STREAM TABLE",
@@ -573,7 +573,7 @@ SQLhelp sqlhelp[] = {
{"generated_column",
NULL,
"AUTO_INCREMENT | GENERATED ALWAYS AS IDENTITY [ '(' [ AS datatype] [
START [WITH start]] [INCREMENT BY increment]\n"
- "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NOMAXVALUE] |
[ [NO] CYCLE] ')' ] ",
+ "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NO MAXVALUE]
[CACHE cachevalue] [[NO] CYCLE] ')' ] ",
NULL,
"See also
https://www.monetdb.org/Documentation/Manuals/SQLreference/SerialTypes"},
{"global_privileges",
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
@@ -552,7 +552,6 @@ int yydebug=1;
/* sequence operations */
%token SEQUENCE INCREMENT RESTART CONTINUE
%token MAXVALUE MINVALUE CYCLE
-%token NOMAXVALUE NOMINVALUE NOCYCLE
%token NEXT VALUE CACHE
%token GENERATED ALWAYS IDENTITY
%token SERIAL BIGSERIAL AUTO_INCREMENT /* PostgreSQL and MySQL immitators */
@@ -1263,22 +1262,22 @@ opt_seq_param:
;
opt_alt_seq_param:
- AS data_type { $$ =
_symbol_create_list(SQL_TYPE, append_type(L(),&$2)); }
- | RESTART { $$ =
_symbol_create_list(SQL_START, append_int(L(),0)); /* plain restart now */ }
+ AS data_type { $$ = _symbol_create_list(SQL_TYPE,
append_type(L(),&$2)); }
+ | RESTART { $$ = _symbol_create_list(SQL_START,
append_int(L(),0)); /* plain restart now */ }
| RESTART WITH opt_sign lngval { $$ = _symbol_create_list(SQL_START,
append_lng(append_int(L(),2), is_lng_nil($4) ? $4 : $3 * $4)); }
- | RESTART WITH subquery { $$ =
_symbol_create_list(SQL_START, append_symbol(append_int(L(),1), $3)); }
- | opt_seq_common_param { $$ = $1; }
+ | RESTART WITH subquery { $$ = _symbol_create_list(SQL_START,
append_symbol(append_int(L(),1), $3)); }
+ | opt_seq_common_param { $$ = $1; }
;
opt_seq_common_param:
INCREMENT BY opt_sign lngval { $$ = _symbol_create_lng(SQL_INC,
is_lng_nil($4) ? $4 : $3 * $4); }
- | MINVALUE opt_sign lngval { $$ =
_symbol_create_lng(SQL_MINVALUE, is_lng_nil($3) ? $3 : $2 * $3); }
- | NOMINVALUE { $$ =
_symbol_create_lng(SQL_MINVALUE, 0); }
- | MAXVALUE opt_sign lngval { $$ =
_symbol_create_lng(SQL_MAXVALUE, is_lng_nil($3) ? $3 : $2 * $3); }
- | NOMAXVALUE { $$ =
_symbol_create_lng(SQL_MAXVALUE, 0); }
- | CACHE nonzerolng { $$ =
_symbol_create_lng(SQL_CACHE, $2); }
- | CYCLE { $$ =
_symbol_create_int(SQL_CYCLE, 1); }
- | NOCYCLE { $$ =
_symbol_create_int(SQL_CYCLE, 0); }
+ | MINVALUE opt_sign lngval { $$ = _symbol_create_lng(SQL_MINVALUE,
is_lng_nil($3) ? $3 : $2 * $3); }
+ | NO MINVALUE { $$ = _symbol_create_lng(SQL_MINVALUE,
0); }
+ | MAXVALUE opt_sign lngval { $$ = _symbol_create_lng(SQL_MAXVALUE,
is_lng_nil($3) ? $3 : $2 * $3); }
+ | NO MAXVALUE { $$ = _symbol_create_lng(SQL_MAXVALUE,
0); }
+ | CACHE nonzerolng { $$ = _symbol_create_lng(SQL_CACHE,
$2); }
+ | CYCLE { $$ = _symbol_create_int(SQL_CYCLE,
1); }
+ | NO CYCLE { $$ = _symbol_create_int(SQL_CYCLE,
0); }
;
/*=== END SEQUENCES ===*/
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
@@ -374,9 +374,6 @@ scanner_init_keywords(void)
failed += keywords_insert("MAXVALUE", MAXVALUE);
failed += keywords_insert("MINVALUE", MINVALUE);
failed += keywords_insert("CYCLE", CYCLE);
- failed += keywords_insert("NOMAXVALUE", NOMAXVALUE);
- failed += keywords_insert("NOMINVALUE", NOMINVALUE);
- failed += keywords_insert("NOCYCLE", NOCYCLE);
failed += keywords_insert("CACHE", CACHE);
failed += keywords_insert("NEXT", NEXT);
failed += keywords_insert("VALUE", VALUE);
@@ -1286,23 +1283,6 @@ sqllex(YYSTYPE * yylval, void *parm)
} else {
lc->yynext = next;
}
- } else if (token == NO) {
- int next = sqllex(yylval, parm);
-
- switch (next) {
- case MAXVALUE:
- token = NOMAXVALUE;
- break;
- case MINVALUE:
- token = NOMINVALUE;
- break;
- case CYCLE:
- token = NOCYCLE;
- break;
- default:
- lc->yynext = next;
- break;
- }
} else if (token == SCOLON) {
/* ignore semi-colon(s) following a semi-colon */
if (lc->yylast == SCOLON) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list