Changeset: fe8f5cb667c0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fe8f5cb667c0
Added Files:
        gdk/gdk_cand.h
        sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.sql
        sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.stable.err
        sql/test/BugTracker-2014/Tests/div_by_zero_in_return.Bug-3555.stable.out
        sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.sql
        sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.err
        sql/test/BugTracker-2014/Tests/orderby_on_constant.Bug-3554.stable.out
        sql/test/BugTracker-2014/Tests/subselect-reverse.Bug-3552.sql
        sql/test/BugTracker-2014/Tests/subselect-reverse.Bug-3552.stable.err
        sql/test/BugTracker-2014/Tests/subselect-reverse.Bug-3552.stable.out
Modified Files:
        clients/Tests/MAL-signatures_all.stable.out
        clients/Tests/MAL-signatures_all.stable.out.int128
        clients/Tests/MAL-signatures_fits_geom.stable.out
        clients/Tests/MAL-signatures_fits_geom.stable.out.int128
        clients/Tests/MAL-signatures_geom.stable.out
        clients/Tests/MAL-signatures_geom.stable.out.int128
        clients/Tests/MAL-signatures_none.stable.out
        clients/Tests/MAL-signatures_none.stable.out.int128
        clients/Tests/SQL-dump_all.stable.out
        clients/Tests/SQL-dump_all.stable.out.int128
        clients/Tests/SQL-dump_all.stable.out.oid32
        clients/Tests/SQL-dump_all.stable.out.oid32.int128
        clients/Tests/SQL-dump_geom.stable.out
        clients/Tests/SQL-dump_geom.stable.out.32bit
        clients/Tests/SQL-dump_geom.stable.out.64bit.oid32
        clients/Tests/SQL-dump_geom.stable.out.int128
        clients/Tests/SQL-dump_geom.stable.out.oid32.int128
        clients/Tests/SQL-dump_none.stable.out
        clients/Tests/SQL-dump_none.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/mclient.c
        gdk/Makefile.ag
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_align.c
        gdk/gdk_atoms.c
        gdk/gdk_batop.c
        gdk/gdk_calc.c
        gdk/gdk_calc_private.h
        gdk/gdk_join.c
        gdk/gdk_private.h
        gdk/gdk_search.c
        gdk/gdk_select.c
        gdk/gdk_select_legacy.c
        gdk/gdk_ssort.c
        gdk/gdk_ssort_impl.h
        monetdb5/ChangeLog.Oct2014
        monetdb5/mal/Tests/All
        monetdb5/mal/Tests/tst866.stable.out
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/algebra.h
        monetdb5/modules/kernel/algebra.mal
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/pcre.mal
        monetdb5/modules/mal/tokenizer.c
        monetdb5/optimizer/opt_centipede.c
        monetdb5/optimizer/opt_costModel.c
        monetdb5/optimizer/opt_emptySet.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_pushranges.c
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/bam/Tests/query1.5.sql
        sql/backends/monet5/bam/Tests/query1.5.stable.out
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_round.c
        sql/backends/monet5/sql_round_impl.h
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/backends/monet5/sql_statistics.c
        sql/server/rel_dump.c
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/test/BugTracker-2014/Tests/All
        sql/test/Dump/Tests/dump.stable.out.Windows
        sql/test/pg_regress/Tests/int2.stable.err
        sql/test/pg_regress/Tests/int2.stable.out
        sql/test/pg_regress/Tests/int4.stable.err
        sql/test/pg_regress/Tests/int4.stable.out
        sql/test/pg_regress/Tests/int8.stable.err
        sql/test/pg_regress/Tests/int8.stable.out
        sql/test/pg_regress/Tests/numeric.sql
        sql/test/pg_regress/Tests/numeric_big.sql
        sql/test/pg_regress/Tests/sanity_check.sql
        sql/test/pg_regress/Tests/vacuum.sql
        sql/test/pg_regress/Tests/vacuum.stable.err
        sql/test/pg_regress/Tests/vacuum.stable.out
        sql/test/pg_regress/Tests/without_oid.sql
        sql/test/pg_regress/postgresql2sql99.sh
        sql/test/testdb/Tests/testdb-dump.stable.out.Windows
Branch: transaction-replication
Log Message:

Merge with default branch.


diffs (truncated from 8718 to 300 lines):

