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

Reply via email to