Changeset: fb3b7318cf02 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fb3b7318cf02
Modified Files:
        gdk/gdk_atoms.mx
        monetdb5/optimizer/opt_support.c
        sql/server/sql_scan.c
        sql/test/BugTracker/Tests/insert_values.SF-1578838.stable.err
Branch: default
Log Message:

Merge with Aug2011 branch.


diffs (truncated from 533 to 300 lines):

diff --git a/gdk/gdk_atoms.mx b/gdk/gdk_atoms.mx
--- a/gdk/gdk_atoms.mx
+++ b/gdk/gdk_atoms.mx
@@ -1929,7 +1929,7 @@ strPut(Heap *h, var_t *dst, const char *
                memset(h->base + h->free, 0, h->size - h->free);
 #endif
 
-               /* make bucket point into the enw heap */
+               /* make bucket point into the new heap */
                bucket = ((stridx_t *) h->base) + off;
        }
 
diff --git a/sql/ChangeLog.Aug2011 b/sql/ChangeLog.Aug2011
--- a/sql/ChangeLog.Aug2011
+++ b/sql/ChangeLog.Aug2011
@@ -1,3 +1,11 @@
 # ChangeLog file for sql
 # This file is updated with Maddlog
 
+* Fri Sep 16 2011 Sjoerd Mullender <[email protected]>
+- A bug was fixed where deleted rows weren't properly accounted for in
+  all operations.  This was bug 2882.
+- A bug was fixed which caused an update to an internal table to
+  happen too soon.  The bug could be observed on a multicore system
+  with a query INSERT INTO t (SELECT * FROM t) when the table t is
+  "large enough".  This was bug 2883.
+
diff --git a/sql/backends/monet5/sql_optimizer.c 
b/sql/backends/monet5/sql_optimizer.c
--- a/sql/backends/monet5/sql_optimizer.c
+++ b/sql/backends/monet5/sql_optimizer.c
@@ -369,6 +369,17 @@ SQLgetStatistics(Client cntxt, mvc *m, M
                                        }
                                        rows = (wrd) cnt;
                                }
