Changeset: 2107d4d1f2bc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2107d4d1f2bc
Added Files:
sql/backends/monet5/Tests/cfunction00.stable.err
sql/backends/monet5/Tests/cfunction00.stable.out
sql/test/BugTracker-2017/Tests/case.Bug-6386.sql
sql/test/BugTracker-2017/Tests/case.Bug-6386.stable.err
sql/test/BugTracker-2017/Tests/case.Bug-6386.stable.out
sql/test/BugTracker-2017/Tests/exists.Bug-6392.sql
sql/test/BugTracker-2017/Tests/exists.Bug-6392.stable.err
sql/test/BugTracker-2017/Tests/exists.Bug-6392.stable.out
sql/test/BugTracker-2017/Tests/sqllitelogistest_case.Bug-6335.sql
sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.err.int128
Removed Files:
geom/sql/conformance/Tests/T3.stable.out.int128
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
gdk/gdk_aggr.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_group.c
gdk/gdk_hash.h
gdk/gdk_utils.c
geom/sql/40_geom.sql
geom/sql/conformance/Tests/T3.stable.out
monetdb5/ChangeLog
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err.Windows
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_listing.c
monetdb5/modules/kernel/group.c
monetdb5/modules/kernel/group.h
monetdb5/modules/kernel/group.mal
monetdb5/modules/mal/Tests/remote04.malC
monetdb5/modules/mal/Tests/remote04.stable.out
monetdb5/modules/mal/Tests/remote12.malC
monetdb5/modules/mal/Tests/remote12.stable.err
monetdb5/modules/mal/Tests/remote12.stable.out
monetdb5/modules/mal/Tests/remote13.malC
monetdb5/modules/mal/remote.c
monetdb5/optimizer/Tests/GCexample01.stable.out
monetdb5/optimizer/Tests/dataflow.stable.out
monetdb5/optimizer/Tests/tst4006.stable.out
monetdb5/optimizer/opt_deadcode.c
monetdb5/optimizer/opt_pipes.c
sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
sql/backends/monet5/prog.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_rank.mal
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_upgrades.c
sql/common/sql_list.c
sql/common/sql_string.c
sql/jdbc/tests/Tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.stable.err
sql/jdbc/tests/Tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.stable.out
sql/scripts/25_debug.sql
sql/scripts/51_sys_schema_extension.sql
sql/server/rel_optimizer.c
sql/server/rel_psm.c
sql/server/rel_rel.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_sequence.c
sql/server/rel_trans.c
sql/server/rel_updates.c
sql/server/sql_atom.c
sql/server/sql_mvc.c
sql/server/sql_parser.y
sql/server/sql_qc.c
sql/server/sql_scan.c
sql/server/sql_semantic.c
sql/storage/bat/res_table.c
sql/test/BugTracker-2009/Tests/bit_and.SF-2850341.stable.err
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
sql/test/BugTracker-2012/Tests/large-number-operation-strange-results.Bug-2929.stable.err
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.err
sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.out
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
sql/test/BugTracker-2014/Tests/round.Bug-3542.stable.err
sql/test/BugTracker-2015/Tests/large_join.Bug-3809.sql
sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err
sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
sql/test/BugTracker-2016/Tests/storagemodel.stable.out
sql/test/BugTracker-2017/Tests/All
sql/test/BugTracker-2017/Tests/create_table_as-missing_not_null.Bug-6329.stable.out
sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.err
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/BugTracker/Tests/limits_of_decimal.SF-1685357.stable.err
sql/test/Tests/coalesce.stable.out
sql/test/Tests/systemfunctions.stable.out
sql/test/Tests/systemfunctions.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.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.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out.int128
sql/test/leaks/Tests/select1.stable.out.int128
sql/test/leaks/Tests/select2.stable.out.int128
sql/test/leaks/Tests/temp1.stable.out.int128
sql/test/mergetables/Tests/mergequery.stable.out
sql/test/pg_regress/Tests/float8.stable.err
sql/test/pg_regress/Tests/int8.stable.err
sql/test/pg_regress/Tests/int8.stable.out
sql/test/pg_regress/Tests/interval.stable.err
sql/test/pg_regress/Tests/interval.stable.out
sql/test/pg_regress/Tests/numeric_big.stable.err
sql/test/pg_regress/Tests/oid.stable.err
sql/test/pg_regress/Tests/strings.stable.err
sql/test/remote/Tests/partition_elim.stable.out
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.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.int128
tools/mserver/mserver5.1.in
Branch: trails
Log Message:
Merged with default
diffs (truncated from 19142 to 300 lines):
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
@@ -95,7 +95,7 @@ Ready.
[ "aggr", "covar", "function aggr.covar(e1:bat[:sht],
e2:bat[:sht]):sht;", "", "" ]
[ "aggr", "exist", "command aggr.exist(b:bat[:any_2], h:any_1):bit
", "ALGexist;", "" ]
[ "aggr", "exist", "command aggr.exist(b:bat[:any_2]):bit ",
"SQLexist;", "" ]
-[ "aggr", "exist", "command aggr.exist(v:any_2):bit ",
"SQLexist_val;", "" ]
+[ "aggr", "exist", "pattern aggr.exist(v:any_2):bit ",
"SQLexist_val;", "" ]
[ "aggr", "jsonaggr", "command aggr.jsonaggr(val:bat[:dbl]):str ",
"JSONgroupStr;", "Aggregate the double values to array." ]
[ "aggr", "jsonaggr", "command aggr.jsonaggr(val:bat[:str]):str ",
"JSONgroupStr;", "Aggregate the string values to array." ]
[ "aggr", "max", "command aggr.max(b:bat[:any_1], g:bat[:oid],
e:bat[:any_2]):bat[:any_1] ", "AGGRmax3;", "" ]
@@ -7724,17 +7724,29 @@ Ready.
[ "geom", "setSRID", "command geom.setSRID(w:wkb, srid:int):wkb ",
"wkbSetSRID;", "Sets the Reference System ID for this Geometry." ]
[ "group", "group", "command group.group(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ", "GRPgroup1;", ""
]
[ "group", "group", "command group.group(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPgroup2;", "" ]
+[ "group", "group", "command group.group(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup3;", "" ]
+[ "group", "group", "command group.group(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup4;", ""
]
[ "group", "groupdone", "command group.groupdone(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ", "GRPgroup1;",
"" ]
[ "group", "groupdone", "command group.groupdone(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPgroup2;", "" ]
+[ "group", "groupdone", "command group.groupdone(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup3;", "" ]
+[ "group", "groupdone", "command group.groupdone(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup4;", ""
]
[ "group", "multicolumn", "pattern group.multicolumn(b:bat[:any]...)
(ref:bat[:oid], grp:bat[:oid], hist:bat[:any]) ", "GROUPmulticolumngroup;",
"Derivation of a group index over multiple columns." ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPsubgroup2;", "" ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup3;", "" ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup4;", "" ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid], histo:bat[:lng]) ", "GRPsubgroup5;", "" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPsubgroup6;",
"" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup7;", "" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup8;", "" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid]) ", "GRPsubgroup9;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPsubgroup2;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup3;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup4;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid], histo:bat[:lng]) ", "GRPsubgroup5;", "" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPsubgroup6;",
"" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup7;", "" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup8;", "" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid]) ", "GRPsubgroup9;", "" ]
[ "identifier", "#fromstr", "command identifier.#fromstr():void ",
"IDfromString;", "Convert a string to an identifier without any check"
]
[ "identifier", "#tostr", "command identifier.#tostr():void ",
"IDtoString;", "Convert identifier to string equivalent" ]
[ "identifier", "identifier", "command
identifier.identifier(s:str):identifier ", "IDentifier;", "Cast a string
to an identifer " ]
@@ -7848,20 +7860,20 @@ Ready.
[ "json", "unfold", "pattern json.unfold(val:json) (o:bat[:oid],
k:bat[:str], v:bat[:json]) ", "JSONunfold;", "Expands the outermost JSON
object into key-value pairs." ]
[ "json", "valuearray", "command json.valuearray(val:json):json ",
"JSONvalueArray;", "Expands the outermost JSON object values into a JSON
value array." ]
[ "json", "values", "command json.values(val:json):bat[:json] ",
"JSONvalueTable;", "Expands the outermost JSON values." ]
-[ "language", "assert", "unsafe command language.assert(v:bit,
term:str):void ", "MALassertBit;", "" ]
-[ "language", "assert", "unsafe command language.assert(v:int,
term:str):void ", "MALassertInt;", "" ]
-[ "language", "assert", "unsafe command language.assert(v:lng,
term:str):void ", "MALassertLng;", "" ]
-[ "language", "assert", "unsafe command language.assert(v:oid,
term:str):void ", "MALassertOid;", "" ]
-[ "language", "assert", "unsafe command language.assert(v:sht,
term:str):void ", "MALassertSht;", "" ]
-[ "language", "assert", "unsafe command language.assert(v:str,
term:str):void ", "MALassertStr;", "" ]
-[ "language", "assert", "unsafe pattern language.assert(v:any_1,
pname:str, oper:str, val:any_2):void ", "MALassertTriple;",
"Assertion test." ]
+[ "language", "assert", "command language.assert(v:bit, term:str):void
", "MALassertBit;", "" ]
+[ "language", "assert", "command language.assert(v:int, term:str):void
", "MALassertInt;", "" ]
+[ "language", "assert", "command language.assert(v:lng, term:str):void
", "MALassertLng;", "" ]
+[ "language", "assert", "command language.assert(v:oid, term:str):void
", "MALassertOid;", "" ]
+[ "language", "assert", "command language.assert(v:sht, term:str):void
", "MALassertSht;", "" ]
+[ "language", "assert", "command language.assert(v:str, term:str):void
", "MALassertStr;", "" ]
+[ "language", "assert", "pattern language.assert(v:any_1, pname:str,
oper:str, val:any_2):void ", "MALassertTriple;", "Assertion test."
]
[ "language", "block", "pattern language.block(v:int, w:any...):int ",
"deblockdataflow;", "Block on availability of all variables w, and then
pass on v" ]
[ "language", "call", "pattern language.call(s:bat[:str]):void ",
"CMDcallBAT;", "Evaluate a program stored in a BAT." ]
[ "language", "call", "pattern language.call(m:str, f:str):void ",
"CMDcallFunction;", "" ]
[ "language", "call", "pattern language.call(s:str):void ",
"CMDcallString;", "Evaluate a MAL string program." ]
[ "language", "dataflow", "pattern language.dataflow():bit ",
"MALstartDataflow;", "The current guarded block is executed using dataflow
control. " ]
[ "language", "pass", "pattern language.pass(v:any_1):void ", "MALpass;",
"Cheap instruction to disgard storage while retaining the dataflow dependency"
]
-[ "language", "raise", "unsafe command language.raise(msg:str):str ",
"CMDraise;", "Raise an exception labeled \n\twith a specific message."
]
+[ "language", "raise", "command language.raise(msg:str):str ",
"CMDraise;", "Raise an exception labeled \n\twith a specific message."
]
[ "language", "register", "pattern language.register(m:str, f:str,
code:str, help:str):void ", "CMDregisterFunction;", "Compile the code string
to MAL and register it as a function." ]
[ "language", "sink", "pattern language.sink(v:any...):void ",
"MALgarbagesink;", "Variables to be considered together when triggering
garbage collection.\nUsed in the dataflow blocks to avoid early release of
values." ]
[ "language", "source", "pattern language.source(f:str):void ",
"CMDevalFile;", "Merge the instructions stored in the file with the current
program." ]
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
@@ -103,7 +103,7 @@ Ready.
[ "aggr", "covar", "function aggr.covar(e1:bat[:sht],
e2:bat[:sht]):sht;", "", "" ]
[ "aggr", "exist", "command aggr.exist(b:bat[:any_2], h:any_1):bit
", "ALGexist;", "" ]
[ "aggr", "exist", "command aggr.exist(b:bat[:any_2]):bit ",
"SQLexist;", "" ]
-[ "aggr", "exist", "command aggr.exist(v:any_2):bit ",
"SQLexist_val;", "" ]
+[ "aggr", "exist", "pattern aggr.exist(v:any_2):bit ",
"SQLexist_val;", "" ]
[ "aggr", "jsonaggr", "command aggr.jsonaggr(val:bat[:dbl]):str ",
"JSONgroupStr;", "Aggregate the double values to array." ]
[ "aggr", "jsonaggr", "command aggr.jsonaggr(val:bat[:str]):str ",
"JSONgroupStr;", "Aggregate the string values to array." ]
[ "aggr", "max", "command aggr.max(b:bat[:any_1], g:bat[:oid],
e:bat[:any_2]):bat[:any_1] ", "AGGRmax3;", "" ]
@@ -10080,17 +10080,29 @@ Ready.
[ "geom", "setSRID", "command geom.setSRID(w:wkb, srid:int):wkb ",
"wkbSetSRID;", "Sets the Reference System ID for this Geometry." ]
[ "group", "group", "command group.group(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ", "GRPgroup1;", ""
]
[ "group", "group", "command group.group(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPgroup2;", "" ]
+[ "group", "group", "command group.group(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup3;", "" ]
+[ "group", "group", "command group.group(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup4;", ""
]
[ "group", "groupdone", "command group.groupdone(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ", "GRPgroup1;",
"" ]
[ "group", "groupdone", "command group.groupdone(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPgroup2;", "" ]
+[ "group", "groupdone", "command group.groupdone(b:bat[:any_1])
(groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup3;", "" ]
+[ "group", "groupdone", "command group.groupdone(b:bat[:any_1],
s:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPgroup4;", ""
]
[ "group", "multicolumn", "pattern group.multicolumn(b:bat[:any]...)
(ref:bat[:oid], grp:bat[:oid], hist:bat[:any]) ", "GROUPmulticolumngroup;",
"Derivation of a group index over multiple columns." ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPsubgroup2;", "" ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup3;", "" ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup4;", "" ]
[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid], histo:bat[:lng]) ", "GRPsubgroup5;", "" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPsubgroup6;",
"" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup7;", "" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup8;", "" ]
+[ "group", "subgroup", "command group.subgroup(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid]) ", "GRPsubgroup9;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid], histo:bat[:lng]) ",
"GRPsubgroup2;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup3;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid],
histo:bat[:lng]) ", "GRPsubgroup4;", "" ]
[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid], histo:bat[:lng]) ", "GRPsubgroup5;", "" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ", "GRPsubgroup6;",
"" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup7;", "" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid], extents:bat[:oid]) ",
"GRPsubgroup8;", "" ]
+[ "group", "subgroupdone", "command group.subgroupdone(b:bat[:any_1],
s:bat[:oid], g:bat[:oid], e:bat[:oid], h:bat[:lng]) (groups:bat[:oid],
extents:bat[:oid]) ", "GRPsubgroup9;", "" ]
[ "identifier", "#fromstr", "command identifier.#fromstr():void ",
"IDfromString;", "Convert a string to an identifier without any check"
]
[ "identifier", "#tostr", "command identifier.#tostr():void ",
"IDtoString;", "Convert identifier to string equivalent" ]
[ "identifier", "identifier", "command
identifier.identifier(s:str):identifier ", "IDentifier;", "Cast a string
to an identifer " ]
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
@@ -1131,10 +1131,16 @@ str FCTshutdown(Client cntxt, MalBlkPtr
str GROUPmulticolumngroup(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
str GRPgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid);
str GRPgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid);
+str GRPgroup3(bat *ngid, bat *next, const bat *bid);
+str GRPgroup4(bat *ngid, bat *next, const bat *bid, const bat *sid);
str GRPsubgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat
*gid);
str GRPsubgroup3(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat
*sid, const bat *gid);
str GRPsubgroup4(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat
*gid, const bat *eid, const bat *hid);
str GRPsubgroup5(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat
*sid, const bat *gid, const bat *eid, const bat *hid);
+str GRPsubgroup6(bat *ngid, bat *next, const bat *bid, const bat *gid);
+str GRPsubgroup7(bat *ngid, bat *next, const bat *bid, const bat *sid, const
bat *gid);
+str GRPsubgroup8(bat *ngid, bat *next, const bat *bid, const bat *gid, const
bat *eid, const bat *hid);
+str GRPsubgroup9(bat *ngid, bat *next, const bat *bid, const bat *sid, const
bat *gid, const bat *eid, const bat *hid);
str IDentifier(identifier *retval, str *in);
int IDfromString(str src, int *len, identifier *retval);
str IDprelude(void *ret);
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -84,38 +84,46 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
ngrp = 1;
} else if (e == NULL) {
/* we need to find out the min and max of g */
- min = oid_nil; /* note that oid_nil > 0! (unsigned) */
- max = 0;
- if (BATtdense(g)) {
- min = g->tseqbase;
- max = g->tseqbase + BATcount(g) - 1;
- } else if (g->tsorted) {
- gids = (const oid *) Tloc(g, 0);
- /* find first non-nil */
- for (i = 0, ngrp = BATcount(g); i < ngrp; i++, gids++) {
- if (*gids != oid_nil) {
- min = *gids;
- break;
+ PROPrec *prop;
+
+ prop = BATgetprop(g, GDK_MAX_VALUE);
+ if (prop) {
+ min = 0; /* just assume it starts at 0 */
+ max = prop->v.val.oval;
+ } else {
+ min = oid_nil; /* note that oid_nil > 0! (unsigned) */
+ max = 0;
+ if (BATtdense(g)) {
+ min = g->tseqbase;
+ max = g->tseqbase + BATcount(g) - 1;
+ } else if (g->tsorted) {
+ gids = (const oid *) Tloc(g, 0);
+ /* find first non-nil */
+ for (i = 0, ngrp = BATcount(g); i < ngrp; i++,
gids++) {
+ if (*gids != oid_nil) {
+ min = *gids;
+ break;
+ }
}
+ if (min != oid_nil) {
+ /* found a non-nil, max must be last
+ * value (and there is one!) */
+ max = * (const oid *) Tloc(g,
BUNlast(g) - 1);
+ }
+ } else {
+ /* we'll do a complete scan */
+ gids = (const oid *) Tloc(g, 0);
+ for (i = 0, ngrp = BATcount(g); i < ngrp; i++,
gids++) {
+ if (*gids != oid_nil) {
+ if (*gids < min)
+ min = *gids;
+ if (*gids > max)
+ max = *gids;
+ }
+ }
+ /* note: max < min is possible if all groups
+ * are nil (or BATcount(g)==0) */
}
- if (min != oid_nil) {
- /* found a non-nil, max must be last
- * value (and there is one!) */
- max = * (const oid *) Tloc(g, BUNlast(g) - 1);
- }
- } else {
- /* we'll do a complete scan */
- gids = (const oid *) Tloc(g, 0);
- for (i = 0, ngrp = BATcount(g); i < ngrp; i++, gids++) {
- if (*gids != oid_nil) {
- if (*gids < min)
- min = *gids;
- if (*gids > max)
- max = *gids;
- }
- }
- /* note: max < min is possible if all groups
- * are nil (or BATcount(g)==0) */
}
ngrp = max < min ? 0 : max - min + 1;
} else {
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -505,6 +505,8 @@ BATclear(BAT *b, int force)
HASHdestroy(b);
IMPSdestroy(b);
OIDXdestroy(b);
+ PROPdestroy(b->tprops);
+ b->tprops = NULL;
/* we must dispose of all inserted atoms */
if (force && BATatoms[b->ttype].atomDel == NULL) {
@@ -1055,6 +1057,8 @@ BUNappend(BAT *b, const void *t, bit for
IMPSdestroy(b); /* no support for inserts in imprints yet */
OIDXdestroy(b);
+ PROPdestroy(b->tprops);
+ b->tprops = NULL;
if (b->thash == (Hash *) 1) {
/* don't bother first loading the hash to then change it */
HASHdestroy(b);
@@ -1118,6 +1122,8 @@ BUNdelete(BAT *b, oid o)
IMPSdestroy(b);
OIDXdestroy(b);
HASHdestroy(b);
+ PROPdestroy(b->tprops);
+ b->tprops = NULL;
return GDK_SUCCEED;
}
@@ -1155,6 +1161,8 @@ BUNinplace(BAT *b, BUN p, const void *t,
b->tnil = 0;
}
HASHdestroy(b);
+ PROPdestroy(b->tprops);
+ b->tprops = NULL;
Treplacevalue(b, BUNtloc(bi, p), t);
tt = b->ttype;
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -490,6 +490,8 @@ BATappend(BAT *b, BAT *n, BAT *s, bit fo
IMPSdestroy(b); /* imprints do not support updates yet */
OIDXdestroy(b);
+ PROPdestroy(b->tprops);
+ b->tprops = NULL;
if (b->thash == (Hash *) 1 || BATcount(b) == 0) {
/* don't bother first loading the hash to then change
* it, or updating the hash if we replace the heap */
@@ -749,6 +751,8 @@ BATdel(BAT *b, BAT *d)
/* not sure about these anymore */
b->tnosorted = b->tnorevsorted = 0;
b->tnokey[0] = b->tnokey[1] = 0;
+ PROPdestroy(b->tprops);
+ b->tprops = NULL;
return GDK_SUCCEED;
}
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1594,7 +1594,7 @@ vheap_entry(FILE *fp, Heap *h)
}
static gdk_return
-new_bbpentry(FILE *fp, bat i)
+new_bbpentry(FILE *fp, bat i, const char *prefix)
{
#ifndef NDEBUG
assert(i > 0);
@@ -1610,8 +1610,9 @@ new_bbpentry(FILE *fp, bat i)
}
#endif
- if (fprintf(fp, SSZFMT " %d %s %s %d " BUNFMT " "
- BUNFMT " " OIDFMT, /* BAT info */
+ if (fprintf(fp, "%s" SSZFMT " %d %s %s %d " BUNFMT " "
+ BUNFMT " " OIDFMT, prefix,
+ /* BAT info */
(ssize_t) i,
BBP_status(i) & BBPPERSISTENT,
BBP_logical(i),
@@ -1709,10 +1710,10 @@ BBPdir_subcommit(int cnt, bat *subcommit
bat i = subcommit[j];
/* BBP.dir consists of all persistent bats only */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list