Changeset: bbb5d28999d8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bbb5d28999d8 Modified Files: sql/server/rel_select.c Branch: linear-hashing Log Message:
Defensive lines diffs (58 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 @@ -452,6 +452,9 @@ score_func( sql_subfunc *sf, list *tl) sql_arg *a = n->data; sql_subtype *t = m->data; + if (!t) + continue; + if (a->type.type->eclass == EC_ANY) score += 100; else if (is_subtype(t, &a->type)) @@ -516,7 +519,7 @@ find_table_function_type(mvc *sql, sql_s atp = t; aa = a; } - if (aa && a->type.type->eclass == EC_ANY && + if (aa && a->type.type->eclass == EC_ANY && t && atp && t->type->localtype > atp->type->localtype){ atp = t; aa = a; @@ -527,7 +530,7 @@ find_table_function_type(mvc *sql, sql_s sql_exp *e = n->data; sql_subtype *ntp = &a->type; - if (a->type.type->eclass == EC_ANY) + if (a->type.type->eclass == EC_ANY && atp) ntp = sql_create_subtype(sql->sa, atp->type, atp->digits, atp->scale); e = rel_check_type(sql, ntp, NULL, e, type_equal); if (!e) { @@ -1890,7 +1893,7 @@ static sql_exp* atp = t; aa = a; } - if (aa && a->type.type->eclass == EC_ANY && + if (aa && a->type.type->eclass == EC_ANY && t && atp && t->type->localtype > atp->type->localtype){ atp = t; aa = a; @@ -1901,7 +1904,7 @@ static sql_exp* sql_exp *e = n->data; sql_subtype *ntp = &a->type; - if (a->type.type->eclass == EC_ANY) + if (a->type.type->eclass == EC_ANY && atp) ntp = sql_create_subtype(sql->sa, atp->type, atp->digits, atp->scale); e = rel_check_type(sql, ntp, rel, e, type_equal); if (!e) { @@ -1916,7 +1919,7 @@ static sql_exp* append(nexps, e); } /* dirty hack */ - if (f->res && aa) + if (f->res && aa && atp) f->res->h->data = sql_create_subtype(sql->sa, atp->type, atp->digits, atp->scale); if (nexps) return exp_op(sql->sa, nexps, f); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list