Changeset: 34304387fcc2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34304387fcc2
Added Files:
        sql/test/BugTracker-2017/Tests/copy_into_crash.Bug-6404.sql
        sql/test/BugTracker-2017/Tests/copy_into_crash.Bug-6404.stable.err
        sql/test/BugTracker-2017/Tests/copy_into_crash.Bug-6404.stable.out
        sql/test/BugTracker-2017/Tests/null_matches_in_outer.Bug-6398.sql
        sql/test/BugTracker-2017/Tests/null_matches_in_outer.Bug-6398.stable.err
        sql/test/BugTracker-2017/Tests/null_matches_in_outer.Bug-6398.stable.out
        sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.err
        sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out
        
sql/test/bugs/Tests/unicode_varchar-bug-sf-1041324_JdbcClient.stable.out.Windows
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        monetdb5/modules/mal/tablet.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_statement.c
        sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out
        sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows
        sql/include/sql_relation.h
        sql/jdbc/tests/Tests/Test_CisValid.stable.out
        sql/server/rel_optimizer.c
        sql/server/rel_updates.c
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
        sql/test/BugTracker-2017/Tests/All
        sql/test/BugTracker-2017/Tests/sqllitelogistest_case.Bug-6335.sql
Branch: default
Log Message:

Merge with Jul2017 branch.


