Changeset: d71ecfd8adc7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d71ecfd8adc7
Modified Files:
monetdb5/mal/mal_interpreter.mx
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:
merge from Dec2011
diffs (truncated from 524 to 300 lines):
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1609,7 +1609,7 @@ doFile(Mapi mid, const char *file)
FILE *fp;
char *buf = NULL;
size_t length;
- MapiHdl hdl = NULL;
+ MapiHdl hdl = mapi_get_active(mid);
MapiMsg rc = MOK;
int bufsize = 0;
int first = 1; /* first line processing */
diff --git a/java/tests/Test_PStimezone.java b/java/tests/Test_PStimezone.java
--- a/java/tests/Test_PStimezone.java
+++ b/java/tests/Test_PStimezone.java
@@ -60,7 +60,9 @@ public class Test_PStimezone {
// make sure this test is reproducable regardless
timezone
// setting, by overriding the VM's default
-
TimeZone.setDefault(TimeZone.getTimeZone("Africa/Windhoek"));
+ // we have to make sure that one doesn't have daylight
+ // savings corrections
+ TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
SimpleDateFormat tsz =
new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss.SSSZ");
@@ -146,7 +148,7 @@ public class Test_PStimezone {
rs.getTime("t", c) + "
\t" +
rs.getTime("tz", c) + " ");
- c.setTimeZone(TimeZone.getTimeZone("UTC"));
+
c.setTimeZone(TimeZone.getTimeZone("Africa/Windhoek"));
System.out.println(c.getTimeZone().getID() +
":\n\t" +
rs.getTimestamp("ts", c) + "
\t" +
rs.getTimestamp("tsz", c) + "
\t" +
diff --git a/monetdb5/mal/mal_interpreter.mx b/monetdb5/mal/mal_interpreter.mx
--- a/monetdb5/mal/mal_interpreter.mx
+++ b/monetdb5/mal/mal_interpreter.mx
@@ -758,7 +758,6 @@ DFLOWadmission(lng argclaim, lng hotclai
PARDEBUG
mnstr_printf(GDKstdout, "#DFLOWadmit %3d thread %d pool " LLFMT "
claims " LLFMT "," LLFMT "\n",
memoryclaims, THRgettid(), memorypool,
argclaim, hotclaim);
- assert(memoryclaims >= 0);
mal_unset_lock(mal_contextLock, "DFLOWdelay");
return 0;
}
diff --git a/monetdb5/modules/mal/pqueue.mx b/monetdb5/modules/mal/pqueue.mx
--- a/monetdb5/modules/mal/pqueue.mx
+++ b/monetdb5/modules/mal/pqueue.mx
@@ -935,18 +935,18 @@ pqueue_export str PQtopn2_@1@2(int *ret,
str
PQtopn2_@1@2(int *ret, int *aid, int *bid, wrd *N)
{
- BUN n, i,j;
+ BUN n, i,j, cnt;
BAT *a, *b,*bn = NULL;
if ((a=BATdescriptor(*aid)) == NULL || (b=BATdescriptor(*bid)) == NULL)
throw(MAL, "pqueue.topN", RUNTIME_OBJECT_MISSING);
- n = BATcount(a);
+ cnt = n = BATcount(a);
if (*N != wrd_nil && *N >= 0 && *N <= (wrd) BUN_MAX && (BUN) *N < n)
n = (BUN) *N;
bn = BATnew(TYPE_oid, TYPE_oid, n);
for(i=0; i<n; ) {
oid ov = * (oid *) Tloc(a, i);
- for (j = i; j < n && * (oid *) Tloc(a, j) == ov; j++)
+ for (j = i; j < cnt && * (oid *) Tloc(a, j) == ov; j++)
;
if (j == i+1) {
BUNins(bn, Hloc(a,i), &ov, FALSE);
@@ -978,18 +978,18 @@ pqueue_export str PQutopn2_@1@2(int *ret
str
PQutopn2_@1@2(int *ret, int *aid, int *bid, wrd *N)
{
- BUN n, i,j;
+ BUN n, i,j, cnt;
BAT *a, *b,*bn = NULL;
if ((a=BATdescriptor(*aid)) == NULL || (b=BATdescriptor(*bid)) == NULL)
throw(MAL, "pqueue.topN", RUNTIME_OBJECT_MISSING);
- n = BATcount(a);
+ cnt = n = BATcount(a);
if (*N != wrd_nil && *N >= 0 && *N <= (wrd) BUN_MAX && (BUN) *N < n)
n = (BUN) *N;
bn = BATnew(TYPE_oid, TYPE_oid, n);
for(i=0; i<n; ) {
oid ov = * (oid *) Tloc(a, i);
- for (j = i; j < n && * (oid *) Tloc(a, j) == ov; j++)
+ for (j = i; j < cnt && * (oid *) Tloc(a, j) == ov; j++)
;
if (j == i+1) {
BUNins(bn, Hloc(a,i), &ov, FALSE);
diff --git a/sql/backends/monet5/sql_gencode.c
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -209,6 +209,12 @@ dump_cols(MalBlkPtr mb, list *l, InstrPt
q = pushArgument(mb, q, c->nr);
}
q->retc = q->argc;
+ /* Lets make it a propper assignment */
+ for (i = 0, n = l->h; n; n = n->next, i++) {
+ stmt *c = n->data;
+
+ q = pushArgument(mb, q, c->nr);
+ }
return q;
}
@@ -227,6 +233,7 @@ table_func_create_result( MalBlkPtr mb,
q = pushReturn(mb, q, newTmpVariable(mb, type));
else
setVarType(mb,getArg(q,0), type);
+ setVarUDFtype(mb, getArg(q,i));
}
return q;
}
@@ -2342,14 +2349,7 @@ monet5_create_table_function(ptr M, char
(void)t;
r = rel_optimizer(m, rel);
s = rel_bin(m, r);
-/*
- if (s && s->type == st_ordered) {
- stmt *order = s->op1;
- stmt *ns = s->op2;
- s = sql_reorder(order, ns);
- }
-*/
if (s->type == st_list && s->nrcols == 0 && s->key) {
/* row to columns */
node *n;
diff --git a/sql/jdbc/tests/Tests/Test_PStimezone.stable.out
b/sql/jdbc/tests/Tests/Test_PStimezone.stable.out
--- a/sql/jdbc/tests/Tests/Test_PStimezone.stable.out
+++ b/sql/jdbc/tests/Tests/Test_PStimezone.stable.out
@@ -23,10 +23,11 @@ Ready.
# 15:11:19 > java Test_PStimezone
jdbc:monetdb://pictor:53368/database?user=monetdb&password=monetdb
# 15:11:19 >
+
0. false false
1. empty call... failed :)
2. inserting records...
-inserting (Africa/Windhoek) 1970-01-01 02:00:00.000+0200, 02:00:00.000+0200
+inserting (UTC) 1970-01-01 00:00:00.000+0000, 00:00:00.000+0000
inserting with calendar timezone UTC
inserting with calendar timezone America/Los_Angeles
inserting with calendar timezone GMT+04:15
@@ -34,40 +35,41 @@ done
3. closing PreparedStatement... passed :)
4. selecting records... passed :)
retrieved row (String):
- 1970-01-01 02:00:00.000000 1970-01-01 02:00:00.000000+02:00
02:00:00 02:00:00+02:00
-default (Africa/Windhoek):
- 1970-01-01 02:00:00.000+0200 1970-01-01 02:00:00.000+0200
02:00:00.000+0200 02:00:00.000+0200
+ 1970-01-01 00:00:00.000000 1970-01-01 01:00:00.000000+01:00
00:00:00 01:00:00+01:00
+default (UTC):
+ 1970-01-01 00:00:00.000+0000 1970-01-01 00:00:00.000+0000
00:00:00.000+0000 00:00:00.000+0000
America/Los_Angeles:
- 1970-01-01 12:00:00.0 1970-01-01 02:00:00.0
12:00:00 02:00:00
-UTC:
- 1970-01-01 04:00:00.0 1970-01-01 02:00:00.0
04:00:00 02:00:00
+ 1970-01-01 08:00:00.0 1970-01-01 00:00:00.0
08:00:00 00:00:00
+Africa/Windhoek:
+ 1969-12-31 22:00:00.0 1970-01-01 00:00:00.0
22:00:00 00:00:00
retrieved row (String):
- 1970-01-01 00:00:00.000000 1970-01-01 02:00:00.000000+02:00
00:00:00 02:00:00+02:00
-default (Africa/Windhoek):
- 1970-01-01 00:00:00.000+0200 1970-01-01 02:00:00.000+0200
00:00:00.000+0200 02:00:00.000+0200
+ 1970-01-01 00:00:00.000000 1970-01-01 01:00:00.000000+01:00
00:00:00 01:00:00+01:00
+default (UTC):
+ 1970-01-01 00:00:00.000+0000 1970-01-01 00:00:00.000+0000
00:00:00.000+0000 00:00:00.000+0000
America/Los_Angeles:
- 1970-01-01 10:00:00.0 1970-01-01 02:00:00.0
10:00:00 02:00:00
-UTC:
- 1970-01-01 02:00:00.0 1970-01-01 02:00:00.0
02:00:00 02:00:00
+ 1970-01-01 08:00:00.0 1970-01-01 00:00:00.0
08:00:00 00:00:00
+Africa/Windhoek:
+ 1969-12-31 22:00:00.0 1970-01-01 00:00:00.0
22:00:00 00:00:00
retrieved row (String):
- 1969-12-31 16:00:00.000000 1970-01-01 02:00:00.000000+02:00
16:00:00 02:00:00+02:00
-default (Africa/Windhoek):
- 1969-12-31 16:00:00.000+0200 1970-01-01 02:00:00.000+0200
16:00:00.000+0200 02:00:00.000+0200
+ 1969-12-31 16:00:00.000000 1970-01-01 01:00:00.000000+01:00
16:00:00 01:00:00+01:00
+default (UTC):
+ 1969-12-31 16:00:00.000+0000 1970-01-01 00:00:00.000+0000
16:00:00.000+0000 00:00:00.000+0000
America/Los_Angeles:
- 1970-01-01 02:00:00.0 1970-01-01 02:00:00.0
02:00:00 02:00:00
-UTC:
- 1969-12-31 18:00:00.0 1970-01-01 02:00:00.0
18:00:00 02:00:00
+ 1970-01-01 00:00:00.0 1970-01-01 00:00:00.0
00:00:00 00:00:00
+Africa/Windhoek:
+ 1969-12-31 14:00:00.0 1970-01-01 00:00:00.0
14:00:00 00:00:00
retrieved row (String):
- 1970-01-01 02:00:00.000000 1970-01-01 02:00:00.000000+02:00
02:00:00 02:00:00+02:00
-default (Africa/Windhoek):
- 1970-01-01 02:00:00.000+0200 1970-01-01 02:00:00.000+0200
02:00:00.000+0200 02:00:00.000+0200
+ 1970-01-01 00:00:00.000000 1970-01-01 01:00:00.000000+01:00
00:00:00 01:00:00+01:00
+default (UTC):
+ 1970-01-01 00:00:00.000+0000 1970-01-01 00:00:00.000+0000
00:00:00.000+0000 00:00:00.000+0000
America/Los_Angeles:
- 1970-01-01 12:00:00.0 1970-01-01 02:00:00.0
12:00:00 02:00:00
-UTC:
- 1970-01-01 04:00:00.0 1970-01-01 02:00:00.0
04:00:00 02:00:00
+ 1970-01-01 08:00:00.0 1970-01-01 00:00:00.0
08:00:00 00:00:00
+Africa/Windhoek:
+ 1969-12-31 22:00:00.0 1970-01-01 00:00:00.0
22:00:00 00:00:00
+
# 15:09:12 >
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
@@ -2270,7 +2270,7 @@ exps_merge_rse( mvc *sql, list *l, list
list_merge(exps, le->r, NULL);
list_merge(exps, re->r, NULL);
fnd = exp_in(sql->sa, le->l, exps, cmp_in);
- } else if (le->f && re->f &&
+ } else if (le->f && re->f && /* merge ranges */
le->flag == re->flag) {
sql_subfunc *min = sql_bind_func(sql->sa,
sql->session->schema, "sql_min", exp_subtype(le->r), exp_subtype(re->r),
F_FUNC);
sql_subfunc *max = sql_bind_func(sql->sa,
sql->session->schema, "sql_max", exp_subtype(le->f), exp_subtype(re->f),
F_FUNC);
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -611,16 +611,18 @@ create_col(sql_trans *tr, sql_column *c)
/* alter ? */
if (c->t->columns.set && (fc = c->t->columns.set->h->data) !=
NULL) {
sql_delta *d = fc->data;
- cnt = d->cnt;
+ cnt = d->cnt + 1;
}
- if (cnt) {
+ if (cnt && fc != c) {
sql_delta *d = fc->data;
bat->bid = copyBat(d->bid, type, 0);
- bat->ibid = copyBat(d->ibid, type, d->ibase);
+ if (d->ibid)
+ bat->ibid = copyBat(d->ibid, type, d->ibase);
bat->ibase = d->ibase;
bat->cnt = d->cnt;
- bat->ubid = e_ubat(type);
+ if (d->ubid)
+ bat->ubid = e_ubat(type);
} else {
BAT *b = bat_new(TYPE_void, type, c->t->sz);
if (!b)
diff --git
a/sql/test/BugTracker-2009/Tests/arithmetic-small-values-null.SF-2921310.sql
b/sql/test/BugTracker-2009/Tests/arithmetic-small-values-null.SF-2921310.sql
--- a/sql/test/BugTracker-2009/Tests/arithmetic-small-values-null.SF-2921310.sql
+++ b/sql/test/BugTracker-2009/Tests/arithmetic-small-values-null.SF-2921310.sql
@@ -1,7 +1,7 @@
-- http://bugs.monetdb.org/show_bug.cgi?id=2291
-- yields NULL :/
-select (4.4054292 - 4.40572025343667)^2 + (52.0903881 - 52.091375762174)^2;
+select ((4.4054292 - 4.40572025343667)^2) + ((52.0903881 - 52.091375762174)^2);
-- correct answer
select cast((4.4054292 - 4.40572025343667)^2 as double) + cast((52.0903881 -
52.091375762174)^2 as double);
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
@@ -57,3 +57,5 @@ interrupted-initialization.Bug-2875
case-overflow.Bug-2239
sqltables.Bug-2921
Multiplication_and_cast.Bug-2923
+like_or.Bug-2924
+alter_table_add_column.Bug-2919
diff --git a/sql/test/BugTracker-2011/Tests/alter_table_add_column.Bug-2919.sql
b/sql/test/BugTracker-2011/Tests/alter_table_add_column.Bug-2919.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/alter_table_add_column.Bug-2919.sql
@@ -0,0 +1,12 @@
+
+START TRANSACTION;
+CREATE TABLE a2919(b INTEGER);
+COMMIT;
+
+START TRANSACTION;
+ALTER TABLE a2919 ADD COLUMN c INTEGER;
+INSERT INTO a2919(b) VALUES(1);
+SELECT c FROM a2919;
+ROLLBACK;
+
+DROP TABLE a2919;
diff --git
a/sql/test/BugTracker-2011/Tests/alter_table_add_column.Bug-2919.stable.err
b/sql/test/BugTracker-2011/Tests/alter_table_add_column.Bug-2919.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2011/Tests/alter_table_add_column.Bug-2919.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'alter_table_add_column.Bug-2919` in directory
'test/BugTracker-2011` itself:
+
+
+# 10:41:51 >
+# 10:41:51 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"gdk_dbfarm=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB" "--set"
"mapi_open=true" "--set" "mapi_port=32715" "--set" "monet_prompt=" "--trace"
"--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2011"
"--set" "mal_listing=0"
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list