Changeset: fe6978bb73df for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fe6978bb73df
Added Files:
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/mat.h
monetdb5/modules/mal/mat.mal
Removed Files:
monetdb5/modules/mal/mat.mx
monetdb5/modules/mal/prelude.mx
Modified Files:
monetdb5/modules/kernel/algebra2.mx
monetdb5/modules/kernel/array.mx
monetdb5/modules/mal/Makefile.ag
Branch: default
Log Message:
De-mx the mat module
Simple straightforward expansion of the Mx macros
diffs (truncated from 1233 to 300 lines):
diff --git a/monetdb5/modules/kernel/algebra2.mx
b/monetdb5/modules/kernel/algebra2.mx
--- a/monetdb5/modules/kernel/algebra2.mx
+++ b/monetdb5/modules/kernel/algebra2.mx
@@ -345,10 +345,6 @@ int CMDclustered_sum_@1(BAT **ret, BAT *
@:sumcmd(flt)@
@:sumcmd(dbl)@
-/*
- * @-
- */
-@include ../mal/prelude.mx
@c
/*
* @-
diff --git a/monetdb5/modules/kernel/array.mx b/monetdb5/modules/kernel/array.mx
--- a/monetdb5/modules/kernel/array.mx
+++ b/monetdb5/modules/kernel/array.mx
@@ -68,7 +68,6 @@ address ARRAYproject
comment "Fill an array representation with constants ";
# @- Implementation
-@include ../mal/prelude.mx
@c
/*============================================================================*/
#include "monetdb_config.h"
diff --git a/monetdb5/modules/mal/Makefile.ag b/monetdb5/modules/mal/Makefile.ag
--- a/monetdb5/modules/mal/Makefile.ag
+++ b/monetdb5/modules/mal/Makefile.ag
@@ -46,7 +46,7 @@ lib_mal = {
mal_io.c mal_io.h \
mal_mapi.c mal_mapi.h \
manual.c manual.h \
- mat.mx \
+ mat.c mat.h \
mdb.c mdb.h \
mkey.c mkey.h \
pcre.c \
@@ -73,7 +73,7 @@ headers_mal = {
profiler.mal const.mal attach.mal batExtensions.mal
algebraExtensions.mal \
inspect.mal manual.mal mal_io.mal pqueue.mx mkey.mal \
iterator.mal clients.mal \
- factories.mal groupby.mal mdb.mal pcre.mal tablet.mal mat.mx \
+ factories.mal groupby.mal mdb.mal pcre.mal tablet.mal mat.mal \
urlbox.mal transaction.mal \
mal_mapi.mal sabaoth.mal remote.mal \
txtsim.mal recycle.mal \
@@ -81,6 +81,6 @@ headers_mal = {
tokenizer.mx zorder.mal sample.mal
}
-EXTRA_DIST = algebraExtensions.mal attach.mal batExtensions.mal iterator.mal
constraints.mal groupby.mal histogram.mal mal_init.mal manual.mal mkey.mal
pcre.mal profiler.mal recycle.mal remote.mal sabaoth.mal trader.mal
transaction.mal txtsim.mal tablet.mal tablet.h sample.mal mal_mapi.mal
+EXTRA_DIST = algebraExtensions.mal attach.mal batExtensions.mal iterator.mal
constraints.mal groupby.mal histogram.mal mal_init.mal manual.mal mkey.mal
pcre.mal profiler.mal recycle.mal remote.mal sabaoth.mal trader.mal
transaction.mal txtsim.mal tablet.mal tablet.h sample.mal mal_mapi.mal mat.mal
EXTRA_DIST_DIR = Tests
diff --git a/monetdb5/modules/mal/mat.mx b/monetdb5/modules/mal/mat.c
rename from monetdb5/modules/mal/mat.mx
rename to monetdb5/modules/mal/mat.c
--- a/monetdb5/modules/mal/mat.mx
+++ b/monetdb5/modules/mal/mat.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
-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 mat
-
-@c
/*
- * @a Martin Kersten
- * @v 1
- * @+ Multiple association tables
+ * Martin Kersten
+ * Multiple association tables
* A MAT is a convenient way to deal represent horizontal fragmented
* tables. It combines the definitions of several, type compatible
* BATs under a single name.
@@ -41,130 +37,6 @@ All Rights Reserved.
* The primitives below are chosen to accomodate the SQL
* front-end to produce reasonable efficient code.
*/
-@mal
-module mat;
-
-pattern new(b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATpack
-comment "Define a Merge Association Table (MAT). Faal back to the pack
operation
-when this is called ";
-
-pattern pack(:any_2...):bat[:void,:any_2]
-address MATpackValues
-comment "Materialize the MAT (of values) into a BAT";
-
-pattern pack(:any_2...):bat[:oid,:any_2]
-address MATpackValues
-comment "Materialize the MAT (of values) into a BAT";
-
-pattern pack(b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATpack
-comment "Materialize the MAT into a BAT";
-
-pattern pack2(b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATpack2
-comment "Materialize the MAT into a BAT (by an append all)";
-
-pattern pack3(b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATpack3
-comment "Materialize the MAT into a BAT by considering the heads as void.
(used in centipede)";
-
-pattern slice(first:wrd, last:wrd, b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATpackSlice
-comment "Materialize a sliced MAT into a BAT";
-
-pattern slice(first:int, last:int, b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATpackSlice
-comment "Materialize a sliced MAT into a BAT";
-
-pattern slice(first:lng, last:lng, b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATpackSlice
-comment "Materialize a sliced MAT into a BAT";
-
-pattern project(map:bat[:void,:bte],
b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATproject
-comment "project using the map bat (contains which bat to use in scan order)";
-
-pattern project(map:bat[:void,:bte], b:bat[:any_1,:any_2]...):bat[:void,:any_2]
-address MATproject
-comment "project using the map bat (contains which bat to use in scan order)";
-
-pattern sortTail(b:bat[:any_1,:any_2]...)
- (sorted:bat[:void,:any_2], map:bat[:void,:bte])
-address MATsortTail
-comment "Returns a BAT copy sorted on the head column.";
-
-pattern sortReverseTail(b:bat[:any_1,:any_2]...)
- (sorted:bat[:void,:any_2], map:bat[:void,:bte])
-address MATsortReverseTail
-comment "Returns a BAT copy sorted on the head column.";
-
-pattern refine(sorted:bat[:void,:any_2], map:bat[:void,:bte],
b:bat[:any_1,:any_3]...)
- (rsorted:bat[:void,:oid], rmap:bat[:void,:bte])
-address MATrefine
-comment "refine map.";
-
-pattern refine_reverse(sorted:bat[:void,:any_2], map:bat[:void,:bte],
b:bat[:any_1,:any_3]...)
- (rsorted:bat[:void,:oid], rmap:bat[:void,:bte])
-address MATrefineReverse
-comment "refine map.";
-
-pattern print(b:bat[:any_1,:any_2]...):void
-address MATprint;
-
-pattern newIterator(grp:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MATnewIterator
-comment "Create an iterator over a MAT";
-
-pattern hasMoreElements(grp:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
-address MAThasMoreElements
-comment "Find the next element in the merge table";
-
-command info(g:str, e:str):bat[:any_1,:any_2]
-address MATinfo
-comment "retrieve the definition from the partition catalogue";
-
-# @-
-# @+ Implementation
-@h
-#ifndef _INSPECT_H
-#define _INSPECT_H
-#include <stdarg.h>
-#include "mal_resolve.h"
-#include "mal_exception.h"
-#include "mal_interpreter.h"
-
-#ifdef WIN32
-#if !defined(LIBMAL) && !defined(LIBATOMS) && !defined(LIBKERNEL) &&
!defined(LIBMAL) && !defined(LIBOPTIMIZER) && !defined(LIBSCHEDULER) &&
!defined(LIBMONETDB5)
-#define mat_export extern __declspec(dllimport)
-#else
-#define mat_export extern __declspec(dllexport)
-#endif
-#else
-#define mat_export extern
-#endif
-
-mat_export str MATpack(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-mat_export str MATpack2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-mat_export str MATpack3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-mat_export str MATpackValues(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
-mat_export str MATpackSlice(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
-mat_export str MATnewIterator(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
-mat_export str MAThasMoreElements(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
-mat_export str MATdummy(int *ret, str *grp);
-mat_export str MATinfo(int *ret, str *grp, str *elm);
-mat_export str MATprint(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
-mat_export str MATproject(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
-mat_export str MATrefine(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
-mat_export str MATsortReverseTail(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
-mat_export str MATsortTail(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
-mat_export str MATrefineReverse(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
-#endif /* _INSPECT_H */
-@c
-/*
- * @-
- * Mal symbol table and environment analysis.
- */
#include "monetdb_config.h"
#include "mat.h"
#include "group.h"
@@ -202,7 +74,6 @@ MAThasMoreElements(Client cntxt, MalBlkP
return MAL_SUCCEED;
}
/*
- * @-
* The pack is an ordinary multi BAT insert. Oid synchronistion
* between pieces should be ensured by the code generators.
* The pack operation could be quite expensive, because it
@@ -595,18 +466,18 @@ MATproject_any( BAT *map, BAT **bats, in
return res;
}
-@= project
+/* The type-specific projection operators */
static BAT *
-MATproject_@1( BAT *map, BAT **bats, int len, int ttpe )
+MATproject_bte( BAT *map, BAT **bats, int len, int ttpe )
{
BAT *res;
int i;
BUN j, cnt = BATcount(map);
- @1 *resT, **batsT;
+ bte *resT, **batsT;
bte *mapT;
res = BATnew(TYPE_void, ttpe, cnt);
- batsT = (@1**)GDKmalloc(sizeof(@1*) * len);
+ batsT = (bte**)GDKmalloc(sizeof(bte*) * len);
if (res == NULL || batsT == NULL) {
if (res)
BBPreclaim(res);
@@ -615,10 +486,10 @@ MATproject_@1( BAT *map, BAT **bats, int
return NULL;
}
BATseqbase(res, map->hseqbase);
- resT = (@1*)Tloc(res, 0);
+ resT = (bte*)Tloc(res, 0);
mapT = (bte*)Tloc(map, 0);
for (i=0; i<len; i++)
- batsT[i] = (@1*)Tloc(bats[i], 0);
+ batsT[i] = (bte*)Tloc(bats[i], 0);
for (j=0; j<cnt; j++)
resT[j] = *batsT[mapT[j]]++;
BATsetcount(res, j);
@@ -626,12 +497,99 @@ MATproject_@1( BAT *map, BAT **bats, int
GDKfree(batsT);
return res;
}
-@
-@c
-@:project(bte)@
-@:project(sht)@
-@:project(int)@
-@:project(lng)@
+
+static BAT *
+MATproject_sht( BAT *map, BAT **bats, int len, int ttpe )
+{
+ BAT *res;
+ int i;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list