diffs (truncated from 1502 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
@@ -8335,19 +8335,15 @@ Ready.
 [ "sql",       "dec_round",    "command sql.dec_round(v:int, r:int):int ",     
"int_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "dec_round",    "command sql.dec_round(v:lng, r:lng):lng ",     
"lng_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "dec_round",    "command sql.dec_round(v:sht, r:sht):sht ",     
"sht_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
-[ "sql",       "declaredTable",        "pattern 
sql.declaredTable(name:str):int ",     "mvc_declared_table_wrap;",     "Prepare 
a declared table"      ]
 [ "sql",       "delete",       "pattern sql.delete(mvc:int, sname:str, 
tname:str, b:any):int ",        "mvc_delete_wrap;",     "Delete a row from a 
table. Returns sequence number for order dependece."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3]):bat[:any_3] ",     "DELTAbat2;",   "Return 
column bat with delta's applied."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3], ins:bat[:any_3]):bat[:any_3] ",    
"DELTAbat;",    "Return column bat with delta's applied."       ]
 [ "sql",       "dense_rank",   "pattern sql.dense_rank(b:any_1, p:bit, 
o:bit):int ",   "SQLdense_rank;",       "return the densely ranked groups"      
]
 [ "sql",       "diff", "pattern sql.diff(b:any_1):bit ",       "SQLdiff;",     
"return true if cur != prev row"        ]
 [ "sql",       "diff", "pattern sql.diff(p:bit, b:any_1):bit ",        
"SQLdiff;",     "return true if cur != prev row"        ]
-[ "sql",       "dropDeclaredTable",    "pattern 
sql.dropDeclaredTable(name:str):void ",        "mvc_drop_declared_table_wrap;", 
       "drop a declared table" ]
-[ "sql",       "dropDeclaredTables",   "pattern 
sql.dropDeclaredTables(nr:int):void ", "mvc_drop_declared_tables_wrap;",       
"drop top n declared tables"    ]
 [ "sql",       "drop_func_upgrade_oct2014",    "pattern 
sql.drop_func_upgrade_oct2014(id:int):int ",   "UPGdrop_func;",        "Drop 
the function identified by id, needed for the Oct2014 upgrade"    ]
 [ "sql",       "drop_hash",    "pattern sql.drop_hash(sch:str, tbl:str):void 
",        "SQLdrop_hash;",        "Drop hash indices for the given table" ]
 [ "sql",       "droporderindex",       "pattern sql.droporderindex(sch:str, 
tbl:str, col:str):void ",  "sql_droporderindex;",  "Drop the order index on a 
column"      ]
-[ "sql",       "dtColumn",     "pattern sql.dtColumn(rs:int, tname:str, 
name:str, typename:str, digits:int, scale:int):void ", 
"mvc_declared_table_column_wrap;",      ""      ]
 [ "sql",       "dump_cache",   "pattern sql.dump_cache() (query:bat[:str], 
count:bat[:int]) ", "dump_cache;",  "dump the content of the query cache"   ]
 [ "sql",       "dump_opt_stats",       "pattern sql.dump_opt_stats() 
(rewrite:bat[:str], count:bat[:int]) ",   "dump_opt_stats;",      "dump the 
optimizer rewrite statistics" ]
 [ "sql",       "dump_trace",   "pattern sql.dump_trace() (event:bat[:int], 
clk:bat[:str], pc:bat[:str], thread:bat[:int], ticks:bat[:lng], 
rssMB:bat[:lng], vmMB:bat[:lng], reads:bat[:lng], writes:bat[:lng], 
minflt:bat[:lng], majflt:bat[:lng], nvcsw:bat[:lng], stmt:bat[:str]) ", 
"dump_trace;",  "dump the trace statistics"     ]
@@ -8374,6 +8370,7 @@ Ready.
 [ "sql",       "getVariable",  "pattern sql.getVariable(mvc:int, 
varname:str):any_1 ", "getVariable;", "Get the value of a session variable"   ]
 [ "sql",       "getVersion",   "command sql.getVersion(clientid:int):lng ",    
"mvc_getVersion;",      "Return the database version identifier for a client."  
]
 [ "sql",       "get_value",    "pattern sql.get_value(sname:str, 
sequence:str):lng ",  "mvc_get_value;",       "return the current value of the 
sequence"      ]
+[ "sql",       "grow", "pattern sql.grow(tid:bat[:oid], X_0:any_1):int ",      
"mvc_grow_wrap;",       "Resize the tid column of a declared table."    ]
 [ "sql",       "importTable",  "pattern sql.importTable(sname:str, tname:str, 
fname:str...):bat[:any]... ",    "mvc_bin_import_table_wrap;",   "Import a 
table from the files (fname)" ]
 [ "sql",       "include",      "pattern sql.include(fname:str):void ", 
"SQLinclude;",  "Compile and execute a sql statements on the file"      ]
 [ "sql",       "init", "pattern sql.init():void ",     "SQLinitEnvironment;",  
"Initialize the environment for MAL"    ]
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
@@ -10698,19 +10698,15 @@ Ready.
 [ "sql",       "dec_round",    "command sql.dec_round(v:int, r:int):int ",     
"int_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "dec_round",    "command sql.dec_round(v:lng, r:lng):lng ",     
"lng_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
 [ "sql",       "dec_round",    "command sql.dec_round(v:sht, r:sht):sht ",     
"sht_dec_round_wrap;",  "round off the value v to nearests multiple of r"       
]
-[ "sql",       "declaredTable",        "pattern 
sql.declaredTable(name:str):int ",     "mvc_declared_table_wrap;",     "Prepare 
a declared table"      ]
 [ "sql",       "delete",       "pattern sql.delete(mvc:int, sname:str, 
tname:str, b:any):int ",        "mvc_delete_wrap;",     "Delete a row from a 
table. Returns sequence number for order dependece."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3]):bat[:any_3] ",     "DELTAbat2;",   "Return 
column bat with delta's applied."       ]
 [ "sql",       "delta",        "command sql.delta(col:bat[:any_3], 
uid:bat[:oid], uval:bat[:any_3], ins:bat[:any_3]):bat[:any_3] ",    
"DELTAbat;",    "Return column bat with delta's applied."       ]
 [ "sql",       "dense_rank",   "pattern sql.dense_rank(b:any_1, p:bit, 
o:bit):int ",   "SQLdense_rank;",       "return the densely ranked groups"      
]
 [ "sql",       "diff", "pattern sql.diff(b:any_1):bit ",       "SQLdiff;",     
"return true if cur != prev row"        ]
 [ "sql",       "diff", "pattern sql.diff(p:bit, b:any_1):bit ",        
"SQLdiff;",     "return true if cur != prev row"        ]
-[ "sql",       "dropDeclaredTable",    "pattern 
sql.dropDeclaredTable(name:str):void ",        "mvc_drop_declared_table_wrap;", 
       "drop a declared table" ]
-[ "sql",       "dropDeclaredTables",   "pattern 
sql.dropDeclaredTables(nr:int):void ", "mvc_drop_declared_tables_wrap;",       
"drop top n declared tables"    ]
 [ "sql",       "drop_func_upgrade_oct2014",    "pattern 
sql.drop_func_upgrade_oct2014(id:int):int ",   "UPGdrop_func;",        "Drop 
the function identified by id, needed for the Oct2014 upgrade"    ]
 [ "sql",       "drop_hash",    "pattern sql.drop_hash(sch:str, tbl:str):void 
",        "SQLdrop_hash;",        "Drop hash indices for the given table" ]
 [ "sql",       "droporderindex",       "pattern sql.droporderindex(sch:str, 
tbl:str, col:str):void ",  "sql_droporderindex;",  "Drop the order index on a 
column"      ]
-[ "sql",       "dtColumn",     "pattern sql.dtColumn(rs:int, tname:str, 
name:str, typename:str, digits:int, scale:int):void ", 
"mvc_declared_table_column_wrap;",      ""      ]
 [ "sql",       "dump_cache",   "pattern sql.dump_cache() (query:bat[:str], 
count:bat[:int]) ", "dump_cache;",  "dump the content of the query cache"   ]
 [ "sql",       "dump_opt_stats",       "pattern sql.dump_opt_stats() 
(rewrite:bat[:str], count:bat[:int]) ",   "dump_opt_stats;",      "dump the 
optimizer rewrite statistics" ]
 [ "sql",       "dump_trace",   "pattern sql.dump_trace() (event:bat[:int], 
clk:bat[:str], pc:bat[:str], thread:bat[:int], ticks:bat[:lng], 
rssMB:bat[:lng], vmMB:bat[:lng], reads:bat[:lng], writes:bat[:lng], 
minflt:bat[:lng], majflt:bat[:lng], nvcsw:bat[:lng], stmt:bat[:str]) ", 
"dump_trace;",  "dump the trace statistics"     ]
@@ -10737,6 +10733,7 @@ Ready.
 [ "sql",       "getVariable",  "pattern sql.getVariable(mvc:int, 
varname:str):any_1 ", "getVariable;", "Get the value of a session variable"   ]
 [ "sql",       "getVersion",   "command sql.getVersion(clientid:int):lng ",    
"mvc_getVersion;",      "Return the database version identifier for a client."  
]
 [ "sql",       "get_value",    "pattern sql.get_value(sname:str, 
sequence:str):lng ",  "mvc_get_value;",       "return the current value of the 
sequence"      ]
+[ "sql",       "grow", "pattern sql.grow(tid:bat[:oid], X_0:any_1):int ",      
"mvc_grow_wrap;",       "Resize the tid column of a declared table."    ]
 [ "sql",       "importTable",  "pattern sql.importTable(sname:str, tname:str, 
fname:str...):bat[:any]... ",    "mvc_bin_import_table_wrap;",   "Import a 
table from the files (fname)" ]
 [ "sql",       "include",      "pattern sql.include(fname:str):void ", 
"SQLinclude;",  "Compile and execute a sql statements on the file"      ]
 [ "sql",       "init", "pattern sql.init():void ",     "SQLinitEnvironment;",  
"Initialize the environment for MAL"    ]
diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -133,7 +133,7 @@ str
 TABLETcreate_bats(Tablet *as, BUN est)
 {
        Column *fmt = as->format;
-       BUN i;
+       BUN i, nr = 0;
 
        for (i = 0; i < as->nr_attrs; i++) {
                if (fmt[i].skip)
@@ -147,7 +147,10 @@ TABLETcreate_bats(Tablet *as, BUN est)
                        throw(SQL, "copy", "Failed to create bat of size " 
BUNFMT "\n", as->nr);
                }
                fmt[i].ci = bat_iterator(fmt[i].c);
+               nr++;
        }
+       if (!nr) 
+               throw(SQL, "copy", "At least one column should be read from the 
input\n");
        return MAL_SUCCEED;
 }
 
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -357,7 +357,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
                        stmt *r = exp_bin(be, e->l, left, right, grp, ext, cnt, 
sel);
                        return stmt_assign(be, e->name, r, 
GET_PSM_LEVEL(e->flag));
                } else if (e->flag & PSM_VAR) {
-                       if (e->f) /* TODO TABLE */
+                       if (e->f)
                                return stmt_vars(be, e->name, e->f, 1, 
GET_PSM_LEVEL(e->flag));
                        else
                                return stmt_var(be, e->name, &e->tpe, 1, 
GET_PSM_LEVEL(e->flag));
@@ -365,6 +365,8 @@ exp_bin(backend *be, sql_exp *e, stmt *l
                        sql_exp *l = e->l;
                        stmt *r = exp_bin(be, l, left, right, grp, ext, cnt, 
sel);
 
+                       if (!r)
+                               return NULL;
                        /* handle table returning functions */
                        if (l->type == e_psm && l->flag & PSM_REL) {
                                stmt *lst = r->op1;
@@ -1952,11 +1954,12 @@ rel2bin_semijoin(backend *be, sql_rel *r
                                idx = 1;
                        /* stop on first non equality join */
                        if (!join) {
+                               if (en->next && s->type != st_join && s->type 
!= st_join2 && s->type != st_joinN) 
+                                       break;
                                join = s;
                        } else if (s->type != st_join && s->type != st_join2 && 
s->type != st_joinN) {
                                /* handle select expressions */
-                               assert(0);
-                               return NULL;
+                               break;
                        }
                        if (s->type == st_join || s->type == st_join2 || 
s->type == st_joinN) { 
                                list_append(lje, s->op1);
@@ -1986,7 +1989,7 @@ rel2bin_semijoin(backend *be, sql_rel *r
                /* construct relation */
                nl = sa_list(sql->sa);
 
-               /* first project using equi-joins */
+               /* first project after equi-joins */
                for( n = left->op4.lval->h; n; n = n->next ) {
                        stmt *c = n->data;
                        const char *rnme = table_name(sql->sa, c);
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
@@ -1089,6 +1089,42 @@ str mvc_append_column(sql_trans *t, sql_
        return MAL_SUCCEED;
 }
 
+/*mvc_grow_wrap(int *bid, str *sname, str *tname, str *cname, ptr d) */
+str
+mvc_grow_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       int *res = getArgReference_int(stk, pci, 0);
+       bat Tid = *getArgReference_bat(stk, pci, 1);
+       ptr Ins = getArgReference(stk, pci, 2);
+       int tpe = getArgType(mb, pci, 2);
+       BAT *tid = 0, *ins = 0;
+       size_t cnt = 1;
+       oid v = 0;
+
+       (void)cntxt;
+       *res = 0;
+       if ((tid = BATdescriptor(Tid)) == NULL)
+               throw(SQL, "sql.grow", "Cannot access descriptor");
+       if (tpe > GDKatomcnt)
+               tpe = TYPE_bat;
+       if (tpe == TYPE_bat && (ins = BATdescriptor(*(int *) Ins)) == NULL)
+               throw(SQL, "sql.append", "Cannot access descriptor");
+       if (ins) {
+               cnt = BATcount(ins);
+               BBPunfix(ins->batCacheid);
+       }
+       if (BATcount(tid))
+               v = *Tloc(tid, BATcount(tid)-1)+1;
+       for(;cnt>0; cnt--, v++) {
+               if (BUNappend(tid, &v, FALSE) != GDK_SUCCEED) {
+                       BBPunfix(Tid);
+                       throw(SQL, "sql", MAL_MALLOC_FAIL);
+               }
+       }
+       BBPunfix(Tid);
+       return MAL_SUCCEED;
+}
+
 /*mvc_append_wrap(int *bid, str *sname, str *tname, str *cname, ptr d) */
 str
 mvc_append_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
@@ -2263,112 +2299,6 @@ mvc_table_result_wrap(Client cntxt, MalB
        return res;
 }
 
-/* str mvc_declared_table_wrap(int *res_id, str *name); */
-str
-mvc_declared_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci)
-{
-       mvc *m = NULL;
-       str msg;
-       sql_schema *s = NULL;
-       int *res_id = getArgReference_int(stk, pci, 0);
-       const char *name = *getArgReference_str(stk, pci, 1);
-
-       if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
-               return msg;
-       if ((msg = checkSQLContext(cntxt)) != NULL)
-               return msg;
-       s = mvc_bind_schema(m, dt_schema);
-       if (s == NULL)
-               throw(SQL, "sql.declared_table", SQLSTATE(3F000) "Schema 
missing %s",dt_schema);
-       (void) mvc_create_table(m, s, name, tt_table, TRUE, SQL_DECLARED_TABLE, 
CA_DROP, 0);
-       *res_id = 0;
-       return MAL_SUCCEED;
-}
-
-/* str mvc_declared_table_column_wrap(int *ret, int *rs, str *tname, str 
*name, str *type, int *digits, int *scale); */
-str
-mvc_declared_table_column_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci)
-{
-       mvc *m = NULL;
-       str msg;
-       sql_schema *s = NULL;
-       sql_table *t = NULL;
-       sql_type *type = NULL;
-       sql_subtype tpe;
-       int rs = *getArgReference_int(stk, pci, 1);
-       const char *tname = *getArgReference_str(stk, pci, 2);
-       const char *name = *getArgReference_str(stk, pci, 3);
-       const char *typename = *getArgReference_str(stk, pci, 4);
-       int digits = *getArgReference_int(stk, pci, 5);
-       int scale = *getArgReference_int(stk, pci, 6);
-
-       if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
-               return msg;
-       if ((msg = checkSQLContext(cntxt)) != NULL)
-               return msg;
-       if (rs != 0)
-               throw(SQL, "sql.dtColumn", SQLSTATE(HY005) "Cannot access 
declared table");
-       if (!sql_find_subtype(&tpe, typename, digits, scale) && (type = 
mvc_bind_type(m, typename)) == NULL)
-               throw(SQL, "sql.dtColumn", SQLSTATE(42S22) "Cannot find column 
type");
-       if (type)
-               sql_init_subtype(&tpe, type, 0, 0);
-       s = mvc_bind_schema(m, dt_schema);
-       if (s == NULL)
-               throw(SQL, "sql.declared_table_column", SQLSTATE(3F000) "Schema 
missing %s",dt_schema);
-       t = mvc_bind_table(m, s, tname);
-       if (t == NULL)
-               throw(SQL, "sql.declared_table_column", SQLSTATE(42S02) "Table 
missing");
-       (void) mvc_create_column(m, t, name, &tpe);
-       return MAL_SUCCEED;
-}
-
-str
-mvc_drop_declared_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci)
-{
-       mvc *m = NULL;
-       const char *name = *getArgReference_str(stk, pci, 1);
-       str msg;
-       sql_schema *s = NULL;
-       sql_table *t = NULL;
-
-       if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
-               return msg;
-       if ((msg = checkSQLContext(cntxt)) != NULL)
-               return msg;
-       s = mvc_bind_schema(m, dt_schema);
-       if (s == NULL)
-               throw(SQL, "sql.drop", SQLSTATE(3F000) "Schema missing 
%s",dt_schema);
-       t = mvc_bind_table(m, s, name);
-       if (t == NULL)
-               throw(SQL, "sql.drop", SQLSTATE(42S02) "Table missing");
-       (void) mvc_drop_table(m, s, t, 0);
-       return MAL_SUCCEED;
-}
-
-str
-mvc_drop_declared_tables_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci)
-{
-       mvc *m = NULL;
-       int i = *getArgReference_int(stk, pci, 1);
-       str msg;
-       sql_schema *s = NULL;
-       sql_table *t = NULL;
-
-       if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
-               return msg;
-       if ((msg = checkSQLContext(cntxt)) != NULL)
-               return msg;
-       s = mvc_bind_schema(m, dt_schema);
-       if (s == NULL)
-               throw(SQL, "sql.drop", SQLSTATE(3F000) "Schema missing 
%s",dt_schema);
-       while (i && s->tables.set->t) {
-               t = s->tables.set->t->data;
-               (void) mvc_drop_table(m, s, t, 0);
-               i--;
-       }
-       return MAL_SUCCEED;
-}
-
 /* str mvc_affected_rows_wrap(int *m, int m, lng *nr, str *w); */
 str
 mvc_affected_rows_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -67,6 +67,7 @@ sql5_export str SQLshutdown_wrap(Client 
 sql5_export str SQLtransaction2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str SQLcatalog(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 
+sql5_export str mvc_grow_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str mvc_append_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str mvc_append_column(sql_trans *t, sql_column *c, BAT *ins);
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to