Changeset: 8d8a5eb943de for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8d8a5eb943de
Added Files:
        sql/server/sql_tokens.h
Modified Files:
        NT/wincompile.py
        clients/mapiclient/dump.c
        clients/mapiclient/mclient.c
        clients/mapiclient/mhelp.c
        clients/mapiclient/msqldump.h
        common/stream/stream.c
        monetdb5/optimizer/opt_prelude.c
        sql/server/Makefile.ag
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/sql_mvc.c
        sql/server/sql_parser.h
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/server/sql_symbol.c
        sql/server/sql_symbol.h
        sql/storage/sql_catalog.c
        sql/storage/store.c
Branch: groupby-expressions
Log Message:

Merge with default.


diffs (truncated from 1103 to 300 lines):

diff --git a/NT/wincompile.py b/NT/wincompile.py
--- a/NT/wincompile.py
+++ b/NT/wincompile.py
@@ -51,7 +51,7 @@ def splitcommand(cmd):
         del command[0]
     return command
 
-def process(args, recursive = False):
+def process(args, recursive=False):
     argv = []
     for arg in args:
         if not recursive and arg[:1] == '@':
@@ -64,9 +64,9 @@ def process(args, recursive = False):
             else:
                 dirname = os.path.dirname(arg)
                 p = subprocess.Popen(['lib', '/nologo', '/list', arg],
-                                     shell = False,
-                                     universal_newlines = True,
-                                     stdout = subprocess.PIPE)
+                                     shell=False,
+                                     universal_newlines=True,
+                                     stdout=subprocess.PIPE)
                 for f in p.stdout:
                     argv.append(os.path.join(dirname, f.strip()))
                 p.wait()
@@ -79,12 +79,8 @@ argv = process(sys.argv[1:])
 if verbose:
     sys.stdout.write('EXECUTE: %s\n' % ' '.join(argv))
     sys.stdout.flush()
-p = subprocess.Popen(argv, shell = False, universal_newlines = True,
-                     stdout = subprocess.PIPE, stderr = subprocess.PIPE)
-out, err = p.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
-if p.returncode and not verbose:
+returncode = subprocess.call(argv, shell=False)
+if returncode and not verbose:
     sys.stderr.write('failed invocation: %s\n' % ' '.join(argv))
     sys.stderr.flush()
