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

Reply via email to