diff --git a/clients/Tests/MAL-signatures_all.stable.out 
b/clients/Tests/MAL-signatures_all.stable.out
--- a/clients/Tests/MAL-signatures_all.stable.out
+++ b/clients/Tests/MAL-signatures_all.stable.out
@@ -208,10 +208,6 @@ comment Return the current size (in numb
 
 command aggr.exist(b:bat[:oid,:any_2],h:any_1):bit 
 address ALGexist;
-command aggr.histogram(b:bat[:any_1,:any_2]):bat[:any_2,:int] 
-address ALGhistogram;
-comment Produce a BAT containing the histogram over the tail values.
-
 command aggr.jsonaggr(val:bat[:oid,:dbl]):str 
 address JSONgroupStr;
 comment Aggregate the double values to array.
@@ -2266,14 +2262,6 @@ command algebra.antijoin(left:bat[:oid,:
 address ALGantijoin2;
 comment Returns 2 columns with all BUNs, consisting of the head-oids     from 
'left' and 'right' for which there are BUNs in 'left'      and 'right' with 
equal tails
 
-command 
algebra.antiuselect(b:bat[:any_1,:any_2],low:any_2,high:any_2,li:bit,hi:bit):bat[:any_1,:void]
 
-address ALGantiuselectInclusive;
-comment See select() but limited to head values
-
-command 
algebra.antiuselect(b:bat[:any_1,:any_2],value:any_2):bat[:any_1,:void] 
-address ALGantiuselect1;
-comment Value select, but returning only the   head values. SEE 
ALSO:select(bat,val)
-
 command 
algebra.bandjoin(outer:bat[:any_1,:any_2],inner:bat[:any_2,:any_3],minus:any_2,plus:any_2,li:bit,hi:bit):bat[:any_1,:any_3]
 
 address ALGbandjoin;
 comment This is a join() for which the predicate is that two BUNs match        
        if the left-tail value is within the range [right-head - minus,         
right-head + plus], depending on (l_in/h_in), the bounds                are 
included. Works only for the builtin numerical types,               and their 
derivates.
@@ -2342,8 +2330,12 @@ command algebra.groupby(gids:bat[:oid,:o
 address ALGgroupby;
 comment Produces a new BAT with groups identified by the head column. The 
result contains tail times the head value, ie the tail contains the result 
group sizes.
 
+command 
algebra.ilikesubjoin(l:bat[:oid,:str],r:bat[:oid,:str],sl:bat[:oid,:oid],sr:bat[:oid,:oid],esc:str)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+address ILIKEsubjoin;
+comment Join the string bat L with the pattern bat Rwith optional candidate 
lists SL and SR using pattern escape string ESCand doing a case insensitive 
match.The result is two aligned bats with oids of matching rows.
+
 command algebra.ilikesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
-address PCREilike_join_pcr5;
+address PCREilike_join_pcre;
 function 
algebra.ilikesubselect(b:bat[:oid,:str],cand:bat[:oid,:oid],pat:str,esc:str,anti:bit):bat[:oid,:oid];
 function 
algebra.ilikesubselect(b:bat[:oid,:str],pat:str,esc:str,anti:bit):bat[:oid,:oid];
 command 
algebra.indexjoin(left:bat[:any_1,:any_2],right:bat[:any_2,:any_3]):bat[:any_1,:any_3]
 
@@ -2394,6 +2386,10 @@ pattern algebra.leftjoinPath(l:bat[:any,
 address ALGjoinPath;
 comment Routine to handle join paths.  The type analysis is rather tricky.
 
+command 
algebra.likesubjoin(l:bat[:oid,:str],r:bat[:oid,:str],sl:bat[:oid,:oid],sr:bat[:oid,:oid],esc:str)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+address LIKEsubjoin;
+comment Join the string bat L with the pattern bat Rwith optional candidate 
lists SL and SR using pattern escape string ESCand doing a case sensitive 
match.The result is two aligned bats with oids of matching rows.
+
 command algebra.likesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
 address PCRElike_join_pcre;
 function 
algebra.likesubselect(b:bat[:oid,:str],cand:bat[:oid,:oid],pat:str,esc:str,anti:bit):bat[:oid,:oid];
@@ -2667,14 +2663,6 @@ command algebra.tunique(b:bat[:any_1,:an
 address ALGtunique;
 comment Select unique tuples from the input BAT. Double elimination is         
done over the BUNs tail. The result is a BAT with property              
tkeyd()== true
 
-command 
algebra.thetauselect(b:bat[:any_1,:any_2],val:any_2,op:str):bat[:any_1,:void] 
-address ALGthetauselect;
-comment The theta (<=,<,=,>,>=) select() limited to head values
-
-command algebra.topN(b:bat[:any_1,:any_2],top:lng):bat[:any_1,:any_2] 
-address ALGtopN;
-comment Trim all but the top N tuples.
-
 command 
algebra.thetasubselect(b:bat[:oid,:any_1],s:bat[:oid,:oid],val:any_1,op:str):bat[:oid,:oid]
 
 address ALGthetasubselect2;
 comment Select all head values of the first input BAT for which the tail value 
obeys the relation value OP VAL and for which the head value occurs in  the 
tail of the second input BAT.       Input is a dense-headed BAT, output is a 
dense-headed BAT with in       the tail the head value of the input BAT for 
which the  relationship holds.  The output BAT is sorted on the tail value.
@@ -40893,14 +40881,10 @@ command pcre.imatch(s:str,pat:str):bit
 address PCREimatch;
 comment Caseless Perl Compatible Regular Expression pattern matching against a 
string
 
-command pcre.ilikesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
-address PCREilike_join_pcre;
 command pcre.index(pat:pcre,s:str):int 
 address PCREindex;
 comment match a pattern, return matched position (or 0 when not found)
 
-command pcre.likesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
-address PCRElike_join_pcre;
 command pcre.match(s:str,pat:str):bit 
 address PCREmatch;
 comment Perl Compatible Regular Expression pattern matching against a string
@@ -40927,10 +40911,6 @@ command pcre.sql2pcre(pat:str,esc:str):s
 address PCREsql2pcre;
 comment Convert a SQL like pattern with the given escape character into a PCRE 
pattern.
 
-command pcre.select(pat:str,strs:bat[:oid,:str]):bat[:oid,:str] 
-address PCREselectDef;
-comment Select tuples based on the pattern
-
 pattern profiler.activate(name:str...):void 
 address CMDactivateProfiler;
 comment A list of counters to be activated.
diff --git a/clients/Tests/MAL-signatures_all.stable.out.int128 
b/clients/Tests/MAL-signatures_all.stable.out.int128
--- a/clients/Tests/MAL-signatures_all.stable.out.int128
+++ b/clients/Tests/MAL-signatures_all.stable.out.int128
@@ -228,9 +228,6 @@ comment Return the current size (in numb
 
 command aggr.exist(b:bat[:oid,:any_2],h:any_1):bit 
 address ALGexist;
-command aggr.histogram(b:bat[:any_1,:any_2]):bat[:any_2,:int] 
-address ALGhistogram;
-comment Produce a BAT containing the histogram over the tail values.
 
 command aggr.jsonaggr(val:bat[:oid,:dbl]):str 
 address JSONgroupStr;
@@ -2782,14 +2779,6 @@ command algebra.antijoin(left:bat[:oid,:
 address ALGantijoin2;
 comment Returns 2 columns with all BUNs, consisting of the head-oids     from 
'left' and 'right' for which there are BUNs in 'left'      and 'right' with 
equal tails
 
-command 
algebra.antiuselect(b:bat[:any_1,:any_2],low:any_2,high:any_2,li:bit,hi:bit):bat[:any_1,:void]
 
-address ALGantiuselectInclusive;
-comment See select() but limited to head values
-
-command 
algebra.antiuselect(b:bat[:any_1,:any_2],value:any_2):bat[:any_1,:void] 
-address ALGantiuselect1;
-comment Value select, but returning only the   head values. SEE 
ALSO:select(bat,val)
-
 command 
algebra.bandjoin(outer:bat[:any_1,:any_2],inner:bat[:any_2,:any_3],minus:any_2,plus:any_2,li:bit,hi:bit):bat[:any_1,:any_3]
 
 address ALGbandjoin;
 comment This is a join() for which the predicate is that two BUNs match        
        if the left-tail value is within the range [right-head - minus,         
right-head + plus], depending on (l_in/h_in), the bounds                are 
included. Works only for the builtin numerical types,               and their 
derivates.
@@ -2818,27 +2807,27 @@ command algebra.exist(b:bat[:oid,:any_1]
 address ALGexist;
 comment Returns whether 'val' occurs in b.
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit)
 (X_7:bat[:oid,:oid],X_8:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit) 
(X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit) 
(X_4:bat[:oid,:oid],X_5:bat[:oid,:oid]) 
+pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit) 
(X_5:bat[:oid,:oid],X_6:bat[:oid,:oid]) 
 address ALGfirstn;
 comment Calculate first N values of B
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid]
 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],g:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],s:bat[:oid,:oid],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid]
 
 address ALGfirstn;
 comment Calculate first N values of B with candidate list S
 
-pattern algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit):bat[:oid,:oid] 
+pattern 
algebra.firstn(b:bat[:oid,:any],n:wrd,asc:bit,distinct:bit):bat[:oid,:oid] 
 address ALGfirstn;
 comment Calculate first N values of B
 
@@ -2858,8 +2847,12 @@ command algebra.groupby(gids:bat[:oid,:o
 address ALGgroupby;
 comment Produces a new BAT with groups identified by the head column. The 
result contains tail times the head value, ie the tail contains the result 
group sizes.
 
+command 
algebra.ilikesubjoin(l:bat[:oid,:str],r:bat[:oid,:str],sl:bat[:oid,:oid],sr:bat[:oid,:oid],esc:str)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+address ILIKEsubjoin;
+comment Join the string bat L with the pattern bat Rwith optional candidate 
lists SL and SR using pattern escape string ESCand doing a case insensitive 
match.The result is two aligned bats with oids of matching rows.
+
 command algebra.ilikesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
-address PCREilike_join_pcr5;
+address PCREilike_join_pcre;
 function 
algebra.ilikesubselect(b:bat[:oid,:str],cand:bat[:oid,:oid],pat:str,esc:str,anti:bit):bat[:oid,:oid];
 function 
algebra.ilikesubselect(b:bat[:oid,:str],pat:str,esc:str,anti:bit):bat[:oid,:oid];
 command 
algebra.indexjoin(left:bat[:any_1,:any_2],right:bat[:any_2,:any_3]):bat[:any_1,:any_3]
 
@@ -2910,6 +2903,10 @@ pattern algebra.leftjoinPath(l:bat[:any,
 address ALGjoinPath;
 comment Routine to handle join paths.  The type analysis is rather tricky.
 
+command 
algebra.likesubjoin(l:bat[:oid,:str],r:bat[:oid,:str],sl:bat[:oid,:oid],sr:bat[:oid,:oid],esc:str)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+address LIKEsubjoin;
+comment Join the string bat L with the pattern bat Rwith optional candidate 
lists SL and SR using pattern escape string ESCand doing a case sensitive 
match.The result is two aligned bats with oids of matching rows.
+
 command algebra.likesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
 address PCRElike_join_pcre;
 function 
algebra.likesubselect(b:bat[:oid,:str],cand:bat[:oid,:oid],pat:str,esc:str,anti:bit):bat[:oid,:oid];
@@ -3183,14 +3180,6 @@ command algebra.tunique(b:bat[:any_1,:an
 address ALGtunique;
 comment Select unique tuples from the input BAT. Double elimination is         
done over the BUNs tail. The result is a BAT with property              
tkeyd()== true
 
-command 
algebra.thetauselect(b:bat[:any_1,:any_2],val:any_2,op:str):bat[:any_1,:void] 
-address ALGthetauselect;
-comment The theta (<=,<,=,>,>=) select() limited to head values
-
-command algebra.topN(b:bat[:any_1,:any_2],top:lng):bat[:any_1,:any_2] 
-address ALGtopN;
-comment Trim all but the top N tuples.
-
 command 
algebra.thetasubselect(b:bat[:oid,:any_1],s:bat[:oid,:oid],val:any_1,op:str):bat[:oid,:oid]
 
 address ALGthetasubselect2;
 comment Select all head values of the first input BAT for which the tail value 
obeys the relation value OP VAL and for which the head value occurs in  the 
tail of the second input BAT.       Input is a dense-headed BAT, output is a 
dense-headed BAT with in       the tail the head value of the input BAT for 
which the  relationship holds.  The output BAT is sorted on the tail value.
@@ -3343,7 +3332,7 @@ comment Execute a simple R script value
 
 pattern batrapi.subeval_aggr(fptr:ptr,expr:str,arg:any...):any... 
 address RAPIevalAggr;
-comment Execute a simple R script value
+comment grouped aggregates through R
 
 command batsql.alpha(dec:dbl,theta:bat[:oid,:dbl]):bat[:oid,:dbl] 
 address SQLcst_alpha_bat;
@@ -50282,7 +50271,7 @@ comment Create an iterator with fixed gr
 
 command json.dump(j:json):void 
 address JSONdump;
-pattern json.fold(k:bat[:oid,:any]):json 
+pattern json.fold(v:bat[:oid,:any]):json 
 address JSONfold;
 comment Combine the value list into a single json array object.
 
@@ -51843,14 +51832,10 @@ command pcre.imatch(s:str,pat:str):bit
 address PCREimatch;
 comment Caseless Perl Compatible Regular Expression pattern matching against a 
string
 
-command pcre.ilikesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
-address PCREilike_join_pcre;
 command pcre.index(pat:pcre,s:str):int 
 address PCREindex;
 comment match a pattern, return matched position (or 0 when not found)
 
-command pcre.likesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
-address PCRElike_join_pcre;
 command pcre.match(s:str,pat:str):bit 
 address PCREmatch;
 comment Perl Compatible Regular Expression pattern matching against a string
@@ -51877,10 +51862,6 @@ command pcre.sql2pcre(pat:str,esc:str):s
 address PCREsql2pcre;
 comment Convert a SQL like pattern with the given escape character into a PCRE 
pattern.
 
-command pcre.select(pat:str,strs:bat[:oid,:str]):bat[:oid,:str] 
-address PCREselectDef;
-comment Select tuples based on the pattern
-
 pattern profiler.activate(name:str...):void 
 address CMDactivateProfiler;
 comment A list of counters to be activated.
@@ -52366,6 +52347,10 @@ pattern sql.copy_from(sname:str,tname:st
 address mvc_import_table_wrap;
 comment Import a table from bstream s with the         given tuple and 
seperators (sep/rsep)
 
+pattern sql.create_func_upgrade_oct2014(f:str):int 
+address UPGcreate_func;
+comment Create the function described by f, needed for the Oct2014 upgrade
+
 pattern sql.clear_table{unsafe}(sname:str,tname:str):wrd 
 address mvc_clear_table_wrap;
 comment Clear table
@@ -52470,6 +52455,10 @@ pattern sql.db_users():bat[:oid,:str]
 address db_users_wrap;
 comment return table of users with sql scenario
 
+pattern sql.drop_func_upgrade_oct2014(id:int):int 
+address UPGdrop_func;
+comment Drop the function identified by id, needed for the Oct2014 upgrade
+
 pattern sql.dropDeclaredTables{unsafe}(nr:int):void 
 address mvc_drop_declared_tables_wrap;
 comment drop top n declared tables
diff --git a/clients/Tests/MAL-signatures_fits_geom.stable.out 
b/clients/Tests/MAL-signatures_fits_geom.stable.out
--- a/clients/Tests/MAL-signatures_fits_geom.stable.out
+++ b/clients/Tests/MAL-signatures_fits_geom.stable.out
@@ -208,9 +208,6 @@ comment Return the current size (in numb
 
 command aggr.exist(b:bat[:oid,:any_2],h:any_1):bit 
 address ALGexist;
-command aggr.histogram(b:bat[:any_1,:any_2]):bat[:any_2,:int] 
-address ALGhistogram;
-comment Produce a BAT containing the histogram over the tail values.
 
 command aggr.jsonaggr(val:bat[:oid,:dbl]):str 
 address JSONgroupStr;
@@ -2266,14 +2263,6 @@ command algebra.antijoin(left:bat[:oid,:
 address ALGantijoin2;
 comment Returns 2 columns with all BUNs, consisting of the head-oids     from 
'left' and 'right' for which there are BUNs in 'left'      and 'right' with 
equal tails
 
-command 
algebra.antiuselect(b:bat[:any_1,:any_2],low:any_2,high:any_2,li:bit,hi:bit):bat[:any_1,:void]
 
-address ALGantiuselectInclusive;
-comment See select() but limited to head values
-
-command 
algebra.antiuselect(b:bat[:any_1,:any_2],value:any_2):bat[:any_1,:void] 
-address ALGantiuselect1;
-comment Value select, but returning only the   head values. SEE 
ALSO:select(bat,val)
-
 command 
algebra.bandjoin(outer:bat[:any_1,:any_2],inner:bat[:any_2,:any_3],minus:any_2,plus:any_2,li:bit,hi:bit):bat[:any_1,:any_3]
 
 address ALGbandjoin;
 comment This is a join() for which the predicate is that two BUNs match        
        if the left-tail value is within the range [right-head - minus,         
        right-head + plus], depending on (l_in/h_in), the bounds                
are included. Works only for the builtin numerical types,               and 
their derivates.
@@ -2342,8 +2331,12 @@ command algebra.groupby(gids:bat[:oid,:o
 address ALGgroupby;
 comment Produces a new BAT with groups identified by the head column. The 
result contains tail times the head value, ie the tail contains the result 
group sizes.
 
+command 
algebra.ilikesubjoin(l:bat[:oid,:str],r:bat[:oid,:str],sl:bat[:oid,:oid],sr:bat[:oid,:oid],esc:str)
 (X_6:bat[:oid,:oid],X_7:bat[:oid,:oid]) 
+address ILIKEsubjoin;
+comment Join the string bat L with the pattern bat Rwith optional candidate 
lists SL and SR using pattern escape string ESCand doing a case insensitive 
match.The result is two aligned bats with oids of matching rows.
+
 command algebra.ilikesubselect(s:bat[:oid,:str],pat:bat[:oid,:str],esc:str) 
(l:bat[:oid,:oid],r:bat[:oid,:oid]) 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to