Changeset: b0057dec3e17 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/b0057dec3e17 Modified Files: monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h Branch: pushcands Log Message:
Merged with default diffs (truncated from 1263 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 @@ -635,32 +635,16 @@ stdout of test 'MAL-signatures` in direc [ "algebra", "firstn", "pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, X_4:bit, X_5:bit, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) ", "ALGfirstn;", "" ] [ "algebra", "firstn", "pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, X_4:bit, X_5:bit, X_6:bit):bat[:oid] ", "ALGfirstn;", "" ] [ "algebra", "groupby", "command algebra.groupby(X_0:bat[:oid], X_1:bat[:lng]):bat[:oid] ", "ALGgroupby;", "" ] -[ "algebra", "ilike", "command algebra.ilike(X_0:str, X_1:str):bit ", "PCREilike2;", "" ] -[ "algebra", "ilike", "command algebra.ilike(X_0:str, X_1:str, X_2:str):bit ", "PCREilike3;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] ", "ILIKEjoin1;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) ", "ILIKEjoin;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] ", "ILIKEjoin_esc1;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], X_9:bat[:oid]) ", "ILIKEjoin_esc;", "" ] -[ "algebra", "ilikeselect", "command algebra.ilikeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit):bat[:oid] ", "PCRElikeselect1;", "" ] -[ "algebra", "ilikeselect", "command algebra.ilikeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:bit):bat[:oid] ", "PCRElikeselect4;", "" ] [ "algebra", "intersect", "command algebra.intersect(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng):bat[:oid] ", "ALGintersect;", "" ] [ "algebra", "join", "command algebra.join(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng):bat[:oid] ", "ALGjoin1;", "" ] [ "algebra", "join", "command algebra.join(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng) (X_6:bat[:oid], X_7:bat[:oid]) ", "ALGjoin;", "" ] [ "algebra", "leftjoin", "command algebra.leftjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng):bat[:oid] ", "ALGleftjoin1;", "" ] [ "algebra", "leftjoin", "command algebra.leftjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng) (X_6:bat[:oid], X_7:bat[:oid]) ", "ALGleftjoin;", "" ] -[ "algebra", "like", "command algebra.like(X_0:str, X_1:str):bit ", "PCRElike2;", "" ] -[ "algebra", "like", "command algebra.like(X_0:str, X_1:str, X_2:str):bit ", "PCRElike3;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] ", "LIKEjoin1;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) ", "LIKEjoin;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] ", "LIKEjoin_esc1;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], X_9:bat[:oid]) ", "LIKEjoin_esc;", "" ] -[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit, X_5:bit):bat[:oid] ", "PCRElikeselect2;", "" ] -[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit):bat[:oid] ", "PCRElikeselect3;", "" ] -[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:bit):bat[:oid] ", "PCRElikeselect5;", "" ] -[ "algebra", "not_ilike", "command algebra.not_ilike(X_0:str, X_1:str):bit ", "PCREnotilike2;", "" ] -[ "algebra", "not_ilike", "command algebra.not_ilike(X_0:str, X_1:str, X_2:str):bit ", "PCREnotilike3;", "" ] -[ "algebra", "not_like", "command algebra.not_like(X_0:str, X_1:str):bit ", "PCREnotlike2;", "" ] -[ "algebra", "not_like", "command algebra.not_like(X_0:str, X_1:str, X_2:str):bit ", "PCREnotlike3;", "" ] +[ "algebra", "like", "command algebra.like(X_0:str, X_1:str, X_2:str, X_3:bit):bit ", "PCRElike;", "" ] +[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:bit], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit):bat[:oid] ", "LIKEjoin1;", "" ] +[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:bit], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit) (X_9:bat[:oid], X_10:bat[:oid]) ", "LIKEjoin;", "" ] +[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit, X_5:bit):bat[:oid] ", "PCRElikeselect;", "" ] +[ "algebra", "not_like", "command algebra.not_like(X_0:str, X_1:str, X_2:str, X_3:bit):bit ", "PCREnotlike;", "" ] [ "algebra", "orderidx", "command algebra.orderidx(X_0:bat[:any_1], X_1:bit):bat[:any_1] ", "OIDXorderidx;", "" ] [ "algebra", "outerjoin", "command algebra.outerjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng):bat[:oid] ", "ALGouterjoin1;", "" ] [ "algebra", "outerjoin", "command algebra.outerjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng) (X_7:bat[:oid], X_8:bat[:oid]) ", "ALGouterjoin;", "" ] @@ -776,30 +760,12 @@ stdout of test 'MAL-signatures` in direc [ "bataggr", "not_exist", "pattern bataggr.not_exist(X_0:any_1):bat[:bit] ", "SQLnot_exist;", "" ] [ "bataggr", "not_exist", "pattern bataggr.not_exist(X_0:bat[:any_1]):bat[:bit] ", "SQLnot_exist;", "" ] [ "bataggr", "not_exist", "pattern bataggr.not_exist(X_0:bat[:any_1]):bit ", "SQLnot_exist;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCREilike2;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCREilike2;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCREilike2;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREilike;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCREilike;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREilike;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCRElike2;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCRElike2;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCRElike2;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCRElike;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCRElike;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCRElike;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCREnotilike2;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCREnotilike2;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCREnotilike2;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotilike;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCREnotilike;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotilike;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCREnotlike2;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCREnotlike2;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCREnotlike2;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotlike;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCREnotlike;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotlike;", "" ] +[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCRElike;", "" ] +[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:str, X_2:str, X_3:bit):bat[:bit] ", "BATPCRElike;", "" ] +[ "batalgebra", "like", "pattern batalgebra.like(X_0:str, X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCRElike;", "" ] +[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCREnotlike;", "" ] +[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:str, X_2:str, X_3:bit):bat[:bit] ", "BATPCREnotlike;", "" ] +[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:str, X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCREnotlike;", "" ] [ "batblob", "nitems", "pattern batblob.nitems(X_0:bat[:blob]):bat[:int] ", "BLOBnitems_bulk;", "" ] [ "batblob", "nitems", "pattern batblob.nitems(X_0:bat[:blob], X_1:bat[:oid]):bat[:int] ", "BLOBnitems_bulk;", "" ] [ "batcalc", "!=", "pattern batcalc.!=(X_0:any_1, X_1:bat[:any_1]):bat[:bit] ", "CMDbatNE;", "" ] 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 @@ -752,32 +752,16 @@ stdout of test 'MAL-signatures` in direc [ "algebra", "firstn", "pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, X_4:bit, X_5:bit, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) ", "ALGfirstn;", "" ] [ "algebra", "firstn", "pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, X_4:bit, X_5:bit, X_6:bit):bat[:oid] ", "ALGfirstn;", "" ] [ "algebra", "groupby", "command algebra.groupby(X_0:bat[:oid], X_1:bat[:lng]):bat[:oid] ", "ALGgroupby;", "" ] -[ "algebra", "ilike", "command algebra.ilike(X_0:str, X_1:str):bit ", "PCREilike2;", "" ] -[ "algebra", "ilike", "command algebra.ilike(X_0:str, X_1:str, X_2:str):bit ", "PCREilike3;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] ", "ILIKEjoin1;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) ", "ILIKEjoin;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] ", "ILIKEjoin_esc1;", "" ] -[ "algebra", "ilikejoin", "command algebra.ilikejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], X_9:bat[:oid]) ", "ILIKEjoin_esc;", "" ] -[ "algebra", "ilikeselect", "command algebra.ilikeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit):bat[:oid] ", "PCRElikeselect1;", "" ] -[ "algebra", "ilikeselect", "command algebra.ilikeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:bit):bat[:oid] ", "PCRElikeselect4;", "" ] [ "algebra", "intersect", "command algebra.intersect(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng):bat[:oid] ", "ALGintersect;", "" ] [ "algebra", "join", "command algebra.join(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng):bat[:oid] ", "ALGjoin1;", "" ] [ "algebra", "join", "command algebra.join(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng) (X_6:bat[:oid], X_7:bat[:oid]) ", "ALGjoin;", "" ] [ "algebra", "leftjoin", "command algebra.leftjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng):bat[:oid] ", "ALGleftjoin1;", "" ] [ "algebra", "leftjoin", "command algebra.leftjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng) (X_6:bat[:oid], X_7:bat[:oid]) ", "ALGleftjoin;", "" ] -[ "algebra", "like", "command algebra.like(X_0:str, X_1:str):bit ", "PCRElike2;", "" ] -[ "algebra", "like", "command algebra.like(X_0:str, X_1:str, X_2:str):bit ", "PCRElike3;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] ", "LIKEjoin1;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) ", "LIKEjoin;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] ", "LIKEjoin_esc1;", "" ] -[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], X_9:bat[:oid]) ", "LIKEjoin_esc;", "" ] -[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit, X_5:bit):bat[:oid] ", "PCRElikeselect2;", "" ] -[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit):bat[:oid] ", "PCRElikeselect3;", "" ] -[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:bit):bat[:oid] ", "PCRElikeselect5;", "" ] -[ "algebra", "not_ilike", "command algebra.not_ilike(X_0:str, X_1:str):bit ", "PCREnotilike2;", "" ] -[ "algebra", "not_ilike", "command algebra.not_ilike(X_0:str, X_1:str, X_2:str):bit ", "PCREnotilike3;", "" ] -[ "algebra", "not_like", "command algebra.not_like(X_0:str, X_1:str):bit ", "PCREnotlike2;", "" ] -[ "algebra", "not_like", "command algebra.not_like(X_0:str, X_1:str, X_2:str):bit ", "PCREnotlike3;", "" ] +[ "algebra", "like", "command algebra.like(X_0:str, X_1:str, X_2:str, X_3:bit):bit ", "PCRElike;", "" ] +[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:bit], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit):bat[:oid] ", "LIKEjoin1;", "" ] +[ "algebra", "likejoin", "command algebra.likejoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:bit], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit) (X_9:bat[:oid], X_10:bat[:oid]) ", "LIKEjoin;", "" ] +[ "algebra", "likeselect", "command algebra.likeselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, X_3:str, X_4:bit, X_5:bit):bat[:oid] ", "PCRElikeselect;", "" ] +[ "algebra", "not_like", "command algebra.not_like(X_0:str, X_1:str, X_2:str, X_3:bit):bit ", "PCREnotlike;", "" ] [ "algebra", "orderidx", "command algebra.orderidx(X_0:bat[:any_1], X_1:bit):bat[:any_1] ", "OIDXorderidx;", "" ] [ "algebra", "outerjoin", "command algebra.outerjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng):bat[:oid] ", "ALGouterjoin1;", "" ] [ "algebra", "outerjoin", "command algebra.outerjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng) (X_7:bat[:oid], X_8:bat[:oid]) ", "ALGouterjoin;", "" ] @@ -895,30 +879,12 @@ stdout of test 'MAL-signatures` in direc [ "bataggr", "not_exist", "pattern bataggr.not_exist(X_0:any_1):bat[:bit] ", "SQLnot_exist;", "" ] [ "bataggr", "not_exist", "pattern bataggr.not_exist(X_0:bat[:any_1]):bat[:bit] ", "SQLnot_exist;", "" ] [ "bataggr", "not_exist", "pattern bataggr.not_exist(X_0:bat[:any_1]):bit ", "SQLnot_exist;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCREilike2;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCREilike2;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCREilike2;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREilike;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCREilike;", "" ] -[ "batalgebra", "ilike", "pattern batalgebra.ilike(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREilike;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCRElike2;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCRElike2;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCRElike2;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCRElike;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCRElike;", "" ] -[ "batalgebra", "like", "pattern batalgebra.like(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCRElike;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCREnotilike2;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCREnotilike2;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCREnotilike2;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotilike;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCREnotilike;", "" ] -[ "batalgebra", "not_ilike", "pattern batalgebra.not_ilike(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotilike;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:bat[:str]):bat[:bit] ", "BATPCREnotlike2;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:str):bat[:bit] ", "BATPCREnotlike2;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:str, X_1:bat[:str]):bat[:bit] ", "BATPCREnotlike2;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotlike;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:str, X_2:str):bat[:bit] ", "BATPCREnotlike;", "" ] -[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:str, X_1:bat[:str], X_2:str):bat[:bit] ", "BATPCREnotlike;", "" ] +[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCRElike;", "" ] +[ "batalgebra", "like", "pattern batalgebra.like(X_0:bat[:str], X_1:str, X_2:str, X_3:bit):bat[:bit] ", "BATPCRElike;", "" ] +[ "batalgebra", "like", "pattern batalgebra.like(X_0:str, X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCRElike;", "" ] +[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCREnotlike;", "" ] +[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:bat[:str], X_1:str, X_2:str, X_3:bit):bat[:bit] ", "BATPCREnotlike;", "" ] +[ "batalgebra", "not_like", "pattern batalgebra.not_like(X_0:str, X_1:bat[:str], X_2:str, X_3:bit):bat[:bit] ", "BATPCREnotlike;", "" ] [ "batblob", "nitems", "pattern batblob.nitems(X_0:bat[:blob]):bat[:int] ", "BLOBnitems_bulk;", "" ] [ "batblob", "nitems", "pattern batblob.nitems(X_0:bat[:blob], X_1:bat[:oid]):bat[:int] ", "BLOBnitems_bulk;", "" ] [ "batcalc", "!=", "pattern batcalc.!=(X_0:any_1, X_1:bat[:any_1]):bat[:bit] ", "CMDbatNE;", "" ] 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 @@ -1044,10 +1044,6 @@ const char *hashRef; const char *hgeRef; const char *identityRef; const char *ifthenelseRef; -const char *ilikeRef; -const char *ilikejoinRef; -const char *ilikeselectRef; -const char *ilikeuselectRef; const char *importColumnRef; void initHeartbeat(void); void initNamespace(void); @@ -1189,7 +1185,6 @@ int newTypeVariable(MalBlkPtr mb, malTyp int newVariable(MalBlkPtr mb, const char *name, size_t len, malType type); const char *nextRef; const char *notRef; -const char *not_ilikeRef; const char *not_likeRef; const char *not_uniqueRef; const char *nth_valueRef; diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -220,6 +220,8 @@ insert_string_bat(BAT *b, BAT *n, struct memset(b->tvheap->base, 0, GDK_STRHASHSIZE); } + /* make sure b is wide enough */ + v = b->tvheap->free; } } } else if (b->tvheap != n->tvheap && diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c --- a/monetdb5/modules/mal/pcre.c +++ b/monetdb5/modules/mal/pcre.c @@ -1327,7 +1327,7 @@ choose_like_path(char **ppat, bool *use_ } static str -PCRElike4(bit *ret, const str *s, const str *pat, const str *esc, const bit *isens) +PCRElike_imp(bit *ret, const str *s, const str *pat, const str *esc, const bit *isens) { str res = MAL_SUCCEED; char *ppat = NULL; @@ -1362,77 +1362,18 @@ PCRElike4(bit *ret, const str *s, const } static str -PCRElike3(bit *ret, const str *s, const str *pat, const str *esc) +PCRElike(bit *ret, const str *s, const str *pat, const str *esc, const bit *isens) { - bit no = FALSE; - - return PCRElike4(ret, s, pat, esc, &no); + return PCRElike_imp(ret, s, pat, esc, isens); } static str -PCRElike2(bit *ret, const str *s, const str *pat) -{ - char *esc = ""; - - return PCRElike3(ret, s, pat, &esc); -} - -static str -PCREnotlike3(bit *ret, const str *s, const str *pat, const str *esc) -{ - str tmp; - bit r; - - rethrow("str.not_like", tmp, PCRElike3(&r, s, pat, esc)); - *ret = r==bit_nil?bit_nil:!r; - return MAL_SUCCEED; -} - -static str -PCREnotlike2(bit *ret, const str *s, const str *pat) +PCREnotlike(bit *ret, const str *s, const str *pat, const str *esc, const bit *isens) { str tmp; bit r; - rethrow("str.not_like", tmp, PCRElike2(&r, s, pat)); - *ret = r==bit_nil?bit_nil:!r; - return MAL_SUCCEED; -} - -static str -PCREilike3(bit *ret, const str *s, const str *pat, const str *esc) -{ - bit yes = TRUE; - - return PCRElike4(ret, s, pat, esc, &yes); -} - -static str -PCREilike2(bit *ret, const str *s, const str *pat) -{ - char *esc = ""; - - return PCREilike3(ret, s, pat, &esc); -} - -static str -PCREnotilike3(bit *ret, const str *s, const str *pat, const str *esc) -{ - str tmp; - bit r; - - rethrow("str.not_ilike", tmp, PCREilike3(&r, s, pat, esc)); - *ret = r==bit_nil?bit_nil:!r; - return MAL_SUCCEED; -} - -static str -PCREnotilike2(bit *ret, const str *s, const str *pat) -{ - str tmp; - bit r; - - rethrow("str.not_ilike", tmp, PCREilike2(&r, s, pat)); + rethrow("str.not_like", tmp, PCRElike(&r, s, pat, esc, isens)); *ret = r==bit_nil?bit_nil:!r; return MAL_SUCCEED; } @@ -1623,7 +1564,7 @@ pcre_clean( } static str -BATPCRElike3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, const str *esc, const bit *isens, const bit *not) +BATPCRElike_imp(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, const str *esc, const bit *isens, const bit *not) { str msg = MAL_SUCCEED, input = NULL, pat = NULL; BAT *b = NULL, *pbn = NULL, *bn = NULL; @@ -1757,72 +1698,20 @@ static str BATPCRElike(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { const str *esc = getArgReference_str(stk, pci, 3); + const bit *ci = getArgReference_bit(stk, pci, 4); bit no = FALSE; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list