MonetDB: Dec2016 - fix for bug 6310, ie properly use the left pa...

Martin Kersten martin.kersten at cwi.nl
Sat May 13 11:06:33 CEST 2017


That's quick.
I am using Jul2017 for testing sqlsmith

please roll forward and I'll hunt for the next one.

FYI on rocks006 /export/scratch1/home/mk/ssmonetdb
you find the current output of ?160K queries (still running)

grep ERROR output|sort -u
gives the list that triggers the one I found.
There are a few more to be investigated (after grocery shopping), e.g.

ERROR = !Can not access column
ERROR = !can not access index column
ERROR = !Can not create object
ERROR = !exist operator on type clob missing
ERROR = !exist operator on type int missing
ERROR = !exist operator on type varchar missing
ERROR = !Illegal argument
ERROR = !Object not found



On 13/05/2017 11:00, Niels Nes wrote:
> Changeset: fea5dccda850 for MonetDB
> URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fea5dccda850
> Modified Files:
> 	sql/server/rel_select.c
> Branch: Dec2016
> Log Message:
>
> fix for bug 6310, ie properly use the left part of a lateral join,
> when the left part isn't used in the right part.
>
>
> diffs (29 lines):
>
> diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
> --- a/sql/server/rel_select.c
> +++ b/sql/server/rel_select.c
> @@ -4902,7 +4902,7 @@ rel_query(mvc *sql, sql_rel *rel, symbol
>  		sql_rel *fnd = NULL;
>
>  		for (n = fl->h; n ; n = n->next) {
> -			int lateral = check_is_lateral(n->data.sym);
> +			int lateral = check_is_lateral(n->data.sym), lateral_used = 0;
>
>  			fnd = table_ref(sql, NULL, n->data.sym, 0);
>  			if (!fnd && (rel || lateral) && sql->session->status != -ERR_AMBIGUOUS) {
> @@ -4926,6 +4926,7 @@ rel_query(mvc *sql, sql_rel *rel, symbol
>  					fnd = table_ref(sql, res, n->data.sym, lateral);
>  					if (fnd && is_project(fnd->op))
>  						fnd->exps = list_merge(fnd->exps, pre_exps, (fdup)NULL);
> +					lateral_used = 1;
>  				} else {
>  					fnd = table_ref(sql, rel, n->data.sym, 0);
>  				}
> @@ -4934,7 +4935,7 @@ rel_query(mvc *sql, sql_rel *rel, symbol
>
>  			if (!fnd)
>  				break;
> -			if (res && !lateral)
> +			if (res && !lateral_used)
>  				res = rel_crossproduct(sql->sa, res, fnd, op_join);
>  			else
>  				res = fnd;
> _______________________________________________
> checkin-list mailing list
> checkin-list at monetdb.org
> https://www.monetdb.org/mailman/listinfo/checkin-list
>


More information about the developers-list mailing list