Changeset: 3a204f8320d3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3a204f8320d3
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/mal/Tests/tst670.stable.err
monetdb5/mal/Tests/tst670.stable.out
monetdb5/optimizer/opt_prelude.c
sql/server/Makefile.ag
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_updates.c
sql/server/sql_mvc.c
sql/server/sql_parser.h
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/server/sql_semantic.c
sql/server/sql_symbol.c
sql/server/sql_symbol.h
sql/storage/sql_catalog.c
sql/storage/store.c
Branch: merge-statements
Log Message:
Merge with default branch.
diffs (truncated from 1189 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
@@ -75,7 +75,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",
@@ -207,7 +207,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",
@@ -581,7 +581,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/mal/Tests/tst670.stable.err
b/monetdb5/mal/Tests/tst670.stable.err
--- a/monetdb5/mal/Tests/tst670.stable.err
+++ b/monetdb5/mal/Tests/tst670.stable.err
@@ -10,6 +10,18 @@ stderr of test 'tst670` in directory 'mo
# 09:29:49 > "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-25470" "--port=39422"
# 09:29:49 >
+MAPI = (monetdb) /var/tmp/mtest-8241/.s.monetdb.34087
+QUERY = function foo();
+ io.print("go");
+ end foo;
+ user.foo();
+ clients.quit();
+ function foo();
+ io.print("gone");
+ end foo;
+ mdb.List("user","foo");
+ user.foo();
+ERROR = !MALException:mal.interpreter:prematurely stopped client
# 09:29:49 >
# 09:29:49 > "Done."
diff --git a/monetdb5/mal/Tests/tst670.stable.out
b/monetdb5/mal/Tests/tst670.stable.out
--- a/monetdb5/mal/Tests/tst670.stable.out
+++ b/monetdb5/mal/Tests/tst670.stable.out
@@ -29,6 +29,7 @@ Ready.
# 09:29:49 > "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-25470" "--port=39422"
# 09:29:49 >
+[ "gone" ]
# 23:53:05 >
# 23:53:05 > Done.
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;
+ }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list