Changeset: 146827d493c7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=146827d493c7 Modified Files: sql/server/rel_rel.c sql/server/rel_select.c sql/server/rel_updates.c sql/server/sql_tokens.h sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err Branch: default Log Message:
Small cleanup. Removed unused jt_union join. diffs (195 lines): 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 @@ -2057,12 +2057,10 @@ rel_visitor(mvc *sql, sql_rel *rel, rel_ return sql_error(sql, 10, SQLSTATE(42000) "Query too complex: running out of stack space"); if (!rel) - return rel; + return NULL; - if (topdown) { - if (!(rel = do_rel_visitor(sql, rel, rel_rewriter, changes, true))) - return rel; - } + if (topdown && !(rel = do_rel_visitor(sql, rel, rel_rewriter, changes, true))) + return NULL; sql_rel *(*func)(mvc *, sql_rel *, rel_rewrite_fptr, int*) = topdown ? rel_visitor_topdown : rel_visitor_bottomup; 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 @@ -370,7 +370,7 @@ query_exp_optname(sql_query *query, sql_ return rel_table_optname(sql, tq, q->data.lval->t->data.sym); } default: - (void) sql_error(sql, 02, SQLSTATE(42000) "case %d %s\n", q->token, token2string(q->token)); + (void) sql_error(sql, 02, SQLSTATE(42000) "case %d %s", q->token, token2string(q->token)); } return NULL; } @@ -1492,9 +1492,8 @@ rel_convert_types(mvc *sql, sql_rel *ll, } *L = ls; *R = rs; - if (!ls || !rs) { + if (!ls || !rs) return -1; - } return 0; } return -1; @@ -1556,10 +1555,8 @@ rel_filter(mvc *sql, sql_rel *rel, list } r = nexps; } - if (!f) { + if (!f) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: no such FILTER function '%s'", filter_op); - return NULL; - } e = exp_filter(sql->sa, l, r, f, anti); /* atom or row => select */ @@ -4053,10 +4050,8 @@ rel_groupings(sql_query *query, sql_rel if (!e) return NULL; if (e->type != e_column) { /* store group by expressions in the stack */ - if (is_sql_group_totals(f)) { - (void) sql_error(sql, 02, SQLSTATE(42000) "GROUP BY: grouping expressions not possible with ROLLUP, CUBE and GROUPING SETS"); - return NULL; - } + if (is_sql_group_totals(f)) + return sql_error(sql, 02, SQLSTATE(42000) "GROUP BY: grouping expressions not possible with ROLLUP, CUBE and GROUPING SETS"); if (!stack_push_groupby_expression(sql, grp, e)) return NULL; } @@ -5147,7 +5142,6 @@ rel_table_exp(sql_query *query, sql_rel if (!is_project((*rel)->op)) return NULL; r = rel_named_table_function( query, (*rel)->l, column_e, 0); - if (!r) return NULL; *rel = r; @@ -5195,9 +5189,8 @@ rel_table_exp(sql_query *query, sql_rel sql_exp * rel_column_exp(sql_query *query, sql_rel **rel, symbol *column_e, int f) { - if (column_e->token == SQL_COLUMN || column_e->token == SQL_IDENT) { + if (column_e->token == SQL_COLUMN || column_e->token == SQL_IDENT) return column_exp(query, rel, column_e, f); - } return NULL; } @@ -5362,7 +5355,7 @@ join_on_column_name(sql_query *query, sq node *n; nme = number2name(name, sizeof(name), nr); - if (!exps) + if (!exps || !r_exps) return NULL; for (n = exps->h; n; n = n->next) { sql_exp *le = n->data; @@ -5681,9 +5674,6 @@ rel_joinquery_(sql_query *query, sql_rel l_nil = 1; r_nil = 1; break; - case jt_union: - /* fool compiler */ - return NULL; } lateral = check_is_lateral(tab2); @@ -5712,7 +5702,7 @@ rel_joinquery_(sql_query *query, sql_rel return NULL; if (!lateral && rel_name(t1) && rel_name(t2) && strcmp(rel_name(t1), rel_name(t2)) == 0) { - sql_error(sql, 02, SQLSTATE(42000) "SELECT: '%s' on both sides of the JOIN expression;", rel_name(t1)); + sql_error(sql, 02, SQLSTATE(42000) "SELECT: '%s' on both sides of the JOIN expression", rel_name(t1)); rel_destroy(t1); rel_destroy(t2); return NULL; @@ -5723,12 +5713,10 @@ rel_joinquery_(sql_query *query, sql_rel if (lateral) set_dependent(inner); - if (js && natural) { - return sql_error(sql, 02, SQLSTATE(42000) "SELECT: cannot have a NATURAL JOIN with a join specification (ON or USING);"); - } - if (!js && !natural) { - return sql_error(sql, 02, SQLSTATE(42000) "SELECT: must have NATURAL JOIN or a JOIN with a join specification (ON or USING);"); - } + if (js && natural) + return sql_error(sql, 02, SQLSTATE(42000) "SELECT: cannot have a NATURAL JOIN with a join specification (ON or USING)"); + if (!js && !natural) + return sql_error(sql, 02, SQLSTATE(42000) "SELECT: must have NATURAL JOIN or a JOIN with a join specification (ON or USING)"); if (js && js->token != SQL_USING) { /* On sql_logical_exp */ rel = rel_logical_exp(query, rel, js, sql_where | sql_join); @@ -5746,7 +5734,7 @@ rel_joinquery_(sql_query *query, sql_rel sql_exp *rs = rel_bind_column(sql, t2, nm, sql_where, 0); if (!ls || !rs) { - sql_error(sql, 02, SQLSTATE(42000) "JOIN: tables '%s' and '%s' do not have a matching column '%s'\n", rel_name(t1)?rel_name(t1):"", rel_name(t2)?rel_name(t2):"", nm); + sql_error(sql, 02, SQLSTATE(42000) "JOIN: tables '%s' and '%s' do not have a matching column '%s'", rel_name(t1)?rel_name(t1):"", rel_name(t2)?rel_name(t2):"", nm); rel_destroy(rel); return NULL; } @@ -5872,7 +5860,7 @@ rel_unionjoinquery(sql_query *query, sql for (m = lexps->h; m; m = m->next) { sql_exp *le = m->data; sql_exp *rc = rel_bind_column(sql, rv, exp_name(le), sql_where, 0); - + if (!rc && all) break; if (rc) { 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 @@ -1582,10 +1582,8 @@ rel_import(mvc *sql, sql_table *t, const fwf_string_cur += sprintf(fwf_string_cur, LLFMT"%c", dn->data.l_val, STREAM_FWF_FIELD_SEP); ncol++; } - if(list_length(f->res) != ncol) { - (void) sql_error(sql, 02, SQLSTATE(3F000) "COPY INTO: fixed width import for %d columns but %d widths given.", list_length(f->res), ncol); - return NULL; - } + if (list_length(f->res) != ncol) + return sql_error(sql, 02, SQLSTATE(3F000) "COPY INTO: fixed width import for %d columns but %d widths given.", list_length(f->res), ncol); *fwf_string_cur = '\0'; } diff --git a/sql/server/sql_tokens.h b/sql/server/sql_tokens.h --- a/sql/server/sql_tokens.h +++ b/sql/server/sql_tokens.h @@ -182,8 +182,7 @@ typedef enum jt { jt_inner = 0, jt_left = 1, jt_right = 2, - jt_full = 3, - jt_union = 4 + jt_full = 3 } jt; #endif diff --git a/sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err b/sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err --- a/sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err +++ b/sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err @@ -12,11 +12,11 @@ stderr of test 'ambiguous_join.SF-158056 MAPI = (monetdb) /var/tmp/mtest-27483/.s.monetdb.35395 QUERY = select * from B left join B on B.id = B.id; -ERROR = !SELECT: 'b' on both sides of the JOIN expression; +ERROR = !SELECT: 'b' on both sides of the JOIN expression CODE = 42000 MAPI = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685 QUERY = select * from A, B left join B on B.id = A.id; -ERROR = !SELECT: 'b' on both sides of the JOIN expression; +ERROR = !SELECT: 'b' on both sides of the JOIN expression CODE = 42000 MAPI = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685 QUERY = select * from A, B left join B as b2 on B.id = A.id; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list