Changeset: 626f4ede2f20 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=626f4ede2f20
Added Files:
sql/jdbc/tests/Tests/JdbcClient_create_tables.sql
sql/jdbc/tests/Tests/JdbcClient_drop_tables.sql
sql/jdbc/tests/Tests/JdbcClient_inserts_selects.sql
Removed Files:
sql/jdbc/tests/JdbcClient_create_tables.sql
sql/jdbc/tests/JdbcClient_inserts_selects.sql
Modified Files:
gdk/gdk_system.c
monetdb5/modules/mal/tablet.c
sql/backends/monet5/sql_result.c
sql/jdbc/tests/Tests/Test_JdbcClient.SQL.bat
sql/jdbc/tests/Tests/Test_JdbcClient.SQL.sh
sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
sql/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err
sql/test/BugTracker-2010/Tests/incomplete-utf8-sequence.Bug-2575.stable.err
sql/test/BugTracker-2015/Tests/backslash_predecing_separator.Bug-3775.stable.err
sql/test/copy/Tests/columns.stable.err
sql/test/copy/Tests/incorrect_columns.stable.out
Branch: default
Log Message:
Merge with Apr2019 branch.
diffs (truncated from 520 to 300 lines):
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -880,5 +880,41 @@ MT_check_nr_cores(void)
ncpus = 16;
#endif
+ /* get the number of allocated cpus from the cgroup settings */
+ FILE *f = fopen("/sys/fs/cgroup/cpuset/cpuset.cpus", "r");
+ if (f != NULL) {
+ char buf[512];
+ char *p = fgets(buf, 512, f);
+ fclose(f);
+ if (p != NULL) {
+ /* syntax is: ranges of CPU numbers separated
+ * by comma; a range is either a single CPU
+ * id, or two IDs separated by a minus; any
+ * deviation causes the file to be ignored */
+ int ncpu = 0;
+ for (;;) {
+ char *q;
+ unsigned fst = strtoul(p, &q, 10);
+ if (q == p)
+ return ncpus;
+ ncpu++;
+ if (*q == '-') {
+ p = q + 1;
+ unsigned lst = strtoul(p, &q, 10);
+ if (q == p || lst <= fst)
+ return ncpus;
+ ncpu += lst - fst;
+ }
+ if (*q == '\n')
+ break;
+ if (*q != ',')
+ return ncpus;
+ p = q + 1;
+ }
+ if (ncpu < ncpus)
+ return ncpu;
+ }
+ }
+
return ncpus;
}
diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -663,34 +663,33 @@ typedef struct {
static void
tablet_error(READERtask *task, lng row, int col, const char *msg, const char
*fcn)
{
+ MT_lock_set(&errorlock);
if (task->cntxt->error_row != NULL) {
- MT_lock_set(&errorlock);
if (BUNappend(task->cntxt->error_row, &row, false) !=
GDK_SUCCEED ||
BUNappend(task->cntxt->error_fld, &col, false) !=
GDK_SUCCEED ||
BUNappend(task->cntxt->error_msg, msg, false) !=
GDK_SUCCEED ||
BUNappend(task->cntxt->error_input, fcn, false) !=
GDK_SUCCEED)
task->besteffort = 0;
- if (task->as->error == NULL && (msg == NULL || (task->as->error
= GDKstrdup(msg)) == NULL)) {
- task->as->error = createException(MAL, "sql.copy_from",
SQLSTATE(HY001) MAL_MALLOC_FAIL);
- task->besteffort = 0;
- }
if (!is_lng_nil(row) && task->rowerror)
task->rowerror[row]++;
+ }
+ if (task->as->error == NULL) {
+ if (msg == NULL)
+ task->besteffort = 0;
+ else if (!is_lng_nil(row)) {
+ if (!is_int_nil(col))
+ task->as->error = createException(MAL,
"sql.copy_from", "line " LLFMT ": column %d: %s", row + 1, col + 1, msg);
+ else
+ task->as->error = createException(MAL,
"sql.copy_from", "line " LLFMT ": %s", row + 1, msg);
+ } else
+ task->as->error = createException(MAL, "sql.copy_from",
"%s", msg);
+ }
#ifdef _DEBUG_TABLET_
- mnstr_printf(GDKout, "#tablet_error: " LLFMT ",%d:%s:%s\n",
- row, col, msg, fcn);
+ mnstr_printf(GDKout, "#tablet_error: " LLFMT ",%d:%s:%s\n",
+ row, col, msg, fcn);
#endif
- task->errorcnt++;
- MT_lock_unset(&errorlock);
- } else {
- MT_lock_set(&errorlock);
- if (task->as->error == NULL && (msg == NULL || (task->as->error
= GDKstrdup(msg)) == NULL)) {
- task->as->error = createException(MAL, "sql.copy_from",
SQLSTATE(HY001) MAL_MALLOC_FAIL);
- task->besteffort = 0;
- }
- task->errorcnt++;
- MT_lock_unset(&errorlock);
- }
+ task->errorcnt++;
+ MT_lock_unset(&errorlock);
}
/*
@@ -883,7 +882,6 @@ SQLinsert_val(READERtask *task, int col,
row, fmt->name ? fmt->name : "",
fmt->type,
s ? " in '" : "", s ? s : "", s ? "'"
: "");
GDKfree(s);
- buf[sizeof(buf)-1]=0;
if (task->as->error == NULL && (task->as->error =
GDKstrdup(buf)) == NULL)
task->as->error = createException(MAL,
"sql.copy_from", SQLSTATE(HY001) MAL_MALLOC_FAIL);
task->rowerror[idx]++;
@@ -1025,8 +1023,7 @@ SQLload_parse_line(READERtask *task, int
/* not enough fields */
if (i < as->nr_attrs - 1) {
errline = SQLload_error(task, idx, i+1);
- snprintf(errmsg, BUFSIZ, "Column value "BUNFMT"
missing", i+1);
- tablet_error(task, idx, (int) i, errmsg,
errline);
+ tablet_error(task, idx, (int) i, "Column value
missing", errline);
GDKfree(errline);
error = true;
errors1:
@@ -1065,8 +1062,7 @@ SQLload_parse_line(READERtask *task, int
/* not enough fields */
if (i < as->nr_attrs - 1) {
errline = SQLload_error(task, idx,i+1);
- snprintf(errmsg, BUFSIZ, "Column value "BUNFMT"
missing",i+1);
- tablet_error(task, idx, (int) i, errmsg,
errline);
+ tablet_error(task, idx, (int) i, "Column value
missing", errline);
GDKfree(errline);
error = true;
/* we save all errors detected */
@@ -1273,7 +1269,7 @@ SQLproducer(void *p)
size_t rseplen = strlen(rsep), partial = 0;
char quote = task->quote;
dfa_t rdfa;
- lng rowno = 1;
+ lng rowno = 0;
MT_sema_down(&task->producer);
if (task->id < 0) {
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -1017,7 +1017,7 @@ mvc_import_table(Client cntxt, BAT ***ba
}
}
if (as.error) {
- if( !best) sql_error(m, 500, "%s", as.error);
+ if( !best) sql_error(m, 500, "%s",
getExceptionMessage(as.error));
freeException(as.error);
as.error = NULL;
}
diff --git a/sql/jdbc/tests/JdbcClient_create_tables.sql
b/sql/jdbc/tests/Tests/JdbcClient_create_tables.sql
rename from sql/jdbc/tests/JdbcClient_create_tables.sql
rename to sql/jdbc/tests/Tests/JdbcClient_create_tables.sql
--- a/sql/jdbc/tests/JdbcClient_create_tables.sql
+++ b/sql/jdbc/tests/Tests/JdbcClient_create_tables.sql
@@ -46,7 +46,7 @@ CREATE INDEX "triples_subject_predicate_
CREATE View subject_stats as SELECT "subject", CAST(COUNT(*) AS BIGINT) AS
counts, MIN("subject") AS min_value, MAX("subject") AS max_value FROM
"triples" GROUP BY "subject" ORDER BY "subject";
CREATE View predicate_stats as SELECT "predicate", CAST(COUNT(*) AS BIGINT) AS
counts, MIN("predicate") AS min_value, MAX("predicate") AS max_value FROM
"triples" GROUP BY "predicate" ORDER BY "predicate";
-CREATE View object_stats as SELECT "object", CAST(COUNT(*) AS BIGINT) AS
counts, MIN("object") AS min_value, MAX("object") AS max_value FROM
"triples" GROUP BY "object" ORDER BY "object";
+CREATE OR REPLACE View object_stats as SELECT "object", CAST(COUNT(*) AS
BIGINT) AS counts, MIN("object") AS min_value, MAX("object") AS max_value FROM
"triples" GROUP BY "object" ORDER BY "object";
CREATE MERGE TABLE mt (id int primary key, nm varchar(123) NOT NULL);
@@ -54,4 +54,6 @@ CREATE REMOTE TABLE remt (id int prima
CREATE REPLICA TABLE replt (id int primary key, nm varchar(123) NOT NULL);
CREATE STREAM TABLE strt (id int primary key, nm varchar(123) NOT NULL);
+CREATE GLOBAL TEMP TABLE gtmpt (id int primary key, nm varchar(123) NOT NULL)
ON COMMIT PRESERVE ROWS;
+
COMMIT;
diff --git a/sql/jdbc/tests/Tests/JdbcClient_drop_tables.sql
b/sql/jdbc/tests/Tests/JdbcClient_drop_tables.sql
new file mode 100644
--- /dev/null
+++ b/sql/jdbc/tests/Tests/JdbcClient_drop_tables.sql
@@ -0,0 +1,28 @@
+DROP View subject_stats;
+DROP View predicate_stats;
+DROP View object_stats;
+
+DROP INDEX allnewtriples_subject_idx;
+DROP INDEX allnewtriples_predicate_idx;
+DROP INDEX allnewtriples_object_idx;
+
+DROP TABLE allnewtriples CASCADE;
+
+DROP TABLE "foreign" CASCADE;
+
+DROP INDEX "triples_object_idx";
+DROP INDEX "triples_predicate_idx";
+DROP INDEX "triples_predicate_object_idx";
+DROP INDEX "triples_subject_idx";
+DROP INDEX "triples_subject_object_idx";
+DROP INDEX "triples_subject_predicate_idx";
+
+DROP TABLE "triples" CASCADE;
+
+DROP TABLE mt;
+DROP TABLE remt;
+DROP TABLE replt;
+DROP TABLE strt;
+
+DROP TABLE gtmpt;
+
diff --git a/sql/jdbc/tests/JdbcClient_inserts_selects.sql
b/sql/jdbc/tests/Tests/JdbcClient_inserts_selects.sql
rename from sql/jdbc/tests/JdbcClient_inserts_selects.sql
rename to sql/jdbc/tests/Tests/JdbcClient_inserts_selects.sql
diff --git a/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.bat
b/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.bat
--- a/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.bat
+++ b/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.bat
@@ -6,10 +6,11 @@ echo password=monetdb>> .monetdb
prompt # $t $g
echo on
-java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d "%TSTDB%" -f
"%TSTSRCBASE%\%TSTDIR%\JdbcClient_create_tables.sql"
+java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d "%TSTDB%"
--help
-java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d "%TSTDB%" -f
"%TSTSRCBASE%\%TSTDIR%\JdbcClient_inserts_selects.sql"
-
+java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d "%TSTDB%" -f
"%TSTSRCBASE%\%TSTDIR%\Tests\JdbcClient_create_tables.sql"
+java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d "%TSTDB%" -f
"%TSTSRCBASE%\%TSTDIR%\Tests\JdbcClient_inserts_selects.sql"
java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d "%TSTDB%" -D
+java nl.cwi.monetdb.client.JdbcClient -h %HOST% -p %MAPIPORT% -d "%TSTDB%" -f
"%TSTSRCBASE%\%TSTDIR%\Tests\JdbcClient_drop_tables.sql"
@del .monetdb
diff --git a/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.sh
b/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.sh
--- a/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.sh
+++ b/sql/jdbc/tests/Tests/Test_JdbcClient.SQL.sh
@@ -5,10 +5,11 @@ user=monetdb
password=monetdb
EOF
-Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d $TSTDB
-f $TSTSRCBASE/$TSTDIR/JdbcClient_create_tables.sql"
+Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d $TSTDB
--help"
-Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d $TSTDB
-f $TSTSRCBASE/$TSTDIR/JdbcClient_inserts_selects.sql"
-
+Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d $TSTDB
-f $TSTSRCBASE/$TSTDIR/Tests/JdbcClient_create_tables.sql"
+Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d $TSTDB
-f $TSTSRCBASE/$TSTDIR/Tests/JdbcClient_inserts_selects.sql"
Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d $TSTDB
-D"
+Mlog -x "java nl.cwi.monetdb.client.JdbcClient -h $HOST -p $MAPIPORT -d $TSTDB
-f $TSTSRCBASE/$TSTDIR/Tests/JdbcClient_drop_tables.sql"
rm -f .monetdb
diff --git a/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
b/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
--- a/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
+++ b/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
@@ -1,26 +1,86 @@
stdout of test 'Test_JdbcClient` in directory 'sql/jdbc/tests` itself:
-# 20:01:23 >
-# 20:01:23 > Mtimeout -timeout 180 Mserver
"--config=/ufs/fabian/scratch/monetdb/current/program-x86_64/etc/MonetDB.conf"
--debug=10 --set
"monet_mod_path=/ufs/fabian/scratch/monetdb/current/program-x86_64/lib/MonetDB:/ufs/fabian/scratch/monetdb/current/program-x86_64/lib/bin"
--set
"gdk_dbfarm=/ufs/fabian/scratch/monetdb/current/program-x86_64/var/MonetDB/dbfarm"
--set
"sql_logdir=/ufs/fabian/scratch/monetdb/current/program-x86_64/var/MonetDB/log"
--set mapi_port=34230 --set sql_port=47764 --set xquery_port=59693 --set
monet_prompt= --trace "--dbname=mTests_src_jdbc_tests"
--dbinit="module(sql_server); sql_server_start();" ; echo ; echo Over..
-# 20:01:23 >
+# 18:15:39 >
+# 18:15:39 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=31817" "--set"
"mapi_usock=/var/tmp/mtest-15181/.s.monetdb.31817" "--set" "monet_prompt="
"--forcemito"
"--dbpath=/export/scratch1/dinther/INSTALL/var/MonetDB/mTests_sql_jdbc_tests"
"--set" "embedded_c=true"
+# 18:15:39 >
-# Monet Database Server V4.9.3
-# Copyright (c) 1993-2005, CWI. All rights reserved.
-# Compiled for x86_64-redhat-linux-gnu/64bit with 64bit OIDs; dynamically
linked.
-# Visit http://monetdb.cwi.nl/ for further information.
+# MonetDB 5 server v11.33.12 (hg id: d8c48170bbe6+)
+# This is an unreleased version
+# Serving database 'mTests_sql_jdbc_tests', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers
+# Found 31.305 GiB available main-memory.
+# Copyright (c) 1993 - July 2008 CWI.
+# Copyright (c) August 2008 - 2019 MonetDB B.V., all rights reserved
+# Visit https://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://catskill.da.cwi.nl:31817/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-15181/.s.monetdb.31817
+# MonetDB/GIS module loaded
+# SQL catalog created, loading sql scripts once
+# MonetDB/SQL module loaded
+
+
+# 18:15:40 >
+# 18:15:40 > "./Test_JdbcClient.SQL.sh" "Test_JdbcClient"
+# 18:15:40 >
+# 18:15:40 >
+# 18:15:40 > java nl.cwi.monetdb.client.JdbcClient -h catskill -p 31817 -d
mTests_sql_jdbc_tests --help
+# 18:15:40 >
+Usage java -jar jdbcclient.jar
+ [-h host[:port]] [-p port] [-f file] [-u user]
+ [-l language] [-d database] [-e] [-D [table]]
+ [-X<opt>]
+or using long option equivalents --host --port --file --user --language
+--dump --echo --database.
+Arguments may be written directly after the option like -p50000.
+
+If no host and port are given, localhost and 50000 are assumed.
+An .monetdb file may exist in the user's home directory. This file can contain
+preferences to use each time JdbcClient is started. Options given on the
+command line override the preferences file. The .monetdb file syntax is
+<option>=<value> where option is one of the options host, port, file, mode
+debug, or password. Note that the last one is perilous and therefore not
+available as command line option.
+If no input file is given using the -f flag, an interactive session is
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list