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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to