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