Changeset: 89ede0180774 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=89ede0180774
Added Files:
monetdb5/extras/mal_optimizer_template/opt_sql_append.c
monetdb5/extras/mal_optimizer_template/opt_sql_append.h
monetdb5/extras/mal_optimizer_template/opt_sql_append.mal
monetdb5/modules/kernel/status.c
monetdb5/modules/kernel/status.h
monetdb5/modules/kernel/status.mal
monetdb5/modules/mal/bbp.c
monetdb5/modules/mal/bbp.h
monetdb5/modules/mal/bbp.mal
monetdb5/modules/mal/box.c
monetdb5/modules/mal/box.h
monetdb5/modules/mal/box.mal
monetdb5/modules/mal/clients.c
monetdb5/modules/mal/clients.h
monetdb5/modules/mal/clients.mal
monetdb5/modules/mal/const.c
monetdb5/modules/mal/const.h
monetdb5/modules/mal/const.mal
monetdb5/modules/mal/factories.c
monetdb5/modules/mal/factories.h
monetdb5/modules/mal/factories.mal
monetdb5/modules/mal/inspect.c
monetdb5/modules/mal/inspect.h
monetdb5/modules/mal/inspect.mal
monetdb5/modules/mal/mal_io.c
monetdb5/modules/mal/mal_io.h
monetdb5/modules/mal/mal_io.mal
monetdb5/modules/mal/mdb.c
monetdb5/modules/mal/mdb.h
monetdb5/modules/mal/mdb.mal
monetdb5/modules/mal/statistics.c
monetdb5/modules/mal/statistics.h
monetdb5/modules/mal/statistics.mal
monetdb5/modules/mal/urlbox.c
monetdb5/modules/mal/urlbox.h
monetdb5/modules/mal/urlbox.mal
monetdb5/modules/mal/zorder.c
monetdb5/modules/mal/zorder.h
monetdb5/modules/mal/zorder.mal
Removed Files:
monetdb5/extras/mal_optimizer_template/opt_sql_append.mx
monetdb5/modules/kernel/status.mx
monetdb5/modules/mal/bbp.mx
monetdb5/modules/mal/box.mx
monetdb5/modules/mal/clients.mx
monetdb5/modules/mal/const.mx
monetdb5/modules/mal/factories.mx
monetdb5/modules/mal/inspect.mx
monetdb5/modules/mal/mal_io.mx
monetdb5/modules/mal/mdb.mx
monetdb5/modules/mal/pma.mx
monetdb5/modules/mal/statistics.mx
monetdb5/modules/mal/urlbox.mx
monetdb5/modules/mal/zorder.mx
monetdb5/optimizer/optimizerWrapper.mx
Modified Files:
monetdb5/extras/mal_optimizer_template/Makefile.ag
monetdb5/modules/kernel/Makefile.ag
monetdb5/modules/mal/Makefile.ag
monetdb5/modules/mal/Tests/All
monetdb5/modules/mal/mal_init.mal
monetdb5/modules/mal/manual.c
monetdb5/modules/mal/manual.h
monetdb5/modules/mal/remote.c
monetdb5/modules/mal/remote.h
monetdb5/modules/mal/remote.mal
Branch: default
Log Message:
De-Mx a bunch of files
All but those dealing with multiple types in modules/mal
diffs (truncated from 8057 to 300 lines):
diff --git a/monetdb5/extras/mal_optimizer_template/Makefile.ag
b/monetdb5/extras/mal_optimizer_template/Makefile.ag
--- a/monetdb5/extras/mal_optimizer_template/Makefile.ag
+++ b/monetdb5/extras/mal_optimizer_template/Makefile.ag
@@ -28,7 +28,7 @@ lib_opt_sql_append = {
MODULE
DIR = libdir/monetdb5
SEP = _
- SOURCES = opt_sql_append.mx
+ SOURCES = opt_sql_append.c opt_sql_append.h
LIBS = ../../tools/libmonetdb5 \
../../../gdk/libbat \
../../../common/stream/libstream \
@@ -38,7 +38,7 @@ lib_opt_sql_append = {
headers_mal = {
HEADERS = mal
DIR = libdir/monetdb5
- SOURCES = opt_sql_append.mx
+ SOURCES = opt_sql_append.mal
}
headers_opt_sql_append_autoload = {
diff --git a/monetdb5/extras/mal_optimizer_template/opt_sql_append.mx
b/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
rename from monetdb5/extras/mal_optimizer_template/opt_sql_append.mx
rename to monetdb5/extras/mal_optimizer_template/opt_sql_append.c
--- a/monetdb5/extras/mal_optimizer_template/opt_sql_append.mx
+++ b/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
@@ -1,25 +1,22 @@
-@/
-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
+/*
+ * 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-2012 MonetDB B.V.
+ * All Rights Reserved.
+*/
-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-2012 MonetDB B.V.
-All Rights Reserved.
-@
-
-@f opt_sql_append
-
-@c
/*
* @a S. Manegold
* @- SQL append show-case optimizer
@@ -81,43 +78,10 @@ All Rights Reserved.
* It is mandatory to make optimizers part of the 'optimizer' module.
* This allows the optimizer implementation to find them and react on them.
*/
-@mal
-pattern optimizer.sql_append():str
-address OPTsql_append
-comment "Avoid extra BAT copy with sql.append() whenever possible.";
-
-pattern optimizer.sql_append(mod:str, fcn:str):str
-address OPTsql_append
-comment "Avoid extra BAT copy with sql.append() whenever possible.";
-
-@h
-#ifndef _OPT_SQL_APPEND_
-#define _OPT_SQL_APPEND_
-
-#ifdef WIN32
-#ifndef LIBOPT_SQL_APPEND
-#define opt_sql_append_export extern __declspec(dllimport)
-#else
-#define opt_sql_append_export extern __declspec(dllexport)
-#endif
-#else
-#define opt_sql_append_export extern
-#endif
-
-#include "opt_prelude.h"
-
-/*@:exportOptimizer(sql_append)@*/
-opt_sql_append_export str OPTsql_append(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr p);
-
-#define DEBUG_OPT_SQL_APPEND 61
-#define OPTDEBUGsql_append if (optDebug & ((lng)1 << DEBUG_OPT_SQL_APPEND))
-
-#endif /* _OPT_SQL_APPEND_ */
-
-@c
#include "monetdb_config.h"
#include "opt_sql_append.h"
#include "mal_interpreter.h"
+#include "opt_statistics.h"
/* focus initially on persistent tables. */
@@ -276,8 +240,71 @@ OPTsql_appendImplementation(Client cntxt
/* optimizers have to be registered in the optcatalog in opt_support.c.
* you have to path the file accordingly.
*/
-@include ../../optimizer/optimizerWrapper.mx
-@c
-#include "opt_statistics.h"
-@:wrapOptimizer(sql_append,OPT_CHECK_ALL)@
+/* Optimizer code wrapper
+The optimizer wrapper code is the interface to the MAL optimizer calls.
+It prepares the environment for the optimizers to do their work and removes
+the call itself to avoid endless recursions.
+
+Before an optimizer is finished, it should leave a clean state behind.
+Moreover, the information of the optimization step is saved for
+debugging and analysis.
+
+The wrapper expects the optimizers to return the number of
+actions taken, i.e. number of succesful changes to the code.
+*/
+
+str OPTsql_append(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p){
+ str modnme;
+ str fcnnme;
+ str msg= MAL_SUCCEED;
+ Symbol s= NULL;
+ lng t,clk= GDKusec();
+ int actions = 0;
+
+ optimizerInit();
+ if( p )
+ removeInstruction(mb, p);
+ OPTDEBUGsql_append mnstr_printf(cntxt->fdout,"=APPLY OPTIMIZER
sql_append\n");
+ if( p && p->argc > 1 ){
+ if( getArgType(mb,p,1) != TYPE_str ||
+ getArgType(mb,p,2) != TYPE_str ||
+ !isVarConstant(mb,getArg(p,1)) ||
+ !isVarConstant(mb,getArg(p,2))
+ ) {
+ throw(MAL, "optimizer.sql_append", ILLARG_CONSTANTS);
+ }
+ if( stk != 0){
+ modnme= *(str*)getArgReference(stk,p,1);
+ fcnnme= *(str*)getArgReference(stk,p,2);
+ } else {
+ modnme= getArgDefault(mb,p,1);
+ fcnnme= getArgDefault(mb,p,2);
+ }
+ s= findSymbol(cntxt->nspace,
putName(modnme,strlen(modnme)),putName(fcnnme,strlen(fcnnme)));
+
+ if( s == NULL) {
+ char buf[1024];
+ snprintf(buf,1024, "%s.%s",modnme,fcnnme);
+ throw(MAL, "optimizer.sql_append",
RUNTIME_OBJECT_UNDEFINED ":%s", buf);
+ }
+ mb = s->def;
+ stk= 0;
+ }
+ if( mb->errors ){
+ /* when we have errors, we still want to see them */
+ addtoMalBlkHistory(mb,"sql_append");
+ return MAL_SUCCEED;
+ }
+ actions= OPTsql_appendImplementation(cntxt, mb,stk,p);
+ msg= optimizerCheck(cntxt, mb, "optimizer.sql_append", actions,
t=(GDKusec() - clk),OPT_CHECK_ALL);
+ OPTDEBUGsql_append {
+ mnstr_printf(cntxt->fdout,"=FINISHED sql_append %d\n",actions);
+ printFunction(cntxt->fdout,mb,0,LIST_MAL_STMT | LIST_MAPI);
+ }
+ DEBUGoptimizers
+ mnstr_printf(cntxt->fdout,"#opt_reduce: " LLFMT " ms\n",t);
+ QOTupdateStatistics("sql_append",actions,t);
+ addtoMalBlkHistory(mb,"sql_append");
+ return msg;
+}
diff --git a/monetdb5/extras/mal_optimizer_template/opt_sql_append.h
b/monetdb5/extras/mal_optimizer_template/opt_sql_append.h
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/mal_optimizer_template/opt_sql_append.h
@@ -0,0 +1,39 @@
+/*
+ * 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-2012 MonetDB B.V.
+ * All Rights Reserved.
+*/
+#ifndef _OPT_SQL_APPEND_
+#define _OPT_SQL_APPEND_
+
+#ifdef WIN32
+#ifndef LIBOPT_SQL_APPEND
+#define opt_sql_append_export extern __declspec(dllimport)
+#else
+#define opt_sql_append_export extern __declspec(dllexport)
+#endif
+#else
+#define opt_sql_append_export extern
+#endif
+
+#include "opt_prelude.h"
+
+opt_sql_append_export str OPTsql_append(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr p);
+
+#define DEBUG_OPT_SQL_APPEND 61
+#define OPTDEBUGsql_append if (optDebug & ((lng)1 << DEBUG_OPT_SQL_APPEND))
+
+#endif /* _OPT_SQL_APPEND_ */
diff --git a/monetdb5/extras/mal_optimizer_template/opt_sql_append.mal
b/monetdb5/extras/mal_optimizer_template/opt_sql_append.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/mal_optimizer_template/opt_sql_append.mal
@@ -0,0 +1,7 @@
+pattern optimizer.sql_append():str
+address OPTsql_append
+comment "Avoid extra BAT copy with sql.append() whenever possible.";
+
+pattern optimizer.sql_append(mod:str, fcn:str):str
+address OPTsql_append
+comment "Avoid extra BAT copy with sql.append() whenever possible.";
diff --git a/monetdb5/modules/kernel/Makefile.ag
b/monetdb5/modules/kernel/Makefile.ag
--- a/monetdb5/modules/kernel/Makefile.ag
+++ b/monetdb5/modules/kernel/Makefile.ag
@@ -56,14 +56,14 @@ lib_kernel = {
microbenchmark.c microbenchmark.h \
mmath.mx \
sema.c \
- status.mx \
+ status.x status.h \
unix.c
}
headers_mal = {
HEADERS = mal
DIR = libdir/monetdb5
- SOURCES = calc.mal bat5.mx algebra.mx status.mx unix.mal \
+ SOURCES = calc.mal bat5.mx algebra.mx status.mal unix.mal \
mmath.mx lock.mal sema.mal alarm.mal batstr.mx batmtime.mx \
batcolor.mx batifthen.mx batcalc.mal batmmath.mx \
group.mx aggr.mx array.mx \
diff --git a/monetdb5/modules/kernel/status.mx
b/monetdb5/modules/kernel/status.c
rename from monetdb5/modules/kernel/status.mx
rename to monetdb5/modules/kernel/status.c
--- a/monetdb5/modules/kernel/status.mx
+++ b/monetdb5/modules/kernel/status.c
@@ -1,29 +1,25 @@
-@/
-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
+/*
+ * 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-2012 MonetDB B.V.
+ * All Rights Reserved.
+*/
-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
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list