MonetDB: Jun2020 - Merged with linear-hashing
Changeset: 266ffd6ecc84 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=266ffd6ecc84 Modified Files: sql/server/rel_propagate.c sql/server/rel_psm.c sql/server/rel_select.c sql/server/rel_updates.c sql/test/pg_regress/Tests/alter_table.stable.err Branch: Jun2020 Log Message: Merged with linear-hashing diffs (121 lines): diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c --- a/sql/server/rel_propagate.c +++ b/sql/server/rel_propagate.c @@ -34,11 +34,12 @@ rel_generate_anti_expression(mvc *sql, s *anti_rel = rel_project(sql->sa, *anti_rel, NULL); if (!(res = rel_parse_val(sql, sa_message(sql->sa, "select %s;", mt->part.pexp->exp), sql->emode, (*anti_rel)->l))) return NULL; - exp_label(sql->sa, res, ++sql->label); } else { assert(0); } (*anti_rel)->exps = new_exp_list(sql->sa); + if (!exp_name(res)) + exp_label(sql->sa, res, ++sql->label); append((*anti_rel)->exps, res); res = exp_ref(sql->sa, res); return res; @@ -58,9 +59,11 @@ rel_create_common_relation(mvc *sql, sql inserts = ((sql_rel*)(rel->r))->l; for (node *n = t->columns.set->h, *m = inserts->exps->h; n && m; n = n->next, m = m->next) { sql_column *col = n->data; - sql_exp *before = m->data; - sql_exp *help = exp_ref(sql->sa, before); + sql_exp *before = m->data, *help; + if (!exp_name(before)) + exp_label(sql->sa, before, ++sql->label); + help = exp_ref(sql->sa, before); exp_setname(sql->sa, help, t->base.name, col->base.name); list_append(l, help); } @@ -86,9 +89,11 @@ rel_generate_anti_insert_expression(mvc inserts = inserts->l; for (node *n = t->columns.set->h, *m = inserts->exps->h; n && m; n = n->next, m = m->next) { sql_column *col = n->data; - sql_exp *before = m->data; - sql_exp *help = exp_ref(sql->sa, before); + sql_exp *before = m->data, *help; + if (!exp_name(before)) + exp_label(sql->sa, before, ++sql->label); + help = exp_ref(sql->sa, before); exp_setname(sql->sa, help, t->base.name, col->base.name); list_append(l, help); } @@ -106,6 +111,8 @@ rel_generate_anti_insert_expression(mvc } else { assert(0); } + if (!exp_name(res)) + exp_label(sql->sa, res, ++sql->label); res = exp_ref(sql->sa, res); return res; } diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -478,8 +478,11 @@ rel_psm_return( sql_query *query, sql_su if (!cname) cname = sa_strdup(sql->sa, number2name(name, sizeof(name), ++sql->label)); - if (!isproject) + if (!isproject) { + if (!exp_name(e)) + exp_label(sql->sa, e, ++sql->label); e = exp_ref(sql->sa, e); + } e = rel_check_type(sql, &ce->type, oexps_rel, e, type_equal); if (!e) return NULL; 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 @@ -4385,6 +4385,8 @@ rel_order_by(sql_query *query, sql_rel * e = exps_get_exp(rel->exps, nr); if (!e) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: the order by column number (%d) is not in the number of projections range (%d)", nr, list_length(rel->exps)); + if (!exp_name(e)) + exp_label(sql->sa, e, ++sql->label); e = exp_ref(sql->sa, e); /* do not cache this query */ if (e) @@ -5094,7 +5096,7 @@ rel_value_exp2(sql_query *query, sql_rel if (!exp_name(exp)) exp_label(sql->sa, exp, ++sql->label); - res = exp_ref(sql->sa, exp); + res = exp_ref(sql->sa, exp); res->card = (*rel)->card;
MonetDB: Jun2020 - Merged with linear-hashing
Changeset: 3d58e1ccd3f8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3d58e1ccd3f8 Added Files: sql/test/merge-partitions/Tests/mergepart30.sql sql/test/merge-partitions/Tests/mergepart30.stable.err sql/test/merge-partitions/Tests/mergepart30.stable.out Modified Files: sql/backends/monet5/sql_cat.c sql/server/rel_schema.c sql/test/merge-partitions/Tests/All sql/test/merge-partitions/Tests/mergepart23.stable.err Branch: Jun2020 Log Message: Merged with linear-hashing diffs (175 lines): diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c --- a/sql/backends/monet5/sql_cat.c +++ b/sql/backends/monet5/sql_cat.c @@ -162,6 +162,8 @@ validate_alter_table_add_table(mvc *sql, node *n = cs_find_id(&rmt->members, rpt->base.id); if (isView(rpt)) throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: can't add a view into a %s", errtable); + if (isDeclaredTable(rpt)) + throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: can't add a declared table into a %s", errtable); if (ms->base.id != ps->base.id) throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: all children tables of '%s.%s' must be part of schema '%s'", msname, mtname, msname); if (n && !update) @@ -182,9 +184,13 @@ alter_table_add_table(mvc *sql, char *ms sql_table *mt = NULL, *pt = NULL; str msg = validate_alter_table_add_table(sql, "sql.alter_table_add_table", msname, mtname, psname, ptname, &mt, &pt, 0); - if (msg == MAL_SUCCEED) + if (msg == MAL_SUCCEED) { + if (isRangePartitionTable(mt)) + return createException(SQL, "sql.alter_table_add_table",SQLSTATE(42000) "ALTER TABLE: a range partition is required while adding under a range partition table"); + if (isListPartitionTable(mt)) + return createException(SQL, "sql.alter_table_add_table",SQLSTATE(42000) "ALTER TABLE: a value partition is required while adding under a list partition table"); sql_trans_add_table(sql->session->tr, mt, pt); - + } return msg; } @@ -206,11 +212,11 @@ alter_table_add_range_partition(mvc *sql } else if (!isRangePartitionTable(mt)) { msg = createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(42000) "ALTER TABLE: cannot add range partition into a %s table", - (mt->type == tt_merge_table)?"merge":"list partition"); + (isListPartitionTable(mt))?"list partition":"merge"); goto finish; } else if (!update && pt->p) { msg = createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(42000) - "ALTER TABLE: table %s.%s is already part of another range partition table", + "ALTER TABLE: table '%s.%s' is already part of another table", psname, ptname); goto finish; } @@ -302,11 +308,11 @@ alter_table_add_value_partition(mvc *sql } else if (!isListPartitionTable(mt)) { msg = createException(SQL,"sql.alter_table_add_value_partition",SQLSTATE(42000) "ALTER TABLE: cannot add value partition into a %s table", - (mt->type == tt_merge_table)?"merge":"range partition"); + (isRangePartitionTable(mt))?"range partition":"merge"); goto finish; } else if (!update && pt->p) { msg = createException(SQL,"sql.alter_table_add_value_partition",SQLSTATE(42000) - "ALTER TABLE: table %s.%s is already part of another list partition table", + "ALTER TABLE: table '%s.%s' is already part of another table", psname, ptname); goto finish; } diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1475,12 +1475,22 @@ sql_alter_table(sql_query *query, dlist if (isView(pt)) return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: can't add a view into a %s", TABLE_TYPE_DESCRIPTION(t->type, t->properties)); + if (isDeclared
MonetDB: Jun2020 - Merged with linear-hashing
Changeset: b025af69aa7d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b025af69aa7d Modified Files: sql/backends/monet5/sql_gencode.c Branch: Jun2020 Log Message: Merged with linear-hashing diffs (78 lines): diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -689,9 +689,10 @@ backend_dumpstmt(backend *be, MalBlkPtr MalBlkPtr old_mb = be->mb; stmt *s; - // Always keep the SQL query around for monitoring + /* Always keep the SQL query around for monitoring */ + if (query) { + char *escaped_q; - if (query) { while (*query && isspace((unsigned char) *query)) query++; @@ -702,25 +703,21 @@ backend_dumpstmt(backend *be, MalBlkPtr } setVarType(mb, getArg(q, 0), TYPE_void); setVarUDFtype(mb, getArg(q, 0)); - q = pushStr(mb, q, query); + if (!(escaped_q = sql_escape_str((char*) query))) { + sql_error(m, 001, SQLSTATE(HY013) MAL_MALLOC_FAIL); + return -1; + } + q = pushStr(mb, q, escaped_q); + GDKfree(escaped_q); + if (q == NULL) { + sql_error(m, 001, SQLSTATE(HY013) MAL_MALLOC_FAIL); + return -1; + } q = pushStr(mb, q, getSQLoptimizer(be->mvc)); if (q == NULL) { sql_error(m, 001, SQLSTATE(HY013) MAL_MALLOC_FAIL); return -1; } - -/* Crashes - q = newStmt(mb, querylogRef, contextRef); - if (q == NULL) { - return -1; - } - setVarType(mb, getArg(q, 0), TYPE_void); - setVarUDFtype(mb, getArg(q, 0)); - q = pushStr(mb, q, GDKgetenv("monet_release")); - q = pushStr(mb, q, GDKgetenv("monet_version")); - q = pushStr(mb, q, GDKgetenv("revision")); - q = pushStr(mb, q, GDKgetenv("merovingian_uri")); -*/ } /* announce the transaction mode */ @@ -820,7 +817,7 @@ backend_dumpproc(backend *be, Client c, Symbol curPrg = 0, backup = NULL; InstrPtr curInstr = 0; int argc = 0, res; - char arg[IDLENGTH], *escaped_q = NULL; + char arg[IDLENGTH]; node *n; backup = c->curprg; @@ -895,15 +892,7 @@ backend_dumpproc(backend *be, Client c, } } - if (be->q) { - if (!(escaped_q = sql_escape_str(be->q->codestring))) { - sql_error(m, 001, SQLSTATE(HY013) MAL_MALLOC_FAIL); - goto cleanup; - } - } - res = backend_dumpstmt(be, mb, r, 1, 1, escaped_q); - GDKfree(escaped_q); - if (res < 0) + if ((res = backend_dumpstmt(be, mb, r, 1, 1, be->q ? be->q->codestring : NULL)) < 0) goto cleanup; if (cq) { ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list