+                       } else if (s && f == binddbatRef) {
+                               size_t cnt;
+                               sql_table *t = mvc_bind_table(m, s, tname);
+                               sql_column *c = NULL;
+
+                               if (t->columns.set->h) {
+                                       c = t->columns.set->h->data;
+
+                                       cnt = store_funcs.count_col(c);
+                                       rows = (wrd) cnt;
+                               }
                        }
                        if (rows > 1 && mode != RD_INS)
                                varSetProp(mb, k, rowsProp, op_eq, VALset(&vr, 
TYPE_wrd, &rows));
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -943,7 +943,7 @@ sql_get_next_token(YYSTYPE *yylval, void
 
        yylval->sval = (lc->rs->buf + (int)lc->rs->pos + lc->yysval);
 
-       /* This is needed as ALIAS and aTYPE get defined to late, see
+       /* This is needed as ALIAS and aTYPE get defined too late, see
           sql_keyword.mx */
        if (token == KW_ALIAS)
                token = ALIAS;
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
@@ -35,3 +35,4 @@ multicolumn_constraints.Bug-2849
 CASE_nested_functions.Bug-2852
 FK_self_reference.Bug-2862
 time_precision.Bug-2873
+delete-large-table.Bug-2882
diff --git a/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.sql 
b/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.sql
@@ -0,0 +1,69 @@
+create table bigtable2882 (i int);
+insert into bigtable2882 values (1);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+insert into bigtable2882 (select * from bigtable2882);
+select count(*) from bigtable2882;
+
+create table test2882(id bigint);
+insert into test2882(id) SELECT ROW_NUMBER () OVER () FROM bigtable2882 limit 
20000000;
+select count(*) from test2882;
+select * from test2882 where id = 1;
+select * from test2882 where id = 20000000;
+select * from test2882 where id in (1, 20000000);
+delete from test2882 where id = 1;
+delete from test2882 where id = 20000000;
+select count(*) from test2882;
+select * from test2882 where id = 1;
+select * from test2882 where id = 20000000;
+select * from test2882 where id in (1, 20000000);
+
+drop table bigtable2882;
+drop table test2882;
diff --git 
a/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.stable.err 
b/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'delete-large-table.Bug-2882` in directory 
'test/BugTracker-2011` itself:
+
+
+# 11:01:08 >  
+# 11:01:08 >   mserver5  --debug=10 --set gdk_nr_threads=1  --set 
"gdk_dbfarm=/ufs/sjoerd/Monet-candidate/var/MonetDB" --set mapi_open=true --set 
mapi_port=37694 --set monet_prompt= --trace --forcemito --set mal_listing=2  
"--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 ; echo ; echo Over..
+# 11:01:08 >  
+
+# builtin opt  gdk_dbname = demo
+# builtin opt  gdk_dbfarm = /ufs/sjoerd/Monet-candidate/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  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 1
+# cmdline opt  gdk_dbfarm = /ufs/sjoerd/Monet-candidate/var/MonetDB
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 37694
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbname = mTests_test_BugTracker-2011
+# cmdline opt  mal_listing = 0
+
+# 11:01:09 >  
+# 11:01:09 >  mclient -lsql -ftest -i -e --host=ottar --port=37694 
+# 11:01:09 >  
+
+
+# 11:01:24 >  
+# 11:01:24 >  Done.
+# 11:01:24 >  
+
diff --git 
a/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.stable.out 
b/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/delete-large-table.Bug-2882.stable.out
@@ -0,0 +1,316 @@
+stdout of test 'delete-large-table.Bug-2882` in directory 
'test/BugTracker-2011` itself:
+
+
+# 11:01:08 >  
+# 11:01:08 >   mserver5  --debug=10 --set gdk_nr_threads=1  --set 
"gdk_dbfarm=/ufs/sjoerd/Monet-candidate/var/MonetDB" --set mapi_open=true --set 
mapi_port=37694 --set monet_prompt= --trace --forcemito --set mal_listing=2  
"--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 ; echo ; echo Over..
+# 11:01:08 >  
+
+# MonetDB 5 server v11.5.2
+# This is an unreleased version
+# Serving database 'mTests_test_BugTracker-2011', using 1 thread
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.749 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2011 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://ottar.ins.cwi.nl:37694/
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/10_math.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/11_times.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/12_url.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/13_date.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/14_inet.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/15_history.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/16_tracelog.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/17_compress.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/18_dictionary.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/19_cluster.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/20_vacuum.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/21_dependency_functions.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/22_clients.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/23_skyserver.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/24_zorder.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/25_debug.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/40_geom.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/80_udf.sql
+# SQL loading sql scripts 
/net/ottar/export/scratch0/sjoerd/bin/candidate/.stowdir/MonetDB/lib64/monetdb5/createdb/99_system.sql
+
+Over..
+
+# 11:01:09 >  
+# 11:01:09 >  mclient -lsql -ftest -i -e --host=ottar --port=37694 
+# 11:01:09 >  
+
+#create table bigtable2882 (i int);
+#insert into bigtable2882 values (1);
+[ 1    ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L2 # name
+% wrd # type
+% 1 # length
+[ 1    ]
+#insert into bigtable2882 (select * from bigtable2882);
+[ 1    ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L3 # name
+% wrd # type
+% 1 # length
+[ 2    ]
+#insert into bigtable2882 (select * from bigtable2882);
+[ 2    ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L4 # name
+% wrd # type
+% 1 # length
+[ 4    ]
+#insert into bigtable2882 (select * from bigtable2882);
+[ 4    ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L5 # name
+% wrd # type
+% 1 # length
+[ 8    ]
+#insert into bigtable2882 (select * from bigtable2882);
+[ 8    ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L6 # name
+% wrd # type
+% 2 # length
+[ 16   ]
+#insert into bigtable2882 (select * from bigtable2882);
+[ 16   ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L7 # name
+% wrd # type
+% 2 # length
+[ 32   ]
+#insert into bigtable2882 (select * from bigtable2882);
+[ 32   ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L10 # name
+% wrd # type
+% 2 # length
+[ 64   ]
+#insert into bigtable2882 (select * from bigtable2882);
+[ 64   ]
+#select count(*) from bigtable2882;
+% sys.bigtable2882 # table_name
+% L11 # name
+% wrd # type
+% 3 # length
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to