Changeset: c48737db97b2 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c48737db97b2 Modified Files: gdk/gdk_posix.mx gdk/gdk_storage.mx Branch: default Log Message:
Merge with Apr2011 branch. diffs (truncated from 590 to 300 lines): diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -643,7 +643,10 @@ /* modifiable single-machine data */ #define LOCALSTATEDIR PREFIX "\\var" -#define lstat stat +#include <sys/stat.h> +#define lstat _stat64 +#define stat _stat64 +#define fstat _fstat64 #ifndef S_ISREG /* swig-generated source file doesn't include us first */ #define S_ISREG(mode) (((mode) & _S_IFMT) == _S_IFREG) #endif diff --git a/gdk/ChangeLog.Apr2011 b/gdk/ChangeLog.Apr2011 --- a/gdk/ChangeLog.Apr2011 +++ b/gdk/ChangeLog.Apr2011 @@ -1,3 +1,7 @@ # ChangeLog file for MonetDB # This file is updated with Maddlog +* Fri May 13 2011 Sjoerd Mullender <sjo...@acm.org> +- Fixed a bug where large files (> 2GB) didn't always get deleted on + Windows. + diff --git a/gdk/gdk_posix.mx b/gdk/gdk_posix.mx --- a/gdk/gdk_posix.mx +++ b/gdk/gdk_posix.mx @@ -260,7 +260,7 @@ gdk_export int win_unlink(const char *); gdk_export int win_mkdir(const char *, const int mode); -#define stat(x,y) win_stat(x,y) +#define _stat64(x,y) win_stat(x,y) #define mkdir win_mkdir #define rmdir win_rmdir #define rename win_rename @@ -1670,11 +1670,12 @@ return buf; } +#undef _stat64 int -win_stat(const char *pathname, struct stat *st) +win_stat(const char *pathname, struct _stat64 *st) { char buf[128], *p = reduce_dir_name(pathname, buf, sizeof(buf)); - int ret = stat(p, st); + int ret = _stat64(p, st); if (p != buf) free(p); diff --git a/gdk/gdk_storage.mx b/gdk/gdk_storage.mx --- a/gdk/gdk_storage.mx +++ b/gdk/gdk_storage.mx @@ -194,27 +194,20 @@ @- Unlink the file. @c -static int -delete_file(const char *path) -{ - int err = unlink(path); - - if (err) - GDKsyserror("GDKunlink(%s)\n", path); - IODEBUG THRprintf(GDKout, "#unlink %s = %d\n", path, err); - - return err; -} - int GDKunlink(const char *dir, const char *nme, const char *ext) { char path[PATHLENGTH]; - struct stat st; + if (nme && *nme) { GDKfilepath(path, dir, nme, ext); - if (lstat(path, &st) == 0) - return delete_file(path); + /* if file already doesn't exist, we don't care */ + if (unlink(path) == -1 && errno != ENOENT) { + GDKsyserror("GDKunlink(%s)\n", path); + IODEBUG THRprintf(GDKout, "#unlink %s = -1\n", path); + return -1; + } + return 0; } return -1; } diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -58,6 +58,8 @@ node *cn; sql_table *t = rel->l; + if (rname && strcmp(t->base.name, rname) != 0) + return NULL; if (rel->exps) { sql_exp *rename = exps_bind_column(rel->exps, name, NULL); if (!rename || @@ -3535,14 +3537,14 @@ e->r = exp_merge_range(sa, e->r); /* only look for gt, gte, lte, lt */ } else if (n->next && - e->type == e_cmp && e->flag < cmp_equal && + e->type == e_cmp && e->flag < cmp_equal && !e->f && re->card == CARD_ATOM) { for (m=n->next; m; m = m->next) { sql_exp *f = m->data; sql_exp *lf = f->l; sql_exp *rf = f->r; - if (f->type == e_cmp && f->flag < cmp_equal && + if (f->type == e_cmp && f->flag < cmp_equal && !f->f && rf->card == CARD_ATOM && exp_match_exp(le, lf)) { sql_exp *ne; @@ -3572,14 +3574,14 @@ } } } else if (n->next && - e->type == e_cmp && e->flag < cmp_equal && + e->type == e_cmp && e->flag < cmp_equal && !e->f && re->card > CARD_ATOM) { for (m=n->next; m; m = m->next) { sql_exp *f = m->data; sql_exp *lf = f->l; sql_exp *rf = f->r; - if (f->type == e_cmp && f->flag < cmp_equal && + if (f->type == e_cmp && f->flag < cmp_equal && !f->f && rf->card > CARD_ATOM) { sql_exp *ne; int swap = 0, lt = 0, gt = 0; 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 @@ -3936,11 +3936,15 @@ if (*rel) { /* current projection list */ sql_rel *p = *rel; - list *pre_proj = rel_projections(sql, *rel, NULL, 1, 1); + list *pre_proj = (*rel)->exps; + if (is_project((*rel)->op) && (*rel)->l) { + (*rel)->exps = NULL; p = rel_dup((*rel)->l); rel_destroy(*rel); *rel = NULL; + } else { + pre_proj = rel_projections(sql, *rel, NULL, 1, 1); } if (*rel && is_project((*rel)->op) && !(*rel)->l) { list *l = (*rel)->exps; diff --git a/sql/test/BugTracker-2011/Tests/All b/sql/test/BugTracker-2011/Tests/All --- a/sql/test/BugTracker-2011/Tests/All +++ b/sql/test/BugTracker-2011/Tests/All @@ -7,3 +7,5 @@ nested_select.Bug-2801 ambigous_idx_name.Bug-2800 crash_on_alias.Bug-2798 +groupby_primary_key.Bug-2807 +merge_range_exp.Bug-2806 diff --git a/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out b/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out --- a/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out +++ b/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out @@ -17,12 +17,6 @@ # MonetDB/SQL module loaded Ready. -# SQL catalog created, loading sql scripts once -could not find (null).e -dbg.d -dbg.L10 -L12.L12 -dbg.d Over.. diff --git a/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.sql b/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.sql @@ -0,0 +1,57 @@ +create table facts (a_id bigint, b_id bigint); +insert into facts values(1,1); +insert into facts values(2,1); +insert into facts values(3,1); +insert into facts values(4,1); +insert into facts values(5,1); +insert into facts values(6,1); +insert into facts values(1,2); +insert into facts values(2,2); +insert into facts values(3,2); +insert into facts values(4,2); +insert into facts values(5,2); +insert into facts values(6,2); +insert into facts values(1,3); +insert into facts values(2,3); +insert into facts values(3,3); +insert into facts values(4,3); +insert into facts values(5,3); +insert into facts values(6,3); + +create table a (id bigint not null primary key, c_id bigint); +insert into a values(1,1); +insert into a values(2,1); +insert into a values(3,2); +insert into a values(4,2); +insert into a values(5,3); +insert into a values(6,3); + +create table b (id bigint not null primary key, name varchar(20)); +insert into b values(1,'b1'); +insert into b values(2,'b2'); +insert into b values(3,'b3'); + +create table c (id bigint not null primary key, name varchar(20)); +insert into c values(1,'c1'); +insert into c values(2,'c2'); +insert into c values(3,'c3'); + +-- produces a wrong result: +select b.name, c.id, c.name from facts left join a + on a_id = a.id + left join b + on b_id = b.id + left join c + on c_id = c.id +group by b.name, c.name, c.id; + +alter table c drop constraint c_id_pkey; + +-- produces correct result: +select b.name, c.id, c.name from facts left join a on a_id = a.id left join b +on b_id = b.id left join c on c_id = c.id group by b.name, c.name, c.id; + +drop table facts; +drop table a; +drop table b; +drop table c; diff --git a/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.stable.err b/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.stable.err @@ -0,0 +1,39 @@ +stderr of test 'groupby_primary_key.Bug-2807` in directory 'test/BugTracker-2011` itself: + + +# 13:55:01 > +# 13:55:01 > mserver5 --debug=10 --set gdk_nr_threads=0 --set "gdk_dbfarm=/ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" --set mapi_open=true --set mapi_port=31577 --set monet_prompt= --trace --forcemito --set mal_listing=2 "--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 ; echo ; echo Over.. +# 13:55:01 > + +# builtin opt gdk_dbname = demo +# builtin opt gdk_dbfarm = /ufs/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm +# builtin opt gdk_debug = 0 +# builtin opt gdk_alloc_map = no +# builtin opt gdk_vmtrim = yes +# builtin opt monet_prompt = > +# builtin opt monet_daemon = no +# builtin opt mapi_port = 50000 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt default_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector +# builtin opt minimal_pipe = inline,remap,deadcode,multiplex,garbageCollector +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt gdk_dbfarm = /ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 31577 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbname = mTests_test_BugTracker-2011 +# cmdline opt mal_listing = 0 + +# 13:55:01 > +# 13:55:01 > mclient -lsql -ftest -i -e --host=alf --port=31577 +# 13:55:01 > + + +# 13:55:01 > +# 13:55:01 > Done. +# 13:55:01 > + diff --git a/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.stable.out b/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2011/Tests/groupby_primary_key.Bug-2807.stable.out @@ -0,0 +1,136 @@ +stdout of test 'groupby_primary_key.Bug-2807` in directory 'test/BugTracker-2011` itself: + + +# 13:55:01 > +# 13:55:01 > mserver5 --debug=10 --set gdk_nr_threads=0 --set "gdk_dbfarm=/ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" --set mapi_open=true --set mapi_port=31577 --set monet_prompt= --trace --forcemito --set mal_listing=2 "--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 ; echo ; echo Over.. +# 13:55:01 > _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list