Changeset: a84ca4644f52 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a84ca4644f52
Modified Files:
NT/monetdb_config.h.in
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
clients/mapiclient/dump.c
clients/mapiclient/mhelp.c
clients/mapiclient/msqldump.c
common/utils/mutils.c
gdk/gdk_analytic_bounds.c
gdk/gdk_analytic_func.c
gdk/gdk_posix.c
gdk/gdk_private.h
gdk/gdk_system.c
gdk/gdk_system.h
gdk/gdk_utils.c
geom/monetdb5/geom.c
geom/monetdb5/geom_upgrade.c
monetdb5/mal/mal_builder.c
monetdb5/mal/mal_builder.h
monetdb5/mal/mal_client.c
monetdb5/mal/mal_client.h
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_module.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_runtime.c
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/mtime_analytic.c
monetdb5/modules/mal/Tests/inspect05.stable.out.int128
monetdb5/modules/mal/Tests/mat.malC
monetdb5/modules/mal/Tests/mat.stable.out
monetdb5/modules/mal/clients.c
monetdb5/modules/mal/clients.h
monetdb5/modules/mal/clients.mal
monetdb5/modules/mal/manual.c
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/mat.mal
monetdb5/modules/mal/profiler.c
monetdb5/modules/mal/profiler.mal
monetdb5/modules/mal/tokenizer.c
monetdb5/optimizer/opt_pipes.c
sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.mal
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/sql_upgrades.h
sql/backends/monet5/vaults/fits/fits.c
sql/backends/monet5/vaults/shp/shp.c
sql/scripts/22_clients.sql
sql/scripts/26_sysmon.sql
sql/scripts/99_system.sql
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_psm.c
sql/server/rel_rel.c
sql/server/rel_schema.c
sql/server/rel_updates.c
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/storage/store.c
sql/test/BugConstraints/Tests/check_constraint.SF-1714829.stable.err
sql/test/BugDay_2005-12-19_2.9.3/Tests/default_next_value_for_non_ex_seq.SF.1246631.stable.err
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.sql
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.out
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.sql
sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err
sql/test/BugTracker-2013/Tests/pivot.Bug-3339.stable.err
sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.err
sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.out
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
sql/test/BugTracker-2016/Tests/CREATE_INDEX_breaks_table_queries.Bug-4053.stable.out
sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out
sql/test/BugTracker-2019/Tests/disallow_duplicate_column_aliases.Bug-6723.stable.out
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.stable.out
sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err
sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
sql/test/Tests/comment-dump.stable.out
sql/test/Tests/keys.sql
sql/test/Tests/keys.stable.out
sql/test/Triggers/Tests/trigger_owner.stable.err
sql/test/copy/Tests/nonutf8.stable.err
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/miscellaneous/Tests/All
sql/test/pg_regress/Tests/alter_table.stable.err
sql/test/pg_regress/Tests/alter_table.stable.out
sql/test/remote/Tests/partition_elim.stable.out
sql/test/subquery/Tests/correlated.stable.err
sql/test/sys-schema/Tests/systemfunctions.stable.out
sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
testing/Mtest.py.in
testing/malcheck.py
tools/merovingian/daemon/merovingian.c
Branch: tracer
Log Message:
Merge with default
diffs (truncated from 8517 to 300 lines):
diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -508,9 +508,6 @@
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
-/* Define to 1 if you have the <sys/sysctl.h> header file. */
-/* #undef HAVE_SYS_SYSCTL_H */
-
/* Define to 1 if you have the <sys/times.h> header file. */
/* #undef HAVE_SYS_TIMES_H */
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -660,6 +660,7 @@ stdout of test 'MAL-signatures` in direc
[ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1]):void ",
"OIDXcreate;", "Introduces the OID index arrangement of ordered values"
]
[ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1],
pieces:int):void ", "OIDXcreate;", "Introduces the OID index arrangement
of ordered values" ]
[ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1],
l:bat[:any_1]...):void ", "OIDXmerge;", "Consolidates the OID index
arrangement" ]
+[ "bat", "pack", "pattern bat.pack(X_0:any_2...):bat[:any_2] ",
"MATpackValues;", "Materialize the values into a BAT. Avoiding a clash
with mat.pack() in mergetable" ]
[ "bat", "partition", "pattern bat.partition(b:bat[:any_1],
pieces:int, n:int):bat[:any_1] ", "CMDBATpartition2;", "Create the n-th
slice over the BAT broken into several pieces." ]
[ "bat", "partition", "pattern
bat.partition(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;", "Create
a serie of slices over the BAT argument. The BUNs are distributed evenly."
]
[ "bat", "replace", "command bat.replace(b:bat[:any_1],
rid:bat[:oid], val:bat[:any_1]):bat[:any_1] ", "BKCbat_inplace;",
"Perform replace for all BUNs of the second BAT into the first." ]
@@ -11543,9 +11544,11 @@ stdout of test 'MAL-signatures` in direc
[ "profiler", "getSystemTime", "command profiler.getSystemTime():lng
", "CMDgetSystemTime;", "Obtain the user timing information." ]
[ "profiler", "getTrace", "pattern profiler.getTrace(e:str):bat[:any_1]
", "CMDgetTrace;", "Get the trace details of a specific event" ]
[ "profiler", "getUserTime", "command profiler.getUserTime():lng ",
"CMDgetUserTime;", "Obtain the user timing information." ]
+[ "profiler", "getlimit", "command profiler.getlimit():int ",
"CMDgetprofilerlimit;", "Set profiler limit" ]
[ "profiler", "noop", "command profiler.noop():void ",
"CMDnoopProfiler;", "Fetch any pending performance events" ]
[ "profiler", "openstream", "pattern profiler.openstream():void ",
"CMDopenProfilerStream;", "Start profiling the events, send to output
stream" ]
[ "profiler", "setheartbeat", "command profiler.setheartbeat(b:int):void ",
"CMDsetHeartbeat;", "Set heart beat performance tracing" ]
+[ "profiler", "setlimit", "command profiler.setlimit(l:int):void ",
"CMDsetprofilerlimit;", "Get profiler limit" ]
[ "profiler", "start", "pattern profiler.start():void ",
"CMDstartProfiler;", "Start offline performance profiling" ]
[ "profiler", "starttrace", "pattern profiler.starttrace():void ",
"CMDstartTrace;", "Start collecting trace information" ]
[ "profiler", "stop", "pattern profiler.stop():void ",
"CMDstopProfiler;", "Stop offline performance profiling" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -766,6 +766,7 @@ stdout of test 'MAL-signatures` in direc
[ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1]):void ",
"OIDXcreate;", "Introduces the OID index arrangement of ordered values"
]
[ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1],
pieces:int):void ", "OIDXcreate;", "Introduces the OID index arrangement
of ordered values" ]
[ "bat", "orderidx", "pattern bat.orderidx(bv:bat[:any_1],
l:bat[:any_1]...):void ", "OIDXmerge;", "Consolidates the OID index
arrangement" ]
+[ "bat", "pack", "pattern bat.pack(X_0:any_2...):bat[:any_2] ",
"MATpackValues;", "Materialize the values into a BAT. Avoiding a clash
with mat.pack() in mergetable" ]
[ "bat", "partition", "pattern bat.partition(b:bat[:any_1],
pieces:int, n:int):bat[:any_1] ", "CMDBATpartition2;", "Create the n-th
slice over the BAT broken into several pieces." ]
[ "bat", "partition", "pattern
bat.partition(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;", "Create
a serie of slices over the BAT argument. The BUNs are distributed evenly."
]
[ "bat", "replace", "command bat.replace(b:bat[:any_1],
rid:bat[:oid], val:bat[:any_1]):bat[:any_1] ", "BKCbat_inplace;",
"Perform replace for all BUNs of the second BAT into the first." ]
@@ -15947,9 +15948,11 @@ stdout of test 'MAL-signatures` in direc
[ "profiler", "getSystemTime", "command profiler.getSystemTime():lng
", "CMDgetSystemTime;", "Obtain the user timing information." ]
[ "profiler", "getTrace", "pattern profiler.getTrace(e:str):bat[:any_1]
", "CMDgetTrace;", "Get the trace details of a specific event" ]
[ "profiler", "getUserTime", "command profiler.getUserTime():lng ",
"CMDgetUserTime;", "Obtain the user timing information." ]
+[ "profiler", "getlimit", "command profiler.getlimit():int ",
"CMDgetprofilerlimit;", "Set profiler limit" ]
[ "profiler", "noop", "command profiler.noop():void ",
"CMDnoopProfiler;", "Fetch any pending performance events" ]
[ "profiler", "openstream", "pattern profiler.openstream():void ",
"CMDopenProfilerStream;", "Start profiling the events, send to output
stream" ]
[ "profiler", "setheartbeat", "command profiler.setheartbeat(b:int):void ",
"CMDsetHeartbeat;", "Set heart beat performance tracing" ]
+[ "profiler", "setlimit", "command profiler.setlimit(l:int):void ",
"CMDsetprofilerlimit;", "Get profiler limit" ]
[ "profiler", "start", "pattern profiler.start():void ",
"CMDstartProfiler;", "Start offline performance profiling" ]
[ "profiler", "starttrace", "pattern profiler.starttrace():void ",
"CMDstartTrace;", "Start collecting trace information" ]
[ "profiler", "stop", "pattern profiler.stop():void ",
"CMDstopProfiler;", "Stop offline performance profiling" ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2418,6 +2418,7 @@ InstrPtr newFcnCall(MalBlkPtr mb, char *
Symbol newFunction(str mod, str nme, int kind);
MalStkPtr newGlobalStack(int size);
InstrPtr newInstruction(MalBlkPtr mb, str modnme, str fcnnme);
+InstrPtr newInstructionArgs(MalBlkPtr mb, str modnme, str fcnnme, int args);
MalBlkPtr newMalBlk(int elements);
int newMalBlkStmt(MalBlkPtr mb, int elements);
Plant newPlant(MalBlkPtr mb);
@@ -2425,6 +2426,7 @@ InstrPtr newRaiseStmt(MalBlkPtr mb, str
str newRef;
InstrPtr newReturnStmt(MalBlkPtr mb);
InstrPtr newStmt(MalBlkPtr mb, const char *module, const char *name);
+InstrPtr newStmtArgs(MalBlkPtr mb, const char *module, const char *name, int
args);
Symbol newSymbol(str nme, int kind);
int newTmpVariable(MalBlkPtr mb, malType type);
int newTypeVariable(MalBlkPtr mb, malType type);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -2575,8 +2575,7 @@ dump_database(Mapi mid, stream *toConsol
goto bailout;
/* start a transaction for the dump */
- if (!describe)
- mnstr_printf(toConsole, "%s;\n", start_trx);
+ mnstr_printf(toConsole, "%s;\n", start_trx);
if ((hdl = mapi_query(mid, start_trx)) == NULL || mapi_error(mid))
goto bailout;
@@ -3095,8 +3094,7 @@ dump_database(Mapi mid, stream *toConsol
mapi_close_handle(hdl);
/* finally commit the whole transaction */
- if (!describe)
- mnstr_printf(toConsole, "COMMIT;\n");
+ mnstr_printf(toConsole, "COMMIT;\n");
if (sname)
free(sname);
if (query)
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -87,7 +87,7 @@ SQLhelp sqlhelp1[] = {
{"ANALYZE",
"Collect column/table/schema data statistics for analysis and
optimizer usage",
"ANALYZE ident [ . ident [ column_list ] ] [SAMPLE size] [MINMAX]",
- "column_list",
+ "ident,column_list",
"See also
https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/statistics"},
{"CALL",
"",
@@ -163,10 +163,10 @@ SQLhelp sqlhelp1[] = {
"qname,param,data_type,function_return,statement,ident,language_keyword,external_code",
"See also
https://www.monetdb.org/Documentation/Manuals/SQLreference/Functions"},
{"CREATE INDEX",
- "",
+ "Create a hint for a secondary index on a column or set of columns of
a table",
"CREATE [ UNIQUE | ORDERED | IMPRINTS ] INDEX ident ON qname '('
ident_list ')'",
NULL,
- NULL},
+ "See also
https://www.monetdb.org/Documentation/Manuals/SQLreference/Indices"},
{"CREATE PROCEDURE",
"Create a user-defined procedure",
"CREATE [ OR REPLACE ] PROCEDURE qname '(' { '*' | [ param [',' ...]]
} ')'\n"
@@ -203,12 +203,12 @@ SQLhelp sqlhelp1[] = {
"ident",
"See also https://www.monetdb.org/Documentation/SQLreference/Roles"},
{"CREATE SCHEMA",
- "",
+ "Create a new schema",
"CREATE SCHEMA [ IF NOT EXISTS ] schema_name [default_char_set]
[path_spec] [schema_element]",
"schema_name,default_char_set,path_spec,schema_element",
"See also https://www.monetdb.org/Documentation/SQLreference/Schema"},
{"CREATE SEQUENCE",
- "Define a new sequence generator",
+ "Define a new integer number sequence generator",
"CREATE SEQUENCE ident [ AS data_type] [ START [WITH start]]
[INCREMENT BY increment]\n"
"[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NO MAXVALUE]
[CACHE cachevalue] [[NO] CYCLE]",
"ident,data_type",
@@ -219,17 +219,18 @@ SQLhelp sqlhelp1[] = {
"table_source",
NULL},
{"CREATE TABLE",
- "",
+ "Create a new table",
"CREATE TABLE [ IF NOT EXISTS ] qname table_source [STORAGE ident
string]\n"
"CREATE TABLE [ IF NOT EXISTS ] qname FROM LOADER function_ref\n"
"CREATE [ LOCAL | GLOBAL ] { TEMPORARY | TEMP } TABLE [ IF NOT EXISTS
] qname table_source [on_commit]",
"table_source,on_commit,function_ref",
"See also
https://www.monetdb.org/Documentation/Manuals/SQLreference/Tables"},
{"CREATE TRIGGER",
- "",
- "CREATE [ OR REPLACE ] TRIGGER qname { BEFORE | AFTER } { INSERT |
DELETE | TRUNCATE ...\n"
- " | UPDATE [ OF ident [',' ident]] } ON qname REFERENCING
trigger_reference... triggered_action",
- "qname,trigger_reference,triggered_action",
+ "Define a triggered action for a table data update event",
+ "CREATE [ OR REPLACE ] TRIGGER qname { BEFORE | AFTER }\n"
+ " { INSERT | DELETE | TRUNCATE | UPDATE [ OF ident_list ] }\n"
+ " ON qname [ REFERENCING trigger_reference [...] ] triggered_action",
+ "qname,ident_list,trigger_reference,triggered_action",
"See also
https://www.monetdb.org/Documentation/SQLreference/Triggers"},
{"CREATE TYPE",
"Add user defined type to the type system ",
@@ -237,12 +238,12 @@ SQLhelp sqlhelp1[] = {
NULL,
NULL},
{"CREATE USER",
- "Create a new user",
+ "Create a new database user",
"CREATE USER ident WITH [ENCRYPTED | UNENCRYPTED] PASSWORD string NAME
string SCHEMA ident",
"ident",
"See also https://www.monetdb.org/Documentation/SQLreference/Users"},
{"CREATE VIEW",
- "",
+ "Create a new view",
"CREATE [ OR REPLACE ] VIEW qname [ column_list ] AS {
query_expression | '(' query_expression ')' }\n"
"[ WITH CHECK OPTION ]",
"qname,column_list,query_expression",
@@ -850,7 +851,7 @@ SQLhelp sqlhelp2[] = {
NULL},
{"trigger_reference",
NULL,
- "OLD [ROW] [AS] ident | NEW [ROW] [AS] ident",
+ "{ OLD | NEW } { [ROW] | TABLE } [AS] ident",
NULL,
NULL},
{"update_statement",
@@ -860,8 +861,9 @@ SQLhelp sqlhelp2[] = {
NULL},
{"triggered_action",
NULL,
- "[ FOR EACH { ROW | STATEMENT } ] [ WHEN '(' search_condition ')'\n"
- " BEGIN ATOMIC trigger_statement ... END ",
+ "[ FOR [EACH] { ROW | STATEMENT } ]\n"
+ "[ WHEN '(' search_condition ')' ]\n"
+ "{ trigger_statement | BEGIN ATOMIC trigger_statement [ ; ... ] END }",
"trigger_statement,search_condition",
NULL},
{"trigger_statement",
diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c
--- a/clients/mapiclient/msqldump.c
+++ b/clients/mapiclient/msqldump.c
@@ -226,11 +226,15 @@ main(int argc, char **argv)
dump_version(mid, out, "-- server:");
mnstr_printf(out, "-- %s\n", buf);
}
- if (functions)
+ if (functions) {
+ mnstr_printf(out, "START TRANSACTION;\n");
c = dump_functions(mid, out, true, NULL, NULL, NULL);
- else if (table)
+ mnstr_printf(out, "COMMIT;\n");
+ } else if (table) {
+ mnstr_printf(out, "START TRANSACTION;\n");
c = dump_table(mid, NULL, table, out, describe, true,
useinserts, false);
- else
+ mnstr_printf(out, "COMMIT;\n");
+ } else
c = dump_database(mid, out, describe, useinserts);
mnstr_flush(out);
diff --git a/common/utils/mutils.c b/common/utils/mutils.c
--- a/common/utils/mutils.c
+++ b/common/utils/mutils.c
@@ -25,10 +25,10 @@
#include <limits.h> /* PATH_MAX on Solaris */
#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h> /* realpath on OSX, prerequisite of sys/sysctl on
OpenBSD */
+# include <sys/param.h> /* realpath on OSX */
#endif
-#ifdef HAVE_SYS_SYSCTL_H
+#ifdef BSD /* BSD macro is defined in sys/param.h */
# include <sys/sysctl.h> /* KERN_PROC_PATHNAME on BSD */
#endif
@@ -454,7 +454,7 @@ get_bin_path(void)
if (_NSGetExecutablePath(buf, &size) == 0 &&
realpath(buf, _bin_path) != NULL)
return _bin_path;
-#elif defined(HAVE_SYS_SYSCTL_H) && defined(KERN_PROC_PATHNAME) /* BSD */
+#elif defined(BSD) && defined(KERN_PROC_PATHNAME) /* BSD */
int mib[4];
size_t cb = sizeof(_bin_path);
mib[0] = CTL_KERN;
diff --git a/gdk/gdk_analytic_bounds.c b/gdk/gdk_analytic_bounds.c
--- a/gdk/gdk_analytic_bounds.c
+++ b/gdk/gdk_analytic_bounds.c
@@ -39,76 +39,144 @@
lng m = k - 1; \
TPE1 v, calc; \
TPE2 rlimit; \
- for (; k < i; k++, rb++) { \
- rlimit = (TPE2) LIMIT; \
- v = bp[k]; \
- if (is_##TPE1##_nil(v)) { \
+ if (b->tnonil) { \
+ for (; k < i; k++, rb++) { \
+ rlimit = (TPE2) LIMIT; \
+ v = bp[k]; \
for (j = k; ; j--) { \
if (j == m) \
break; \
- if (!is_##TPE1##_nil(bp[j])) \
- break; \
- } \
- } else { \
- for (j = k; ; j--) { \
- if (j == m) \
- break; \
- if (is_##TPE1##_nil(bp[j])) \
- break; \
SUB_WITH_CHECK(v, bp[j], TPE1, calc,
GDK_##TPE1##_max, goto calc_overflow); \
if ((TPE2)(ABSOLUTE(calc)) > rlimit) \
break; \
} \
- } \
- j++; \
- *rb = j; \
- } \
+ j++;
\
+ *rb = j;
\
+ }
\
+ } else { \
+ for (; k < i; k++, rb++) {
\
+ rlimit = (TPE2) LIMIT;
\
+ v = bp[k];
\
+ if (is_##TPE1##_nil(v)) {
\
+ for (j = k; ; j--) {
\
+ if (j == m)
\
+ break;
\
+ if (!is_##TPE1##_nil(bp[j]))
\
+ break;
\
+ }
\
+ } else {
\
+ for (j = k; ; j--) {
\
+ if (j == m)
\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list