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