Changeset: 480f6462adf4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/480f6462adf4
Branch: default
Log Message:
merged
diffs (121 lines):
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml
b/.github/ISSUE_TEMPLATE/bug_report.yml
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -78,9 +78,9 @@ body:
attributes:
label: Please indicate if any LLM tools were used in preparing this
report.
options:
- - label: Yes, fully LLM generated
- - label: Yes, LLM assisted
- - label: Fully manual
+ - label: LLM generated
+ - label: LLM assisted
+ - label: None
validations:
required: true
- type: markdown
diff --git a/documentation/source/pipeline_join.rst
b/documentation/source/pipeline_join.rst
--- a/documentation/source/pipeline_join.rst
+++ b/documentation/source/pipeline_join.rst
@@ -19,8 +19,9 @@ Players
list_length(rel->attr) == 1: group mark join
|-> atom(TRUE): IN, EXISTS
|-> atom(FALSE): NOT IN, NOT EXISTS
- rel->exps: join and select exps
- rel->{l,r}->exps: projections exps, from rel->l to rel->r
+ rel->exps: join and selection exps
+ rel->{l,r}->exps: projections exps of {left, right}-hand side
+ rel->{l,r}->attr: join exps of {left, right}-hand side
rel->single:
rel->any:
rel->sematics:
@@ -84,8 +85,8 @@ Implementation
* Output unmatched LHS (i.e. excl. NILs)
* ``oahash.nprobe``: single column antijoin
* multicolumn antijoin:
- * with prb-side NULLs: single-column hash-table, multicolumn probe
- * without NULLs: inner-probe + select FALSE
+ * without NULLs: inner-probe + diff
+ * with NULLs: first-column hash-table, probe payloads
* Single join
* TODO: which queries use single join?
diff --git a/sql/backends/monet5/rel_pphash.c b/sql/backends/monet5/rel_pphash.c
--- a/sql/backends/monet5/rel_pphash.c
+++ b/sql/backends/monet5/rel_pphash.c
@@ -130,10 +130,8 @@ oahash_slicer(backend *be, stmt *sub)
/* Generates the parallel block to probe the hash table
*/
static stmt *
-oahash_probe(backend *be, sql_rel *rel, list *jexps, list *exps_cmp_prb, const
stmt *stmts_ht, stmt *sub, bool anti, bool outer, bool groupjoin, bool
has_outerselect, stmt **nulls, stmt **prb_mrk)
+oahash_probe(backend *be, sql_rel *rel, list *jexps, list *exps_cmp_prb, const
stmt *stmts_ht, stmt *sub, bool anti, bool groupjoin, bool has_outerselect,
stmt **nulls, stmt **prb_mrk)
{
- (void) outer;
-
stmt *prb_res = NULL, *outerm = NULL;
bool has_leftouter = (rel->op == op_left || rel->op == op_full /*||
(rel->op == op_right && rel->oahash == 1)*/);
@@ -151,7 +149,6 @@ oahash_probe(backend *be, sql_rel *rel,
prb_res = stmt_oahash_probe(be, key, prb_res, m->data,
stmts_ht->op3, outerm, single, e2->semantics, eq, has_leftouter, grpjoin);
if (prb_res == NULL) return NULL;
- //if (outer || grpjoin) {
if (has_leftouter || grpjoin) {
assert (prb_res->q->retc >= 2);
outerm = stmt_blackbox_result(be, prb_res->q, 2,
sql_fetch_localtype(TYPE_bit));
@@ -160,7 +157,6 @@ oahash_probe(backend *be, sql_rel *rel,
if (nulls && stmt_has_null(key) && is_any(e2))
*nulls = stmt_selectnil(be, key, *nulls);
}
- //if ((outer || groupjoin) && outerm)
if ((has_leftouter || groupjoin) && outerm)
*prb_mrk = outerm;
/* probe of last column is the final res */
@@ -416,8 +412,7 @@ rel2bin_oahash_equi_join(backend *be, sq
if (probe_sub)
*probe_sub = sub;
- bit outer = is_outerjoin(rel->op);
- stmt *prb_res = oahash_probe(be, rel, jexps, exps_cmp_prb, stmts_ht,
sub, false, outer, mark, has_outerselect, nulls, prb_mrk);
+ stmt *prb_res = oahash_probe(be, rel, jexps, exps_cmp_prb, stmts_ht,
sub, false /*anti*/, mark/*groupjoin*/, has_outerselect, nulls, prb_mrk);
if (prb_res == NULL) return NULL;
/*** PROJECT RESULT PHASE ***/
@@ -425,6 +420,7 @@ rel2bin_oahash_equi_join(backend *be, sq
list *lp = oahash_project_prb(be, exps_prj_prb, prb_res, stmts_ht->op3,
leftouter, sub, probed_rowids);
list *lh = oahash_project_hsh(be, exps_prj_hsh, stmts_ht, prb_res,
leftouter, hsh_mrk);
+ bit outer = is_outerjoin(rel->op);
/* !exps_prj_hsh => !shared_hp => mark the last hash-column instead of
a payload column */
if (outer && hsh_mrk && !*hsh_mrk) {
assert(list_empty(exps_prj_hsh));
@@ -1340,7 +1336,7 @@ rel2bin_oahash_semi(backend *be, sql_rel
probe_sub = sub = _start_pp(be, rel_prb->l, false, refs, NULL);
if (!sub) return NULL;
- stmt *prb_res = oahash_probe(be, rel, rel->exps, exps_cmp_prb,
stmts_ht, sub, anti, false, false, !list_empty(sexps), &nulls, NULL);
+ stmt *prb_res = oahash_probe(be, rel, rel->exps, exps_cmp_prb,
stmts_ht, sub, anti, false/*groupjoin*/, !list_empty(sexps)/*has_outerselect*/,
&nulls, NULL);
if (prb_res == NULL) return NULL;
/*** PROJECT RESULT PHASE ***/
diff --git a/sql/backends/monet5/vaults/parquet/pqc_reader.c
b/sql/backends/monet5/vaults/parquet/pqc_reader.c
--- a/sql/backends/monet5/vaults/parquet/pqc_reader.c
+++ b/sql/backends/monet5/vaults/parquet/pqc_reader.c
@@ -780,7 +780,7 @@ pqc_page_header( pqc_reader_t *r, pqc_cr
}
#ifdef WORDS_BIGENDIAN
if (num_values && (r->pse->type == inttype || r->pse->type ==
floattype)) {
- char *s = pr->dict;
+ unsigned char *s = (unsigned char*)pr->dict;
if (r->pse->size == 16)
for(uint32_t i = 0; i < num_values; i++,
s+=sizeof(uint16_t))
*(uint16_t*)s = pqc_sht(get_uint16(s));
@@ -2070,7 +2070,7 @@ pqc_read_page_chunk( pqc_reader_t *r, pq
pos += (r->pse->size/8)*nrows;
#ifdef WORDS_BIGENDIAN
if (nrows && (r->pse->type ==
inttype || r->pse->type == floattype)) {
- char *s = output;
+ unsigned char *s =
output;
if (r->pse->size == 16)
for(uint32_t i
= 0; i < nrows; i++, s+=sizeof(uint16_t))
*(uint16_t*)s = pqc_sht(get_uint16(s));
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]