Changeset: 20017c5a9142 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=20017c5a9142
Modified Files:
Branch: Jun2010
Log Message:
Merge heads.
diffs (118 lines):
diff -r 34cd1dfa19ab -r 20017c5a9142 MonetDB5/src/optimizer/opt_mergetable.mx
--- a/MonetDB5/src/optimizer/opt_mergetable.mx Tue Aug 17 13:39:15 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_mergetable.mx Tue Aug 17 14:48:40 2010 +0200
@@ -766,7 +766,6 @@
return mtop;
}
-
/* join, also handles the case that mat[m].mm is set, ie that we
have the extend available.
*/
@@ -1607,7 +1606,11 @@
@c
/* only handle simple joins, ie not range/band joins */
- if (match > 0 && match <= 2 && isMatJoinOp(p)) {
+ /* For range/band joins (argc == 4), the propagation of oids
+ is different, ie result-head equals head-1st arg,
+ result-tail equals head-2nd/3rd arg */
+
+ if (match > 0 && match <= 2 && isMatJoinOp(p) && p->argc == 3) {
m = isMATalias(getArg(p,1), mat, mtop);
n = isMATalias(getArg(p,2), mat, mtop);
if ((m = mat_join(mb, p, mat, mtop, m, n)) < 0)
@@ -1731,9 +1734,16 @@
getModuleId(p) == aggrRef ||
(getModuleId(p) == algebraRef &&
(getFunctionId(p) == sortTailRef ||
- getFunctionId(p) == sortReverseTailRef)))) {
+ getFunctionId(p) == sortReverseTailRef)) ||
+ (getModuleId(p) == pqueueRef &&
+ (getFunctionId(p) == topn_minRef ||
+ getFunctionId(p) == topn_maxRef)))) {
error++;
goto fail;
+ /* For order (and order related topn)
+ we need a similar 2 phase model as used for group
+ by
+ */
}
@-
The slice operation can also be piggy backed onto the mat.pack using it
diff -r 34cd1dfa19ab -r 20017c5a9142 MonetDB5/src/optimizer/opt_prelude.mx
--- a/MonetDB5/src/optimizer/opt_prelude.mx Tue Aug 17 13:39:15 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_prelude.mx Tue Aug 17 14:48:40 2010 +0200
@@ -127,7 +127,7 @@
opt_export str newRef;
opt_export str oidRef;
opt_export str octopusRef;
-opt_export str openRef;
+opt_export str openRef;
opt_export str optimizerRef;
opt_export str packRef;
opt_export str pack2Ref;
@@ -140,6 +140,7 @@
opt_export str preludeRef;
opt_export str prodRef;
opt_export str postludeRef;
+opt_export str pqueueRef;
opt_export str profilerRef;
opt_export str projectRef;
opt_export str putRef;
@@ -180,6 +181,8 @@
opt_export str sumRef;
opt_export str sunionRef;
opt_export str takeRef;
+opt_export str topn_minRef;
+opt_export str topn_maxRef;
opt_export str tuniqueRef;
opt_export str not_uniqueRef;
opt_export str unionRef;
@@ -337,6 +340,7 @@
str preludeRef;
str prodRef;
str postludeRef;
+str pqueueRef;
str profilerRef;
str projectRef;
str putRef;
@@ -377,6 +381,8 @@
str sumRef;
str sunionRef;
str takeRef;
+str topn_minRef;
+str topn_maxRef;
str tuniqueRef;
str not_uniqueRef;
str unionRef;
@@ -531,6 +537,7 @@
prodRef = putName("product",7);
profilerRef = putName("profiler",8);
postludeRef = putName("postlude",8);
+ pqueueRef = putName("pqueue",6);
projectRef = putName("project",7);
putRef = putName("put",3);
queryRef = putName("query",5);
@@ -570,6 +577,8 @@
sumRef = putName("sum",3);
sunionRef= putName("sunion",6);
takeRef= putName("take",5);
+ topn_minRef= putName("topn_min",8);
+ topn_maxRef= putName("topn_max",8);
tuniqueRef = putName("tunique",7);
not_uniqueRef= putName("not_unique",10);
unionRef= putName("union",5);
diff -r 34cd1dfa19ab -r 20017c5a9142 MonetDB5/src/optimizer/opt_support.mx
--- a/MonetDB5/src/optimizer/opt_support.mx Tue Aug 17 13:39:15 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_support.mx Tue Aug 17 14:48:40 2010 +0200
@@ -1263,7 +1263,8 @@
// getFunctionId(p) == antijoinRef || is not mat save
getFunctionId(p) == leftjoinRef ||
getFunctionId(p) == thetajoinRef ||
- getFunctionId(p) == bandjoinRef));
+ getFunctionId(p) == bandjoinRef)
+ );
}
int isFragmentGroup(InstrPtr p){
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list