Changeset: f0890d8d3e92 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f0890d8d3e92
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_subquery.c
        sql/backends/monet5/sql_subquery.h
        sql/backends/monet5/sql_subquery.mal
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
        sql/test/mergetables/Tests/mergeinit.stable.err
Branch: default
Log Message:

Added missing bulk implementation for aggr.exists and aggr.not_exists. This 
fixes the buggy query on subquery4 somehow


diffs (truncated from 303 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
@@ -126,8 +126,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "covariancep",  "command aggr.covariancep(X_1:bat[:sht], 
X_2:bat[:sht], X_3:bat[:oid], X_4:bat[:any_1]):bat[:dbl] ",    
"AGGRcovariancep;",     ""      ]
 [ "aggr",      "covariancep",  "command aggr.covariancep(X_1:bat[:any_2], 
X_2:bat[:any_2]):dbl ",      "ALGcovariancep;",      ""      ]
 [ "aggr",      "exist",        "command aggr.exist(X_1:bat[:any_2], 
X_2:any_1):bit ",  "ALGexist;",    ""      ]
-[ "aggr",      "exist",        "command aggr.exist(X_1:bat[:any]):bit ",       
"SQLexist;",    ""      ]
-[ "aggr",      "exist",        "pattern aggr.exist(X_1:any):bit ",     
"SQLexist_val;",        ""      ]
+[ "aggr",      "exist",        "pattern aggr.exist(X_1:any_1):bit ",   
"SQLexist;",    ""      ]
 [ "aggr",      "jsonaggr",     "command aggr.jsonaggr(X_1:bat[:dbl]):str ",    
"JSONgroupStr;",        ""      ]
 [ "aggr",      "jsonaggr",     "command aggr.jsonaggr(X_1:bat[:str]):str ",    
"JSONgroupStr;",        ""      ]
 [ "aggr",      "max",  "command aggr.max(X_1:bat[:any_1], X_2:bat[:oid], 
X_3:bat[:any_2]):bat[:any_1] ",       "AGGRmax3;",    ""      ]
@@ -139,8 +138,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "min",  "command aggr.min(X_1:bat[:any_2]):any_2 ",     
"ALGminany;",   ""      ]
 [ "aggr",      "min",  "command aggr.min(X_1:bat[:any_2], X_2:bit):any_2 ",    
"ALGminany_skipnil;",   ""      ]
 [ "aggr",      "not_anyequal", "pattern aggr.not_anyequal(X_1:any_1, 
X_2:any_1):bit ", "CMDvarNE;",    ""      ]
-[ "aggr",      "not_exist",    "command aggr.not_exist(X_1:bat[:any]):bit ",   
"SQLnot_exist;",        ""      ]
-[ "aggr",      "not_exist",    "pattern aggr.not_exist(X_1:any):bit ", 
"SQLnot_exist_val;",    ""      ]
+[ "aggr",      "not_exist",    "pattern aggr.not_exist(X_1:any_1):bit ",       
"SQLnot_exist;",        ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:bte] ",  "AGGRprod3_bte;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:flt], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
@@ -718,6 +716,12 @@ stdout of test 'MAL-signatures` in direc
 [ "bat",       "setPersistent",        "command 
bat.setPersistent(X_1:bat[:any_1]):void ",     "BKCsetPersistent;",    ""      ]
 [ "bat",       "setTransient", "command bat.setTransient(X_1:bat[:any_1]):void 
",      "BKCsetTransient;",     ""      ]
 [ "bat",       "single",       "pattern bat.single(X_1:any_1):bat[:any_1] ",   
"CMDBATsingle;",        ""      ]
+[ "bataggr",   "exist",        "pattern bataggr.exist(X_1:any_1):bat[:bit] ",  
"SQLexist;",    ""      ]
+[ "bataggr",   "exist",        "pattern 
bataggr.exist(X_1:bat[:any_1]):bat[:bit] ",    "SQLexist;",    ""      ]
+[ "bataggr",   "exist",        "pattern bataggr.exist(X_1:bat[:any_1]):bit ",  
"SQLexist;",    ""      ]
+[ "bataggr",   "not_exist",    "pattern bataggr.not_exist(X_1:any_1):bat[:bit] 
",      "SQLnot_exist;",        ""      ]
+[ "bataggr",   "not_exist",    "pattern 
bataggr.not_exist(X_1:bat[:any_1]):bat[:bit] ",        "SQLnot_exist;",        
""      ]
+[ "bataggr",   "not_exist",    "pattern bataggr.not_exist(X_1:bat[:any_1]):bit 
",      "SQLnot_exist;",        ""      ]
 [ "batalgebra",        "ilike",        "command 
batalgebra.ilike(X_1:bat[:str], X_2:str):bat[:bit] ",  "BATPCREilike2;",       
""      ]
 [ "batalgebra",        "ilike",        "command 
batalgebra.ilike(X_1:bat[:str], X_2:str, X_3:str):bat[:bit] ", "BATPCREilike;", 
       ""      ]
 [ "batalgebra",        "like", "command batalgebra.like(X_1:bat[:str], 
X_2:str):bat[:bit] ",   "BATPCRElike2;",        ""      ]
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
@@ -135,8 +135,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "covariancep",  "command aggr.covariancep(X_1:bat[:sht], 
X_2:bat[:sht], X_3:bat[:oid], X_4:bat[:any_1]):bat[:dbl] ",    
"AGGRcovariancep;",     ""      ]
 [ "aggr",      "covariancep",  "command aggr.covariancep(X_1:bat[:any_2], 
X_2:bat[:any_2]):dbl ",      "ALGcovariancep;",      ""      ]
 [ "aggr",      "exist",        "command aggr.exist(X_1:bat[:any_2], 
X_2:any_1):bit ",  "ALGexist;",    ""      ]
-[ "aggr",      "exist",        "command aggr.exist(X_1:bat[:any]):bit ",       
"SQLexist;",    ""      ]
-[ "aggr",      "exist",        "pattern aggr.exist(X_1:any):bit ",     
"SQLexist_val;",        ""      ]
+[ "aggr",      "exist",        "pattern aggr.exist(X_1:any_1):bit ",   
"SQLexist;",    ""      ]
 [ "aggr",      "jsonaggr",     "command aggr.jsonaggr(X_1:bat[:dbl]):str ",    
"JSONgroupStr;",        ""      ]
 [ "aggr",      "jsonaggr",     "command aggr.jsonaggr(X_1:bat[:str]):str ",    
"JSONgroupStr;",        ""      ]
 [ "aggr",      "max",  "command aggr.max(X_1:bat[:any_1], X_2:bat[:oid], 
X_3:bat[:any_2]):bat[:any_1] ",       "AGGRmax3;",    ""      ]
@@ -148,8 +147,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "min",  "command aggr.min(X_1:bat[:any_2]):any_2 ",     
"ALGminany;",   ""      ]
 [ "aggr",      "min",  "command aggr.min(X_1:bat[:any_2], X_2:bit):any_2 ",    
"ALGminany_skipnil;",   ""      ]
 [ "aggr",      "not_anyequal", "pattern aggr.not_anyequal(X_1:any_1, 
X_2:any_1):bit ", "CMDvarNE;",    ""      ]
-[ "aggr",      "not_exist",    "command aggr.not_exist(X_1:bat[:any]):bit ",   
"SQLnot_exist;",        ""      ]
-[ "aggr",      "not_exist",    "pattern aggr.not_exist(X_1:any):bit ", 
"SQLnot_exist_val;",    ""      ]
+[ "aggr",      "not_exist",    "pattern aggr.not_exist(X_1:any_1):bit ",       
"SQLnot_exist;",        ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:bte] ",  "AGGRprod3_bte;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:flt], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
@@ -829,6 +827,12 @@ stdout of test 'MAL-signatures` in direc
 [ "bat",       "setPersistent",        "command 
bat.setPersistent(X_1:bat[:any_1]):void ",     "BKCsetPersistent;",    ""      ]
 [ "bat",       "setTransient", "command bat.setTransient(X_1:bat[:any_1]):void 
",      "BKCsetTransient;",     ""      ]
 [ "bat",       "single",       "pattern bat.single(X_1:any_1):bat[:any_1] ",   
"CMDBATsingle;",        ""      ]
+[ "bataggr",   "exist",        "pattern bataggr.exist(X_1:any_1):bat[:bit] ",  
"SQLexist;",    ""      ]
+[ "bataggr",   "exist",        "pattern 
bataggr.exist(X_1:bat[:any_1]):bat[:bit] ",    "SQLexist;",    ""      ]
+[ "bataggr",   "exist",        "pattern bataggr.exist(X_1:bat[:any_1]):bit ",  
"SQLexist;",    ""      ]
+[ "bataggr",   "not_exist",    "pattern bataggr.not_exist(X_1:any_1):bat[:bit] 
",      "SQLnot_exist;",        ""      ]
+[ "bataggr",   "not_exist",    "pattern 
bataggr.not_exist(X_1:bat[:any_1]):bat[:bit] ",        "SQLnot_exist;",        
""      ]
+[ "bataggr",   "not_exist",    "pattern bataggr.not_exist(X_1:bat[:any_1]):bit 
",      "SQLnot_exist;",        ""      ]
 [ "batalgebra",        "ilike",        "command 
batalgebra.ilike(X_1:bat[:str], X_2:str):bat[:bit] ",  "BATPCREilike2;",       
""      ]
 [ "batalgebra",        "ilike",        "command 
batalgebra.ilike(X_1:bat[:str], X_2:str, X_3:str):bat[:bit] ", "BATPCREilike;", 
       ""      ]
 [ "batalgebra",        "like", "command batalgebra.like(X_1:bat[:str], 
X_2:str):bat[:bit] ",   "BATPCRElike2;",        ""      ]
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -6641,11 +6641,15 @@ static mel_func sql_init_funcs[] = {
  command("aggr", "suballnotequal", SQLallnotequal_grp, false, "if all values 
in r are not equal to l return true, else if r has nil nil else false", 
args(1,6, 
batarg("",bit),batargany("l",1),batargany("r",1),batarg("gp",oid),batarg("gpe",oid),arg("no_nil",bit))),
  command("aggr", "suballnotequal", SQLallnotequal_grp2, false, "if all values 
in r are not equal to l return true, else if r has nil nil else false, except 
if rid is nil (ie empty) then true", args(1,7, 
batarg("",bit),batargany("l",1),batargany("r",1),batarg("rid",oid),batarg("gp",oid),batarg("gpe",oid),arg("no_nil",bit))),
 // command("aggr", "exist", ALGexist, false, "", args(1,3, 
arg("",bit),batargany("b",2),argany("h",1))),
- command("aggr", "exist", SQLexist, false, "", args(1,2, 
arg("",bit),batargany("b",0))),
- pattern("aggr", "exist", SQLexist_val, false, "", args(1,2, 
arg("",bit),argany("v",0))),
+ pattern("aggr", "exist", SQLexist, false, "", args(1,2, arg("",bit), 
argany("b",1))),
+ pattern("bataggr", "exist", SQLexist, false, "", args(1,2, batarg("",bit), 
argany("b",1))),
+ pattern("bataggr", "exist", SQLexist, false, "", args(1,2, arg("",bit), 
batargany("b",1))),
+ pattern("bataggr", "exist", SQLexist, false, "", args(1,2, batarg("",bit), 
batargany("b",1))),
  command("aggr", "subexist", SQLsubexist, false, "", args(1,5, 
batarg("",bit),batargany("b",0),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
- command("aggr", "not_exist", SQLnot_exist, false, "", args(1,2, 
arg("",bit),batargany("b",0))),
- pattern("aggr", "not_exist", SQLnot_exist_val, false, "", args(1,2, 
arg("",bit),argany("v",0))),
+ pattern("aggr", "not_exist", SQLnot_exist, false, "", args(1,2, arg("",bit), 
argany("b",1))),
+ pattern("bataggr", "not_exist", SQLnot_exist, false, "", args(1,2, 
batarg("",bit), argany("b",1))),
+ pattern("bataggr", "not_exist", SQLnot_exist, false, "", args(1,2, 
arg("",bit), batargany("b",1))),
+ pattern("bataggr", "not_exist", SQLnot_exist, false, "", args(1,2, 
batarg("",bit), batargany("b",1))),
  command("aggr", "subnot_exist", SQLsubnot_exist, false, "", args(1,5, 
batarg("",bit),batargany("b",0),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
  /* wlr */
  pattern("wlr", "master", WLRmaster, false, "Initialize the replicator 
thread", args(0,1, arg("dbname",str))),
diff --git a/sql/backends/monet5/sql_subquery.c 
b/sql/backends/monet5/sql_subquery.c
--- a/sql/backends/monet5/sql_subquery.c
+++ b/sql/backends/monet5/sql_subquery.c
@@ -1097,35 +1097,33 @@ SQLallnotequal_grp2(bat *ret, const bat 
 }
 
 str
-SQLexist_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+SQLexist(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       bit *res = getArgReference_bit(stk, pci, 0);
-       ptr v = getArgReference(stk, pci, 1);
-       int mtype = getArgType(mb, pci, 1);
+       BAT *b = NULL, *r = NULL;
+       bit count = TRUE;
 
        (void)cntxt;
-       if ((mtype == TYPE_bat || mtype > GDKatomcnt)) {
-               BAT *b = BATdescriptor(*(bat *)v);
-
-               if (b)
-                       *res = BATcount(b) != 0;
-               else
+       if (isaBatType(getArgType(mb, pci, 1))) {
+               bat *bid = getArgReference_bat(stk, pci, 1);
+               if (!(b = BATdescriptor(*bid)))
                        throw(SQL, "aggr.exist", SQLSTATE(HY005) "Cannot access 
column descriptor");
-       } else {
-               *res = TRUE;
+               count = BATcount(b) != 0;
        }
-       return MAL_SUCCEED;
-}
+       if (isaBatType(getArgType(mb, pci, 0))) {
+               bat *res = getArgReference_bat(stk, pci, 0);
+               if ((r = BATconstant(b ? b->hseqbase : 0, TYPE_bit, &count, b ? 
BATcount(b) : 1, TRANSIENT)) == NULL) {
+                       if (b)
+                               BBPunfix(b->batCacheid);
+                       throw(SQL, "aggr.exist", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+               }
+               BBPkeepref(*res = r->batCacheid);
+       } else {
+               bit *res = getArgReference_bit(stk, pci, 0);
+               *res = count;
+       }
 
-str
-SQLexist(bit *res, bat *id)
-{
-       BAT *b;
-
-       if ((b = BATdescriptor(*id)) == NULL)
-               throw(SQL, "aggr.exist", SQLSTATE(HY005) "Cannot access column 
descriptor");
-       *res = BATcount(b) != 0;
-       BBPunfix(b->batCacheid);
+       if (b)
+               BBPunfix(b->batCacheid);
        return MAL_SUCCEED;
 }
 
@@ -1195,34 +1193,33 @@ SQLsubexist(bat *ret, const bat *bp, con
 }
 
 str
-SQLnot_exist_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+SQLnot_exist(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       bit *res = getArgReference_bit(stk, pci, 0);
-       ptr v = getArgReference(stk, pci, 1);
-       int mtype = getArgType(mb, pci, 1);
+       BAT *b = NULL, *r = NULL;
+       bit count = FALSE;
 
        (void)cntxt;
-       if ((mtype == TYPE_bat || mtype > GDKatomcnt)) {
-               BAT *b = BATdescriptor(*(bat *)v);
-
-               if (b)
-                       *res = BATcount(b) == 0;
-               else
+       if (isaBatType(getArgType(mb, pci, 1))) {
+               bat *bid = getArgReference_bat(stk, pci, 1);
+               if (!(b = BATdescriptor(*bid)))
                        throw(SQL, "aggr.not_exist", SQLSTATE(HY005) "Cannot 
access column descriptor");
-       } else
-               *res = FALSE;
-       return MAL_SUCCEED;
-}
+               count = BATcount(b) == 0;
+       }
+       if (isaBatType(getArgType(mb, pci, 0))) {
+               bat *res = getArgReference_bat(stk, pci, 0);
+               if ((r = BATconstant(b ? b->hseqbase : 0, TYPE_bit, &count, b ? 
BATcount(b) : 1, TRANSIENT)) == NULL) {
+                       if (b)
+                               BBPunfix(b->batCacheid);
+                       throw(SQL, "aggr.not_exist", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+               }
+               BBPkeepref(*res = r->batCacheid);
+       } else {
+               bit *res = getArgReference_bit(stk, pci, 0);
+               *res = count;
+       }
 
-str
-SQLnot_exist(bit *res, bat *id)
-{
-       BAT *b;
-
-       if ((b = BATdescriptor(*id)) == NULL)
-               throw(SQL, "aggr.not_exist", SQLSTATE(HY005) "Cannot access 
column descriptor");
-       *res = BATcount(b) == 0;
-       BBPunfix(b->batCacheid);
+       if (b)
+               BBPunfix(b->batCacheid);
        return MAL_SUCCEED;
 }
 
diff --git a/sql/backends/monet5/sql_subquery.h 
b/sql/backends/monet5/sql_subquery.h
--- a/sql/backends/monet5/sql_subquery.h
+++ b/sql/backends/monet5/sql_subquery.h
@@ -28,12 +28,10 @@ sql5_export str SQLallnotequal(bit *ret,
 sql5_export str SQLallnotequal_grp(bat *ret, const bat *l, const bat *r, const 
bat *gp, const bat *gpe, bit *no_nil);
 sql5_export str SQLallnotequal_grp2(bat *ret, const bat *l, const bat *r, 
const bat *rid, const bat *gp, const bat *gpe, bit *no_nil);
 
-sql5_export str SQLexist(bit *res, bat *id);
-sql5_export str SQLexist_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+sql5_export str SQLexist(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 sql5_export str SQLsubexist(bat *ret, const bat *b, const bat *gp, const bat 
*gpe, bit *no_nil);
 
-sql5_export str SQLnot_exist(bit *res, bat *id);
-sql5_export str SQLnot_exist_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+sql5_export str SQLnot_exist(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str SQLsubnot_exist(bat *ret, const bat *b, const bat *gp, const 
bat *gpe, bit *no_nil);
 
 #endif /* _SQL_SUBQUERY_H */
diff --git a/sql/backends/monet5/sql_subquery.mal 
b/sql/backends/monet5/sql_subquery.mal
--- a/sql/backends/monet5/sql_subquery.mal
+++ b/sql/backends/monet5/sql_subquery.mal
@@ -75,23 +75,34 @@ command suballnotequal(l:bat[:any_1], r:
 address SQLallnotequal_grp2
 comment "if all values in r are not equal to l return true, else if r has nil 
nil else false, except if rid is nil (ie empty) then true";
 
-command aggr.exist(b:bat[:any_2], h:any_1):bit
-address ALGexist;
+module bataggr;
+
+pattern aggr.exist(b:any_1):bit
+address SQLexist;
 
-command aggr.exist(b:bat[:any_0]):bit
+pattern bataggr.exist(b:any_1):bat[:bit]
+address SQLexist;
+
+pattern bataggr.exist(b:bat[:any_1]):bit
+address SQLexist;
+
+pattern bataggr.exist(b:bat[:any_1]):bat[:bit]
 address SQLexist;
 
-pattern aggr.exist(v:any_0):bit
-address SQLexist_val;
-
-command aggr.subexist(b:bat[:any_0], g:bat[:oid], e:bat[:oid], 
no_nil:bit):bat[:bit]
+command aggr.subexist(b:bat[:any_1], g:bat[:oid], e:bat[:oid], 
no_nil:bit):bat[:bit]
 address SQLsubexist;
 
-command aggr.not_exist(b:bat[:any_0]):bit
+pattern aggr.not_exist(b:any_1):bit
+address SQLnot_exist;
+
+pattern bataggr.not_exist(b:any_1):bat[:bit]
 address SQLnot_exist;
 
-pattern aggr.not_exist(v:any_0):bit
-address SQLnot_exist_val;
+pattern bataggr.not_exist(b:bat[:any_1]):bit
+address SQLnot_exist;
 
-command aggr.subnot_exist(b:bat[:any_0], g:bat[:oid], e:bat[:oid], 
no_nil:bit):bat[:bit]
+pattern bataggr.not_exist(b:bat[:any_1]):bat[:bit]
+address SQLnot_exist;
+
+command aggr.subnot_exist(b:bat[:any_1], g:bat[:oid], e:bat[:oid], 
no_nil:bit):bat[:bit]
 address SQLsubnot_exist;
diff --git 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
--- 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
+++ 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
@@ -73,7 +73,7 @@ stdout of test 'sqlitelogictest-cast-nul
 [ NULL ]
 #SELECT ALL CAST ( col1 / - - ( + CAST ( NULL AS INTEGER ) ) AS BIGINT ) col0,
 #           CAST ( 39 + + + CAST ( NULL AS INTEGER ) + + - 10 + col1 / - col0 
AS BIGINT ) AS col1 FROM tab2;
-% sys.,        sys. # table_name
+% sys.,        . # table_name
 % col0,        col1 # name
 % bigint,      bigint # type
 % 1,   1 # length
diff --git a/sql/test/mergetables/Tests/mergeinit.stable.err 
b/sql/test/mergetables/Tests/mergeinit.stable.err
--- a/sql/test/mergetables/Tests/mergeinit.stable.err
+++ b/sql/test/mergetables/Tests/mergeinit.stable.err
@@ -7,7 +7,7 @@ stderr of test 'mergeinit` in directory 
 
 MAPI  = (monetdb) /var/tmp/mtest-119047/.s.monetdb.33596
 QUERY = ALTER TABLE complete ADD TABLE wrong; --error, cannot add views to a 
merge table
-ERROR = !ALTER TABLE: can't add a view into a MERGE TABLE
+ERROR = !ALTER TABLE: can't add/drop a view into a MERGE TABLE
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to