Changeset: 1d43b02fbcb1 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1d43b02fbcb1 Modified Files: MonetDB/src/gdk/gdk_storage.mx sql/src/server/rel_bin.mx Branch: default Log Message:
merge from Jun2010 diffs (160 lines): diff -r 0a6a45c2a2b0 -r 1d43b02fbcb1 MonetDB/src/gdk/gdk_storage.mx --- a/MonetDB/src/gdk/gdk_storage.mx Tue Aug 10 16:58:06 2010 +0200 +++ b/MonetDB/src/gdk/gdk_storage.mx Wed Aug 11 01:29:16 2010 +0200 @@ -760,21 +760,31 @@ view and heap.base of views are not necessarily aligned */ size_t *lo = (size_t *) (((size_t) base + sizeof(size_t) - 1) & (~(sizeof(size_t) - 1))); - size_t *hi = (size_t *) (base + touch); - for (hi -= 8 * page; lo <= hi; lo += 8 * page) { - /* try to trigger loading of multiple pages - without blocking */ - v0 += lo[0 * page]; - v1 += lo[1 * page]; - v2 += lo[2 * page]; - v3 += lo[3 * page]; - v4 += lo[4 * page]; - v5 += lo[5 * page]; - v6 += lo[6 * page]; - v7 += lo[7 * page]; - } - for (hi += 7 * page; lo <= hi; lo += page) - v0 += *lo; + size_t *hi = (size_t *) (base + touch), *hi8 = NULL, hi1 = NULL; + /* page size: [bytes] -> [sizeof(size_t)] + * to make sure we touch each page, + * not only 1 in sizeof(size_t) pages */ + page /= sizeof(size_t); + hi8 = hi - 8 * page; + hi1 = hi - page; + /* detect address underrun */ + if (hi8 < hi) + for (; lo <= hi8; lo += 8 * page) { + /* try to trigger loading of multiple pages + without blocking */ + v0 += lo[0 * page]; + v1 += lo[1 * page]; + v2 += lo[2 * page]; + v3 += lo[3 * page]; + v4 += lo[4 * page]; + v5 += lo[5 * page]; + v6 += lo[6 * page]; + v7 += lo[7 * page]; + } + /* detect address underrun */ + if (hi1 < hi) + for (; lo <= hi1; lo += page) + v0 += *lo; } IODEBUG THRprintf(GDKout, "#BATpreload(%s->%s,preload=%d,sz=%dMB,touch=%dMB,%s) = %dms \n", diff -r 0a6a45c2a2b0 -r 1d43b02fbcb1 sql/src/server/rel_bin.mx --- a/sql/src/server/rel_bin.mx Tue Aug 10 16:58:06 2010 +0200 +++ b/sql/src/server/rel_bin.mx Wed Aug 11 01:29:16 2010 +0200 @@ -935,7 +935,6 @@ stmt *c = n->data; char *rnme = table_name(c); char *nme = column_name(c); - //stmt *s = stmt_join(stmt_dup(jl), column(c), cmp_equal); stmt *s = stmt_project(stmt_dup(jl), column(c) ); /* as append isn't save, we append to a new copy */ @@ -955,7 +954,6 @@ stmt *c = n->data; char *rnme = table_name(c); char *nme = column_name(c); - //stmt *s = stmt_join(stmt_dup(jr), column(c), cmp_equal); stmt *s = stmt_project(stmt_dup(jr), column(c) ); /* as append isn't save, we append to a new copy */ @@ -1060,7 +1058,6 @@ stmt *c = n->data; char *rnme = table_name(c); char *nme = column_name(c); - //stmt *s = stmt_join(stmt_dup(join), column(c), cmp_equal); stmt *s = stmt_project(stmt_dup(join), column(c)); s = stmt_alias(s, rnme, nme); @@ -1789,7 +1786,6 @@ if (col->nrcols == 0) /* constant */ col = stmt_const(sel, col); else - //col = stmt_join(sel, col, cmp_equal); col = stmt_project(sel, col); list_append(l, col); } @@ -1952,20 +1948,12 @@ if (n) { stmt *limit = NULL, *p, *j; - //sql_exp *lmt = le; if (le) l = exp_bin(sql, le, NULL, NULL, NULL, NULL); if (oe) o = exp_bin(sql, oe, NULL, NULL, NULL, NULL); -/* - if (!le) { - l = o; - o = stmt_atom_wrd(0); - } -*/ - if (!le) l = stmt_atom_wrd_nil(); if (!o) @@ -1980,22 +1968,15 @@ sc = column(sc); limit = stmt_limit(stmt_alias(sc, tname, cname), o, l, 0); - //if (lmt) { - n = n->next; - list_append(newl, limit); - //} + n = n->next; + list_append(newl, limit); } /* reduce pivot */ j = find_projection_join(limit); if (j && 0) { p = find_pivot(j); -/* - if (!lmt) - p = stmt_diff(stmt_dup(p), stmt_dup(limit)); - else -*/ - p = stmt_semijoin(stmt_dup(p), stmt_dup(limit)); + p = stmt_semijoin(stmt_dup(p), stmt_dup(limit)); for ( ; n; n = n->next) { stmt *s = column(stmt_dup(n->data)); stmt *prj = find_projection_join(s); @@ -2010,24 +1991,13 @@ for ( ; n; n = n->next) { stmt *s; -/* - if (!lmt) - s = stmt_diff(column(stmt_dup(n->data)), stmt_dup(limit)); - else -*/ - s = stmt_semijoin(column(stmt_dup(n->data)), stmt_dup(limit)); + s = stmt_semijoin(column(stmt_dup(n->data)), stmt_dup(limit)); list_append(newl, s); } } if (order) { -/* - if (!lmt) { - order = stmt_diff(order, limit); - } else { -*/ - stmt_destroy(order); - order = limit; -// } + stmt_destroy(order); + order = limit; } } stmt_destroy(sub); _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list