MonetDB: Jan2022 - Compilation fix

2022-02-11 Thread Pedro Ferreira
Changeset: 71c355de61eb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/71c355de61eb
Modified Files:
sql/server/rel_updates.c
Branch: Jan2022
Log Message:

Compilation fix


diffs (12 lines):

diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -399,7 +399,7 @@ rel_inserts(mvc *sql, sql_table *t, sql_
sql_exp *e = inserts[c->colnr];
assert(is_values(e));
list *vals = e->f;
-   append(p->exps, list_fetch(vals, j));
+   append(p->exps, list_fetch(vals, (int) j));
}
if (c) {
c = rel_setop(sql->sa, c, p, op_union);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Use relation inplacement at outer2inner_union...

2022-02-11 Thread Pedro Ferreira
Changeset: c5fa877c43fa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c5fa877c43fa
Modified Files:
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_rel.h
sql/server/rel_unnest.c
Branch: default
Log Message:

Use relation inplacement at outer2inner_union, so it will be safe to rewrite 
when the input relation has more than 1 reference


diffs (243 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -9839,14 +9839,7 @@ rel_setjoins_2_joingroupby(visitor *v, s
list *lexps = rel_projections(v->sql, l, NULL, 1, 1);
aexps = list_merge(aexps, lexps, (fdup)NULL);
if (rel_is_ref(rel)) {
-   sql_rel *l = rel_create(v->sql->sa);
-   if (!l)
-   return NULL;
-   *l = *rel;
-   /* properly increment the ref counts */
-   rel_dup(rel->l);
-   rel_dup(rel->r);
-   l->ref.refcnt = 1;
+   sql_rel *l = rel_dup_copy(v->sql->sa, rel);
rel = rel_inplace_groupby(rel, l, 
list_append(sa_list(v->sql->sa), exp_ref(v->sql, lid)), aexps);
} else {
rel = rel_groupby(v->sql, rel, 
list_append(sa_list(v->sql->sa), exp_ref(v->sql, lid)));
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -556,6 +556,55 @@ rel_inplace_groupby(sql_rel *rel, sql_re
return rel;
 }
 
+/* this function is to be used with the above rel_inplace_* functions */
+sql_rel *
+rel_dup_copy(sql_allocator *sa, sql_rel *rel)
+{
+   sql_rel *nrel = rel_create(sa);
+
+   if (!nrel)
+   return NULL;
+   *nrel = *rel;
+   nrel->ref.refcnt = 1;
+   switch(nrel->op){
+   case op_basetable:
+   case op_ddl:
+   break;
+   case op_table:
+   if ((IS_TABLE_PROD_FUNC(nrel->flag) || nrel->flag == 
TABLE_FROM_RELATION) && nrel->l)
+   rel_dup(nrel->l);
+   break;
+   case op_join:
+   case op_left:
+   case op_right:
+   case op_full:
+   case op_semi:
+   case op_anti:
+   case op_union:
+   case op_inter:
+   case op_except:
+   case op_insert:
+   case op_update:
+   case op_delete:
+   case op_merge:
+   if (nrel->l)
+   rel_dup(nrel->l);
+   if (nrel->r)
+   rel_dup(nrel->r);
+   break;
+   case op_project:
+   case op_groupby:
+   case op_select:
+   case op_topn:
+   case op_sample:
+   case op_truncate:
+   if (nrel->l)
+   rel_dup(nrel->l);
+   break;
+   }
+   return nrel;
+}
+
 sql_rel *
 rel_setop(sql_allocator *sa, sql_rel *l, sql_rel *r, operator_type setop)
 {
diff --git a/sql/server/rel_rel.h b/sql/server/rel_rel.h
--- a/sql/server/rel_rel.h
+++ b/sql/server/rel_rel.h
@@ -74,6 +74,7 @@ extern sql_rel *rel_inplace_setop(mvc *s
 extern sql_rel *rel_inplace_project(sql_allocator *sa, sql_rel *rel, sql_rel 
*l, list *e);
 extern sql_rel *rel_inplace_select(sql_rel *rel, sql_rel *l, list *exps);
 extern sql_rel *rel_inplace_groupby(sql_rel *rel, sql_rel *l, list 
*groupbyexps, list *exps );
+extern sql_rel *rel_dup_copy(sql_allocator *sa, sql_rel *rel);
 
 extern int rel_convert_types(mvc *sql, sql_rel *ll, sql_rel *rr, sql_exp **L, 
sql_exp **R, int scale_fixing, check_type tpe);
 extern sql_rel *rel_setop(sql_allocator *sa, sql_rel *l, sql_rel *r, 
operator_type setop);
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -2192,13 +2192,7 @@ aggrs_split_funcs(mvc *sql, sql_rel *rel
}
if (!list_empty(projs)) {
/* the grouping relation may have more than 1 
reference, a replacement is needed */
-   sql_rel *l = rel_create(sql->sa);
-   if (!l)
-   return NULL;
-   *l = *rel;
-   /* increment the refcount of the left relation */
-   rel_dup(rel->l);
-   l->ref.refcnt = 1;
+   sql_rel *l = rel_dup_copy(sql->sa, rel);
list *nexps = list_merge(rel_projections(sql, l, NULL, 
1, 1), projs, NULL);
rel = rel_inplace_project(sql->sa, rel, l, nexps);
rel->card = exps_card(nexps);
@@ -3722,70 +3716,68 @@ rewrite_outer2inner_union(visitor *v, sq
 {
if (is_outerjoin(rel->op) && !is_rew

MonetDB: default - Merged with Jan2022

2022-02-11 Thread Pedro Ferreira
Changeset: 5cbd8603a03b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5cbd8603a03b
Modified Files:
sql/server/rel_updates.c
Branch: default
Log Message:

Merged with Jan2022


diffs (12 lines):

diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -400,7 +400,7 @@ rel_inserts(mvc *sql, sql_table *t, sql_
sql_exp *e = inserts[c->colnr];
assert(is_values(e));
list *vals = e->f;
-   append(p->exps, list_fetch(vals, j));
+   append(p->exps, list_fetch(vals, (int) j));
}
if (c) {
c = rel_setop(sql->sa, c, p, op_union);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: embedded_mapi - Add host field to mapi server options i...

2022-02-11 Thread Aris Koning
Changeset: 117b17ffd354 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/117b17ffd354
Modified Files:
tools/monetdbe/monetdbe.c
tools/monetdbe/monetdbe.h
Branch: embedded_mapi
Log Message:

Add host field to mapi server options in monetdbe.


diffs (42 lines):

diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -646,8 +646,18 @@ monetdbe_startup(monetdbe_database_inter
 
if (opts && opts->mapi_server) {
/*This monetdbe instance wants to listen to external mapi 
client connections.*/
-   with_mapi_server = true;
+   if (opts->mapi_server->host) {
+   with_mapi_server = true;
+   int psetlen = setlen;
+   setlen = mo_add_option(&set, setlen, opt_cmdline, 
"mapi_listenaddr", opts->mapi_server->host);
+   if (setlen == psetlen) {
+   mo_free_options(set, setlen);
+   set_error(mdbe, createException(MAL, 
"monetdbe.monetdbe_startup", MAL_MALLOC_FAIL));
+   goto cleanup;
+   }
+   }
if (opts->mapi_server->port) {
+   with_mapi_server = true;
int psetlen = setlen;
setlen = mo_add_option(&set, setlen, opt_cmdline, 
"mapi_port", opts->mapi_server->port);
if (setlen == psetlen) {
@@ -657,6 +667,7 @@ monetdbe_startup(monetdbe_database_inter
}
}
if (opts->mapi_server->usock) {
+   with_mapi_server = true;
int psetlen = setlen;
setlen = mo_add_option(&set, setlen, opt_cmdline, 
"mapi_usock", opts->mapi_server->usock);
if (setlen == psetlen) {
diff --git a/tools/monetdbe/monetdbe.h b/tools/monetdbe/monetdbe.h
--- a/tools/monetdbe/monetdbe.h
+++ b/tools/monetdbe/monetdbe.h
@@ -103,6 +103,7 @@ typedef struct {
 } monetdbe_remote;
 
 typedef struct {
+   const char *host;
const char* port;
const char* usock;
 } monetdbe_mapi_server;
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: embedded_mapi - Add API method to retrieve mapi port nu...

2022-02-11 Thread Aris Koning
Changeset: b5b300529d49 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b5b300529d49
Modified Files:
tools/monetdbe/monetdbe.c
tools/monetdbe/monetdbe.h
Branch: embedded_mapi
Log Message:

Add API method to retrieve mapi port number from embedded mapi server.


diffs (23 lines):

diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -2842,3 +2842,8 @@ timestamp_from_data(monetdbe_data_timest
date_create(ptr->date.year, ptr->date.month, ptr->date.day),
daytime_create(ptr->time.hours, ptr->time.minutes, 
ptr->time.seconds, ptr->time.ms * 1000));
 }
+
+const char*
+monetdbe_get_mapi_port(void) {
+   return GDKgetenv("mapi_port");
+}
diff --git a/tools/monetdbe/monetdbe.h b/tools/monetdbe/monetdbe.h
--- a/tools/monetdbe/monetdbe.h
+++ b/tools/monetdbe/monetdbe.h
@@ -180,6 +180,7 @@ monetdbe_export char* monetdbe_get_colum
 
 monetdbe_export char* monetdbe_dump_database(monetdbe_database dbhdl, const 
char *backupfile);
 monetdbe_export char* monetdbe_dump_table(monetdbe_database dbhdl, const char 
*schema_name, const char *table_name, const char *backupfile);
+monetdbe_export const char* monetdbe_get_mapi_port(void);
 
 #ifdef __cplusplus
 }
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org