Changeset: 42d504ae0151 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=42d504ae0151
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
        sql/test/subquery/Tests/subquery.sql
Branch: candidate-exceptions
Log Message:

Merge with default branch.


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

Reply via email to