Changeset: dd96080921be for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dd96080921be Modified Files: sql/backends/monet5/sql.c Branch: default Log Message:
Merge with Jul2015 branch. diffs (truncated from 597 to 300 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -483,7 +483,7 @@ table_has_updates(sql_trans *tr, sql_tab return -1; cnt |= BATcount(b) > 0; if (isTable(t) && t->access != TABLE_READONLY && (t->base.flag != TR_NEW /* alter */ ) && - t->persistence == SQL_PERSIST && !t->commit_action) + t->persistence == SQL_PERSIST && !t->commit_action) cnt |= store_funcs.count_col(tr, c, 0) > 0; BBPunfix(b->batCacheid); } @@ -539,7 +539,7 @@ alter_table(mvc *sql, char *sname, sql_t /* for non empty check for nulls */ if (c->null == 0) { void *nilptr = ATOMnilptr(c->type.type->localtype); - rids *nils = table_funcs.rids_select(sql->session->tr, nc, nilptr, NULL, NULL); + rids *nils = table_funcs.rids_select(sql->session->tr, nc, nilptr, NULL, NULL); int has_nils = (table_funcs.rids_next(nils) != oid_nil); table_funcs.rids_destroy(nils); @@ -551,7 +551,7 @@ alter_table(mvc *sql, char *sname, sql_t mvc_default(sql, nc, c->def); if (c->storage_type != nc->storage_type) { - if (c->t->access == TABLE_WRITABLE) + if (c->t->access == TABLE_WRITABLE) return sql_message("40002!ALTER TABLE: SET STORAGE for column %s.%s only allowed on READ or INSERT ONLY tables", c->t->base.name, c->base.name); nc->base.rtime = nc->base.wtime = sql->session->tr->wtime; mvc_storage(sql, nc, c->storage_type); @@ -641,7 +641,7 @@ drop_table(mvc *sql, char *sname, char * } if (!drop_action && mvc_check_dependency(sql, t->base.id, TABLE_DEPENDENCY, NULL)) - return sql_message("42000!DROP TABLE: unable to drop table %s (there are database objects which depend on it)\n", t->base.name); + return sql_message("42000!DROP TABLE: unable to drop table %s (there are database objects which depend on it)\n", t->base.name); mvc_drop_table(sql, s, t, drop_action); return MAL_SUCCEED; @@ -692,7 +692,7 @@ drop_key(mvc *sql, char *sname, char *kn if ((key = mvc_bind_key(sql, ss, kname)) == NULL) return sql_message("42000!ALTER TABLE: no such constraint '%s'", kname); if (!drop_action && mvc_check_dependency(sql, key->base.id, KEY_DEPENDENCY, NULL)) - return sql_message("42000!ALTER TABLE: cannot drop constraint '%s': there are database objects which depend on it", key->base.name); + return sql_message("42000!ALTER TABLE: cannot drop constraint '%s': there are database objects which depend on it", key->base.name); mvc_drop_key(sql, ss, key, drop_action); return MAL_SUCCEED; } @@ -773,7 +773,7 @@ drop_seq(mvc *sql, char *sname, char *na return sql_message("42000!DROP SEQUENCE: insufficient privileges for '%s' in schema '%s'", stack_get_string(sql, "current_user"), s->base.name); } if (mvc_check_dependency(sql, seq->base.id, BEDROPPED_DEPENDENCY, NULL)) - return sql_message("2B000!DROP SEQUENCE: unable to drop sequence %s (there are database objects which depend on it)\n", seq->base.name); + return sql_message("2B000!DROP SEQUENCE: unable to drop sequence %s (there are database objects which depend on it)\n", seq->base.name); sql_trans_drop_sequence(sql->session->tr, s, seq, 0); return NULL; @@ -803,7 +803,7 @@ drop_func(mvc *sql, char *sname, char *n return sql_message("DROP %s%s: access denied for %s to schema ;'%s'", KF, F, stack_get_string(sql, "current_user"), s->base.name); } if (!action && mvc_check_dependency(sql, func->base.id, !IS_PROC(func) ? FUNC_DEPENDENCY : PROC_DEPENDENCY, NULL)) - return sql_message("DROP %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, f, func->base.name); + return sql_message("DROP %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, f, func->base.name); mvc_drop_func(sql, s, func, action); } @@ -887,7 +887,7 @@ UPGdrop_func(Client cntxt, MalBlkPtr mb, return msg; func = sql_trans_find_func(sql->session->tr, id); - if (func) + if (func) mvc_drop_func(sql, func->s, func, 0); return msg; } @@ -1026,25 +1026,25 @@ rel_check_tables(sql_table *nt, sql_tabl { node *n, *m; - if (cs_size(&nt->columns) != cs_size(&nnt->columns)) + if (cs_size(&nt->columns) != cs_size(&nnt->columns)) return sql_message("3F000!ALTER MERGE TABLE: to be added table doesn't match MERGE TABLE definition"); for (n = nt->columns.set->h, m = nnt->columns.set->h; n && m; n = n->next, m = m->next) { sql_column *nc = n->data; sql_column *mc = m->data; - if (subtype_cmp(&nc->type, &mc->type) != 0) + if (subtype_cmp(&nc->type, &mc->type) != 0) return sql_message("3F000!ALTER MERGE TABLE: to be added table column type doesn't match MERGE TABLE definition"); } - if (cs_size(&nt->idxs) != cs_size(&nnt->idxs)) + if (cs_size(&nt->idxs) != cs_size(&nnt->idxs)) return sql_message("3F000!ALTER MERGE TABLE: to be added table index doesn't match MERGE TABLE definition"); if (cs_size(&nt->idxs)) - for (n = nt->idxs.set->h, m = nnt->idxs.set->h; n && m; n = n->next, m = m->next) { - sql_idx *ni = n->data; - sql_idx *mi = m->data; - - if (ni->type != mi->type) - return sql_message("3F000!ALTER MERGE TABLE: to be added table index type doesn't match MERGE TABLE definition"); - } + for (n = nt->idxs.set->h, m = nnt->idxs.set->h; n && m; n = n->next, m = m->next) { + sql_idx *ni = n->data; + sql_idx *mi = m->data; + + if (ni->type != mi->type) + return sql_message("3F000!ALTER MERGE TABLE: to be added table index type doesn't match MERGE TABLE definition"); + } return MAL_SUCCEED; } @@ -1052,7 +1052,7 @@ static char * alter_table_add_table(mvc *sql, char *msname, char *mtname, char *psname, char *ptname) { sql_schema *ms = mvc_bind_schema(sql, msname), *ps = mvc_bind_schema(sql, psname); - sql_table *mt = NULL, *pt = NULL; + sql_table *mt = NULL, *pt = NULL; if (ms) mt = mvc_bind_table(sql, ms, mtname); @@ -1061,7 +1061,7 @@ alter_table_add_table(mvc *sql, char *ms if (mt && pt) { char *msg; node *n = cs_find_id(&mt->tables, pt->base.id); - + if (n) return sql_message("42S02!ALTER TABLE: table '%s.%s' is already part of the MERGE TABLE '%s.%s'", psname, ptname, msname, mtname); if ((msg = rel_check_tables(mt, pt)) != NULL) @@ -1079,7 +1079,7 @@ static char * alter_table_del_table(mvc *sql, char *msname, char *mtname, char *psname, char *ptname, int drop_action) { sql_schema *ms = mvc_bind_schema(sql, msname), *ps = mvc_bind_schema(sql, psname); - sql_table *mt = NULL, *pt = NULL; + sql_table *mt = NULL, *pt = NULL; if (ms) mt = mvc_bind_table(sql, ms, mtname); @@ -1087,7 +1087,7 @@ alter_table_del_table(mvc *sql, char *ms pt = mvc_bind_table(sql, ps, ptname); if (mt && pt) { node *n = NULL; - + if (!pt || (n = cs_find_id(&mt->tables, pt->base.id)) == NULL) return sql_message("42S02!ALTER TABLE: table '%s.%s' isn't part of the MERGE TABLE '%s.%s'", psname, ptname, msname, mtname); @@ -1104,7 +1104,7 @@ static char * alter_table_set_access(mvc *sql, char *sname, char *tname, int access) { sql_schema *s = mvc_bind_schema(sql, sname); - sql_table *t = NULL; + sql_table *t = NULL; if (s) t = mvc_bind_table(sql, s, tname); @@ -1112,7 +1112,7 @@ alter_table_set_access(mvc *sql, char *s if (t->type == tt_merge_table) return sql_message("42S02!ALTER TABLE: read only MERGE TABLES are not supported"); if (t->access != access) { - if (access && table_has_updates(sql->session->tr, t)) + if (access && table_has_updates(sql->session->tr, t)) return sql_message("40000!ALTER TABLE: set READ or INSERT ONLY not possible with outstanding updates (wait until updates are flushed)\n"); mvc_access(sql, t, access); @@ -1841,7 +1841,7 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb throw(SQL,"sql.bind","Cannot access the insert column"); if (uv == NULL) throw(SQL,"sql.bind","Cannot access the update column"); - id = BATproject(b, ui); + id = BATproject(b, ui); vl = BATproject(b, uv); assert(BATcount(id) == BATcount(vl)); bat_destroy(ui); @@ -1936,7 +1936,7 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl throw(SQL,"sql.bindidx","can not access index column"); if ( uv == NULL) throw(SQL,"sql.bindidx","can not access index column"); - id = BATproject(b, ui); + id = BATproject(b, ui); vl = BATproject(b, uv); assert(BATcount(id) == BATcount(vl)); bat_destroy(ui); @@ -2669,8 +2669,7 @@ mvc_result_set_wrap( Client cntxt, MalBl b = BATdescriptor(bid); if ( b == NULL) msg= createException(MAL,"sql.resultset","Failed to access result column"); - else - if (mvc_result_column(m, tblname, colname, tpename, *digits++, *scaledigits++, b)) + else if (mvc_result_column(m, tblname, colname, tpename, *digits++, *scaledigits++, b)) msg = createException(SQL, "sql.resultset", "mvc_result_column failed"); if( b) BBPunfix(bid); @@ -2678,7 +2677,7 @@ mvc_result_set_wrap( Client cntxt, MalBl // now sent it to the channel cntxt->fdout if (mvc_export_result(cntxt->sqlcontext, cntxt->fdout, res)) msg = createException(SQL, "sql.resultset", "failed"); -wrapup_result_set: + wrapup_result_set: if( tbl) BBPunfix(tblId); if( atr) BBPunfix(atrId); if( tpe) BBPunfix(tpeId); @@ -2701,10 +2700,10 @@ mvc_export_table_wrap( Client cntxt, Mal str filename = *getArgReference_str(stk,pci,1); str format = *getArgReference_str(stk,pci,2); unsigned char *tsep = NULL, *rsep = NULL, *ssep = NULL, *ns = NULL; - unsigned char **T = (unsigned char **) getArgReference_str(stk, pci, 3); - unsigned char **R = (unsigned char **) getArgReference_str(stk, pci, 4); - unsigned char **S = (unsigned char **) getArgReference_str(stk, pci, 5); - unsigned char **N = (unsigned char **) getArgReference_str(stk, pci, 6); + unsigned char **T = (unsigned char **) getArgReference_str(stk, pci, 3); + unsigned char **R = (unsigned char **) getArgReference_str(stk, pci, 4); + unsigned char **S = (unsigned char **) getArgReference_str(stk, pci, 5); + unsigned char **N = (unsigned char **) getArgReference_str(stk, pci, 6); bat tblId= *getArgReference_bat(stk, pci,7); bat atrId= *getArgReference_bat(stk, pci,8); @@ -2741,21 +2740,21 @@ mvc_export_table_wrap( Client cntxt, Mal goto wrapup_result_set1; } - l = strlen((char *) (*T)); - GDKstrFromStr(tsep = GDKmalloc(l + 1), *T, l); - l = 0; - l = strlen((char *) (*R)); - GDKstrFromStr(rsep = GDKmalloc(l + 1), *R, l); - l = 0; - l = strlen((char *) (*S)); - GDKstrFromStr(ssep = GDKmalloc(l + 1), *S, l); - l = 0; - l = strlen((char *) (*N)); - GDKstrFromStr(ns = GDKmalloc(l + 1), *N, l); - t->tsep = (char *) tsep; - t->rsep = (char *) rsep; - t->ssep = (char *) ssep; - t->ns = (char *) ns; + l = strlen((char *) (*T)); + GDKstrFromStr(tsep = GDKmalloc(l + 1), *T, l); + l = 0; + l = strlen((char *) (*R)); + GDKstrFromStr(rsep = GDKmalloc(l + 1), *R, l); + l = 0; + l = strlen((char *) (*S)); + GDKstrFromStr(ssep = GDKmalloc(l + 1), *S, l); + l = 0; + l = strlen((char *) (*N)); + GDKstrFromStr(ns = GDKmalloc(l + 1), *N, l); + t->tsep = (char *) tsep; + t->rsep = (char *) rsep; + t->ssep = (char *) ssep; + t->ns = (char *) ns; tbl = BATdescriptor(tblId); atr = BATdescriptor(atrId); @@ -2779,29 +2778,27 @@ mvc_export_table_wrap( Client cntxt, Mal b = BATdescriptor(bid); if ( b == NULL) msg= createException(MAL,"sql.resultset","Failed to access result column"); - else - if (mvc_result_column(m, tblname, colname, tpename, *digits++, *scaledigits++, b)) + else if (mvc_result_column(m, tblname, colname, tpename, *digits++, *scaledigits++, b)) msg = createException(SQL, "sql.resultset", "mvc_result_column failed"); if( b) BBPunfix(bid); } // now select the file channel - if ( strcmp(filename,"stdout") == 0 ) + if ( strcmp(filename,"stdout") == 0 ) s= cntxt->fdout; - else - if ( (s = open_wastream(filename)) == NULL || mnstr_errnr(s)) { - int errnr = mnstr_errnr(s); - if (s) - mnstr_destroy(s); - msg= createException(IO, "streams.open", "could not open file '%s': %s", - filename?filename:"stdout", strerror(errnr)); + else if ( (s = open_wastream(filename)) == NULL || mnstr_errnr(s)) { + int errnr = mnstr_errnr(s); + if (s) + mnstr_destroy(s); + msg= createException(IO, "streams.open", "could not open file '%s': %s", + filename?filename:"stdout", strerror(errnr)); goto wrapup_result_set1; - } + } if (mvc_export_result(cntxt->sqlcontext, s, res)) msg = createException(SQL, "sql.resultset", "failed"); if( s != cntxt->fdout) mnstr_close(s); -wrapup_result_set1: + wrapup_result_set1: BBPunfix(order->batCacheid); if( tbl) BBPunfix(tblId); if( atr) BBPunfix(atrId); @@ -2867,10 +2864,10 @@ mvc_row_result_wrap( Client cntxt, MalBl } // *res_id = t->id; //if (*res_id < 0) - //msg = createException(SQL, "sql.resultSet", "failed"); + //msg = createException(SQL, "sql.resultSet", "failed"); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list