Changeset: 41dfc7ac4f08 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=41dfc7ac4f08
Removed Files:
monetdb5/optimizer/opt_iot.c
monetdb5/optimizer/opt_iot.h
Modified Files:
monetdb5/optimizer/opt_garbageCollector.c
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_support.h
monetdb5/optimizer/opt_wrapper.c
Branch: default
Log Message:
Backing out changeset c4ad80e9ca8c: it belongs on branch iot.
diffs (truncated from 391 to 300 lines):
diff --git a/monetdb5/optimizer/opt_garbageCollector.c
b/monetdb5/optimizer/opt_garbageCollector.c
--- a/monetdb5/optimizer/opt_garbageCollector.c
+++ b/monetdb5/optimizer/opt_garbageCollector.c
@@ -73,10 +73,10 @@ OPTgarbageCollectorImplementation(Client
}
if (blockStart(p) )
depth++;
+ if ( p->token == ENDsymbol)
+ break;
pushInstruction(mb, p);
- if ( p->token == ENDsymbol)
- break;
n = mb->stop-1;
for (j = 0; j < p->argc; j++) {
if (getEndLifespan(span,getArg(p,j)) == i &&
isaBatType(getArgType(mb, p, j)) ){
@@ -103,6 +103,9 @@ OPTgarbageCollectorImplementation(Client
}
}
}
+ assert(p);
+ assert( p->token == ENDsymbol);
+ pushInstruction(mb, p);
for (i++; i < limit; i++)
pushInstruction(mb, old[i]);
for (; i < slimit; i++)
diff --git a/monetdb5/optimizer/opt_iot.c b/monetdb5/optimizer/opt_iot.c
deleted file mode 100644
--- a/monetdb5/optimizer/opt_iot.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * The contents of this file are subject to the MonetDB Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.monetdb.org/Legal/MonetDBLicense
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- * License for the specific language governing rights and limitations
- * under the License.
- *
- * The Original Code is the MonetDB Database System.
- *
- * The Initial Developer of the Original Code is CWI.
- * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
- * Copyright August 2008-2015 MonetDB B.V.
- * All Rights Reserved.
- */
-
-/*
- * (author) M. Kersten
- * Assume simple queries . Clear out all non-iot schema related sql
statements, except
- * for the bare minimum.
- */
-/*
- * We keep a flow dependency table to detect.
- */
-#include "monetdb_config.h"
-#include "opt_iot.h"
-#include "opt_deadcode.h"
-#include "mal_interpreter.h" /* for showErrors() */
-#include "mal_builder.h"
-#include "opt_statistics.h"
-#include "opt_dataflow.h"
-
-int
-OPTiotImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
- int actions = 0, mvc=0;
- int i, j, limit, slimit;
- InstrPtr r, p, *old;
- int movetofront=0;
- int *alias;
- char *tidlist;
-
- (void) pci;
- (void) mvc;
-
- OPTDEBUGiot {
- mnstr_printf(cntxt->fdout, "#iot optimizer started\n");
- printFunction(cntxt->fdout, mb, stk, LIST_MAL_DEBUG);
- } else
- (void) stk;
-
- old = mb->stmt;
- limit = mb->stop;
- slimit = mb->ssize;
- if (newMalBlkStmt(mb, slimit) < 0)
- return 0;
-
- alias = (int *) GDKzalloc(mb->vtop * 2 * sizeof(int));
- tidlist = (char *) GDKzalloc(mb->vtop );
- if (alias == 0)
- return 0;
-
- pushInstruction(mb, old[0]);
- for (i = 1; i < limit; i++)
- if (old[i]) {
- p = old[i];
-
- if (getModuleId(p) == iotRef && getFunctionId(p) ==
putName("window", 6) &&
- isVarConstant(mb, getArg(p, 1)) &&
isVarConstant(mb, getArg(p, 2)) && isVarConstant(mb, getArg(p, 3)))
- /* let's move the window to the start of the
block when it consists of constants*/
- movetofront=1;
- if (getModuleId(p) == iotRef && (getFunctionId(p) ==
putName("threshold", 9) || getFunctionId(p) == putName("beat", 4)) &&
- isVarConstant(mb, getArg(p, 1)) &&
isVarConstant(mb, getArg(p, 2)))
- /* let's move the threshold/beat to the start
of the block when it consists of constants*/
- movetofront=1;
- if( movetofront){
- movetofront =0;
- pushInstruction(mb, p);
- for (j = mb->stop - 1; j > 1; j--)
- mb->stmt[j] = mb->stmt[j - 1];
- mb->stmt[j] = p;
- continue;
- }
-
- if (p->token == ENDsymbol) {
- /* a good place to commit the SQL transaction */
- /* catch any exception left behind */
- r = newAssignment(mb);
- j = getArg(r, 0) = newVariable(mb,
GDKstrdup("SQLexception"), TYPE_str);
- setVarUDFtype(mb, j);
- r->barrier = CATCHsymbol;
- r = newAssignment(mb);
- getArg(r, 0) = j;
- r->barrier = EXITsymbol;
- r = newAssignment(mb);
- j = getArg(r, 0) = newVariable(mb,
GDKstrdup("MALexception"), TYPE_str);
- setVarUDFtype(mb, j);
- r->barrier = CATCHsymbol;
- r = newAssignment(mb);
- getArg(r, 0) = j;
- r->barrier = EXITsymbol;
-
- break;
- }
-
- if (getModuleId(p) == sqlRef && getFunctionId(p) ==
mvcRef)
- mvc = getArg(p, 0);
-
- /* trim the number of sql instructions dealing with
baskets */
- if (getModuleId(p) == sqlRef && getFunctionId(p) ==
putName("affectedRows", 12)) {
- freeInstruction(p);
- continue;
- }
-
- /* remove consolidation of tid lists */
- if (getModuleId(p) == algebraRef && getFunctionId(p) ==
subjoinRef && tidlist[getArg(p,1)]){
- alias[getArg(p, 0)] = getArg(p,2);
- freeInstruction(p);
- continue;
- }
- /* remove delta processing for baskets */
- if (getModuleId(p) == sqlRef && (getFunctionId(p) ==
deltaRef || getFunctionId(p) == subdeltaRef) ) {
- clrFunction(p);
- p->argc =2;
- pushInstruction(mb, p);
- continue;
- }
-
- /* remove delta processing for baskets */
- if (getModuleId(p) == sqlRef && (getFunctionId(p) ==
projectdeltaRef || getFunctionId(p) == subdeltaRef) ) {
- clrFunction(p);
- setModuleId(p,algebraRef);
- setFunctionId(p,subjoinRef);
- p->argc =3;
- pushInstruction(mb, p);
- continue;
- }
-
- for (j = 0; j < p->argc; j++)
- if (alias[getArg(p, j)])
- getArg(p, j) = alias[getArg(p, j)];
-
- if (getModuleId(p) == sqlRef && getFunctionId(p) ==
appendRef) {
- /* the appends come in multiple steps.
- The first initializes an basket update
statement,
- which is triggered when we commit the
transaction.
- */
- }
- pushInstruction(mb, p);
- }
-
- /* take the remainder as is */
- for (; i<limit; i++)
- if (old[i])
- pushInstruction(mb,old[i]);
- (void) stk;
- (void) pci;
-
- OPTDEBUGiot {
- mnstr_printf(cntxt->fdout, "#iot optimizer intermediate\n");
- printFunction(cntxt->fdout, mb, stk, LIST_MAL_DEBUG);
- }
- GDKfree(alias);
- GDKfree(tidlist);
- return actions;
-}
-
diff --git a/monetdb5/optimizer/opt_iot.h b/monetdb5/optimizer/opt_iot.h
deleted file mode 100644
--- a/monetdb5/optimizer/opt_iot.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * The contents of this file are subject to the MonetDB Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.monetdb.org/Legal/MonetDBLicense
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- * License for the specific language governing rights and limitations
- * under the License.
- *
- * The Original Code is the MonetDB Database System.
- *
- * The Initial Developer of the Original Code is CWI.
- * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
- * Copyright August 2008-2015 MonetDB B.V.
- * All Rights Reserved.
- */
-
-#ifndef _OPT_DATACELL_
-#define _OPT_DATACELL_
-#include "opt_prelude.h"
-#include "opt_support.h"
-#include "opt_pipes.h"
-
-#define OPTDEBUGiot if (1)
-//#define OPTDEBUGiot if (optDebug & ((lng) 1 << DEBUG_OPT_DATACELL))
-opt_export int OPTiotImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
-#endif
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -7,7 +7,9 @@
*/
/*
- * M.L. Kersten
+ * @f opt_pipes
+ * @a M.L. Kersten
+ * @-
* The default SQL optimizer pipeline can be set per server. See the
* optpipe setting in monetdb(1) when using merovingian. During SQL
* initialization, the optimizer pipeline is checked against the
@@ -221,34 +223,6 @@ static struct PIPELINES {
"optimizer.garbageCollector();",
"stable", NULL, NULL, 1},
*/
- {"iot_pipe",
- "optimizer.inline();"
- "optimizer.candidates();"
- "optimizer.remap();"
- "optimizer.iot();"
- "optimizer.costModel();"
- "optimizer.coercions();"
- "optimizer.evaluate();"
- "optimizer.aliases();"
- "optimizer.pushselect();"
- "optimizer.mitosis();"
- "optimizer.mergetable();"
- "optimizer.deadcode();"
- "optimizer.aliases();"
- "optimizer.constants();"
- "optimizer.commonTerms();"
- "optimizer.projectionpath();"
- "optimizer.deadcode();"
- "optimizer.reorder();"
- "optimizer.reduce();"
- "optimizer.matpack();"
- "optimizer.dataflow();"
- "optimizer.querylog();"
- "optimizer.multiplex();"
- "optimizer.generator();"
- "optimizer.profiler();"
- "optimizer.garbageCollector();",
- "stable", NULL, NULL, 1},
/* sentinel */
{NULL, NULL, NULL, NULL, NULL, 0}
};
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -116,7 +116,6 @@ str ilikesubselectRef;
str ilikethetasubselectRef;
str likeRef;
str ilikeRef;
-str iotRef;
str not_likeRef;
str not_ilikeRef;
str listRef;
@@ -131,7 +130,6 @@ str multicolumnRef;
str matRef;
str max_no_nilRef;
str maxRef;
-str streamRef;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list