-sys.exit(p.returncode)
+sys.exit(returncode)
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1069,7 +1069,7 @@ dump_column_definition(Mapi mid, stream 
 
 int
 describe_table(Mapi mid, const char *schema, const char *tname,
-              stream *toConsole, int foreign, bool databaseDump)
+              stream *toConsole, bool foreign, bool databaseDump)
 {
        int cnt, table_id = 0;
        MapiHdl hdl = NULL;
@@ -1434,14 +1434,15 @@ describe_sequence(Mapi mid, const char *
 
        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 "
@@ -1462,7 +1463,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 ");
                dquoted_print(toConsole, schema, ".");
@@ -1474,6 +1476,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)) {
@@ -1763,7 +1767,7 @@ dump_table_data(Mapi mid, const char *sc
 
 int
 dump_table(Mapi mid, const char *schema, const char *tname, stream *toConsole,
-          int describe, int foreign, bool useInserts, bool databaseDump)
+          bool describe, bool foreign, bool useInserts, bool databaseDump)
 {
        int rc;
 
@@ -2081,7 +2085,7 @@ dump_functions(Mapi mid, stream *toConso
 }
 
 int
-dump_database(Mapi mid, stream *toConsole, int describe, bool useInserts)
+dump_database(Mapi mid, stream *toConsole, bool describe, bool useInserts)
 {
        const char *start_trx = "START TRANSACTION";
        const char *end = "ROLLBACK";
@@ -2582,7 +2586,7 @@ dump_database(Mapi mid, stream *toConsol
                        int ptype = atoi(type), dont_describe = (ptype == 3 || 
ptype == 5);
                        schema = strdup(schema);
                        name = strdup(name);
-                       rc = dump_table(mid, schema, name, toConsole, 
dont_describe ? 1 : describe, describe, useInserts, true);
+                       rc = dump_table(mid, schema, name, toConsole, 
dont_describe || describe, describe, useInserts, true);
                        free(schema);
                        free(name);
                } else if (query) {
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2704,7 +2704,7 @@ doFile(Mapi mid, stream *fp, bool useins
 #endif
                                        if (*line) {
                                                mnstr_printf(toConsole, "START 
TRANSACTION;\n");
-                                               dump_table(mid, NULL, line, 
toConsole, 0, 1, useinserts, false);
+                                               dump_table(mid, NULL, line, 
toConsole, false, true, useinserts, false);
                                                mnstr_printf(toConsole, 
"COMMIT;\n");
                                        } else
                                                dump_database(mid, toConsole, 
0, useinserts);
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -74,7 +74,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",
@@ -206,7 +206,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",
@@ -575,7 +575,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/clients/mapiclient/msqldump.h b/clients/mapiclient/msqldump.h
--- a/clients/mapiclient/msqldump.h
+++ b/clients/mapiclient/msqldump.h
@@ -6,12 +6,12 @@
  * Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
  */
 
-extern int describe_table(Mapi mid, const char *schema, const char *tname, 
stream *toConsole, int foreign, bool databaseDump);
+extern int describe_table(Mapi mid, const char *schema, const char *tname, 
stream *toConsole, bool foreign, bool databaseDump);
 extern int describe_sequence(Mapi mid, const char *schema, const char *sname, 
stream *toConsole);
 extern int describe_schema(Mapi mid, const char *sname, stream *toConsole);
-extern int dump_table(Mapi mid, const char *schema, const char *tname, stream 
*toConsole, int describe, int foreign, bool useInserts, bool databaseDump);
+extern int dump_table(Mapi mid, const char *schema, const char *tname, stream 
*toConsole, bool describe, bool foreign, bool useInserts, bool databaseDump);
 extern int dump_functions(Mapi mid, stream *toConsole, char set_schema, const 
char *sname, const char *fname, const char *id);
-extern int dump_database(Mapi mid, stream *toConsole, int describe, bool 
useInserts);
+extern int dump_database(Mapi mid, stream *toConsole, bool describe, bool 
useInserts);
 extern void dump_version(Mapi mid, stream *toConsole, const char *prefix);
 
 /* used for backward compatibility with older server versions */
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -1011,14 +1011,6 @@ stream_gzwrite(stream *restrict s, const
        return size == 0 ? -1 : (ssize_t) size;
 }
 
-static void
-stream_gzclose(stream *s)
-{
-       if (s->stream_data.p)
-               gzclose((gzFile) s->stream_data.p);
-       s->stream_data.p = NULL;
-}
-
 static int
 stream_gzflush(stream *s)
 {
@@ -1030,6 +1022,15 @@ stream_gzflush(stream *s)
        return 0;
 }
 
+static void
+stream_gzclose(stream *s)
+{
+       stream_gzflush(s);
+       if (s->stream_data.p)
+               gzclose((gzFile) s->stream_data.p);
+       s->stream_data.p = NULL;
+}
+
 static stream *
 open_gzstream(const char *restrict filename, const char *restrict flags)
 {
@@ -3996,6 +3997,8 @@ bs_close(stream *ss)
        assert(s);
        if (s == NULL)
                return;
+       if (!ss->readonly && s->nr > 0)
+               bs_flush(ss);
        if (s->s)
                s->s->close(s->s);
 }
@@ -4613,6 +4616,8 @@ bs2_close(stream *ss)
        assert(s);
        if (s == NULL)
                return;
+       if (!ss->readonly && s->nr > 0)
+               bs2_flush(ss);
        assert(s->s);
        if (s->s)
                s->s->close(s->s);
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -584,6 +584,7 @@ void optimizerInit(void)
        subeval_aggrRef = putName("subeval_aggr");
        subgroupdoneRef= putName("subgroupdone");
        subgroupRef = putName("subgroup");
+       subinterRef = putName("subinterRef");
        submaxRef = putName("submax");
        submedianRef = putName("submedian");
        subminRef = putName("submin");
diff --git a/sql/server/Makefile.ag b/sql/server/Makefile.ag
--- a/sql/server/Makefile.ag
+++ b/sql/server/Makefile.ag
@@ -59,5 +59,5 @@ lib_sqlserver = {
                rel_updates.h rel_psm.h rel_xml.h sql_atom.h sql_datetime.h \
                sql_decimal.h sql_env.h sql_mvc.h sql_parser.h \
                sql_privileges.h sql_qc.h sql_scan.h \
-               sql_semantic.h sql_symbol.h sql_partition.h
+               sql_semantic.h sql_symbol.h sql_tokens.h sql_partition.h
 }
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -393,6 +393,9 @@ column_constraint_type(mvc *sql, char *n
                mvc_null(sql, cs, null);
                res = SQL_OK;
        }       break;
+       default:{
+               res = SQL_ERR;
+       }
        }
        if (res == SQL_ERR) {
                (void) sql_error(sql, 02, SQLSTATE(M0M03) "Unknown constraint 
(%p)->token = %s\n", s, token2string(s->token));
@@ -480,6 +483,9 @@ column_option(
                mvc_null(sql, cs, null);
                res = SQL_OK;
        }       break;
+       default:{
+               res = SQL_ERR;
+       }
        }
        if (res == SQL_ERR) {
                (void) sql_error(sql, 02, SQLSTATE(M0M03) "Unknown column 
option (%p)->token = %s\n", s, token2string(s->token));
@@ -617,6 +623,8 @@ table_constraint_type(mvc *sql, char *na
        case SQL_FOREIGN_KEY:
                res = table_foreign_key(sql, name, s, ss, t);
                break;
+       default:
+               res = SQL_ERR;
        }
        if (res != SQL_OK) {
                sql_error(sql, 02, SQLSTATE(M0M03) "Table constraint type: 
wrong token (%p) = %s\n", s, token2string(s->token));
@@ -729,6 +737,9 @@ table_element(mvc *sql, symbol *s, sql_s
                case SQL_DROP_CONSTRAINT:
                        msg = "drop constraint from"; 
                        break;
+               default:
+                       sql_error(sql, 02, SQLSTATE(M0M03) "Unknown table 
element (%p)->token = %s\n", s, token2string(s->token));
+                       return SQL_ERR;
                }
                sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: cannot %s %s 
'%s'\n",
                                msg, 
@@ -907,6 +918,8 @@ table_element(mvc *sql, symbol *s, sql_s
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to