Update of /cvsroot/monetdb/pathfinder/compiler/algebra
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv3599/compiler/algebra
Modified Files:
Tag: M5XQ
builtins.c
Log Message:
propagated changes of Friday Jun 12 2009 - Monday Jun 15 2009
from the development trunk to the M5XQ branch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009/06/12 - tsheyar: compiler/algebra/builtins.c,1.125
-- Replaced aggregate operators count, min, max, avg, sum, prod, seqty1,
and all in the algebra by a single aggregate operator ``aggr''
that can handle multiple aggregates. The aggregate entries
are of kind count, min, max, avg, sum, prod, seqty1, all, and dist.
-- Added new aggregate kind ``dist'' that allows to represent group by
columns that functionally depend on the partitioning criterion
in the result of the grouping aggregate.
-- Added rewrite that merges aggregates.
-- Added rewrite that removes superfluous aggregates.
-- Added rewrite that pushes a rank operator through an aggregate.
-- Extended the XML import to cope with the old
as well as the new representation of aggregates.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009/06/14 - tsheyar: compiler/algebra/builtins.c,1.126
-- Fix order of function call arguments.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
U builtins.c
Index: builtins.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/builtins.c,v
retrieving revision 1.121.2.3
retrieving revision 1.121.2.4
diff -u -d -r1.121.2.3 -r1.121.2.4
--- builtins.c 20 May 2009 16:28:04 -0000 1.121.2.3
+++ builtins.c 15 Jun 2009 12:43:55 -0000 1.121.2.4
@@ -344,6 +344,24 @@
.frag = PFla_empty_set () };
}
+/* ----------------------------------------------- */
+/* Helper Function to Translate Simple Aggregates */
+/* ----------------------------------------------- */
+
+/**
+ * Construct a simple aggregate.
+ */
+static PFla_op_t *
+simple_aggr (const PFla_op_t *n,
+ PFalg_col_t part,
+ PFalg_aggr_kind_t kind,
+ PFalg_col_t res,
+ PFalg_col_t col)
+{
+ PFalg_aggr_t aggr = PFalg_aggr (kind, res, col);
+ return PFla_aggr (n, part, 1, &aggr);
+}
+
/* ------------ */
/* 2. ACCESSORS */
/* ------------ */
@@ -4814,10 +4832,13 @@
{
PFla_op_t *count = select_ (
not (eq (attach (
- count (
+ simple_aggr (
project (args[0].rel,
proj (col_iter,
col_iter)),
- col_item, col_iter),
+ col_iter,
+ alg_aggr_count,
+ col_item,
+ col_NULL),
col_item1, lit_int (1)),
col_item2, col_item1, col_item),
col_res, col_item2),
@@ -4851,9 +4872,13 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- PFla_op_t *count = count (project (args[0].rel,
- proj (col_iter, col_iter)),
- col_item, col_iter);
+ PFla_op_t *count = simple_aggr (
+ project (args[0].rel,
+ proj (col_iter, col_iter)),
+ col_iter,
+ alg_aggr_count,
+ col_item,
+ col_NULL);
char *err_string = "err:FORG0003, fn:exactly-one called with "
"a sequence containing more than one item.";
@@ -5041,9 +5066,13 @@
{
(void) ordering; (void) side_effects;
- PFla_op_t *count = count (project (args[0].rel,
- proj (col_iter, col_iter)),
- col_item, col_iter);
+ PFla_op_t *count = simple_aggr (
+ project (args[0].rel,
+ proj (col_iter, col_iter)),
+ col_iter,
+ alg_aggr_count,
+ col_item,
+ col_NULL);
return (struct PFla_pair_t) {
.rel = attach (
@@ -5071,7 +5100,7 @@
* ()
*/
static struct PFla_pair_t
-fn_aggr (PFalg_simple_type_t t, PFla_op_kind_t kind,
+fn_aggr (PFalg_simple_type_t t, PFalg_aggr_kind_t kind,
const PFla_op_t *loop,
bool ordering,
PFla_op_t **side_effects,
@@ -5080,11 +5109,14 @@
(void) loop; (void) ordering; (void) side_effects;
return (struct PFla_pair_t) {
- .rel = attach(aggr (kind,
- project (cast(args[0].rel, col_cast, col_item, t),
- proj (col_iter, col_iter),
- proj (col_item, col_cast)),
- col_item, col_item, col_iter),
+ .rel = attach(simple_aggr (
+ project (cast(args[0].rel, col_cast, col_item, t),
+ proj (col_iter, col_iter),
+ proj (col_item, col_cast)),
+ col_iter,
+ kind,
+ col_item,
+ col_item),
col_pos, lit_nat (1)),
.frag = PFla_empty_set () };
}
@@ -5098,7 +5130,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_dbl, la_avg, loop, ordering, side_effects, args);
+ return fn_aggr(aat_dbl, alg_aggr_avg, loop, ordering, side_effects, args);
}
/**
@@ -5110,7 +5142,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_str, la_max, loop, ordering, side_effects, args);
+ return fn_aggr(aat_str, alg_aggr_max, loop, ordering, side_effects, args);
}
/**
@@ -5122,7 +5154,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_int, la_max, loop, ordering, side_effects, args);
+ return fn_aggr(aat_int, alg_aggr_max, loop, ordering, side_effects, args);
}
/**
@@ -5134,7 +5166,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_dec, la_max, loop, ordering, side_effects, args);
+ return fn_aggr(aat_dec, alg_aggr_max, loop, ordering, side_effects, args);
}
/**
@@ -5146,7 +5178,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_dbl, la_max, loop, ordering, side_effects, args);
+ return fn_aggr(aat_dbl, alg_aggr_max, loop, ordering, side_effects, args);
}
/**
@@ -5158,7 +5190,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_str, la_min, loop, ordering, side_effects, args);
+ return fn_aggr(aat_str, alg_aggr_min, loop, ordering, side_effects, args);
}
/**
@@ -5170,7 +5202,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_int, la_min, loop, ordering, side_effects, args);
+ return fn_aggr(aat_int, alg_aggr_min, loop, ordering, side_effects, args);
}
/**
@@ -5182,7 +5214,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_dec, la_min, loop, ordering, side_effects, args);
+ return fn_aggr(aat_dec, alg_aggr_min, loop, ordering, side_effects, args);
}
/**
@@ -5194,7 +5226,7 @@
PFla_op_t **side_effects,
struct PFla_pair_t *args)
{
- return fn_aggr(aat_dbl, la_min, loop, ordering, side_effects, args);
+ return fn_aggr(aat_dbl, alg_aggr_min, loop, ordering, side_effects, args);
}
/**
@@ -5221,11 +5253,14 @@
{
(void) ordering; (void) side_effects;
- PFla_op_t *sum = aggr (la_sum,
- project (cast(args[0].rel, col_cast, col_item, t),
- proj (col_iter, col_iter),
- proj (col_item, col_cast)),
- col_item, col_item, col_iter);
+ PFla_op_t *sum = simple_aggr (
+ project (cast(args[0].rel, col_cast, col_item, t),
+ proj (col_iter, col_iter),
+ proj (col_item, col_cast)),
+ col_iter,
+ alg_aggr_sum,
+ col_item,
+ col_item);
return (struct PFla_pair_t) {
.rel = attach (
@@ -5249,11 +5284,14 @@
{
(void) ordering; (void) side_effects;
- PFla_op_t *prod = aggr (la_prod,
- project (cast(args[0].rel, col_cast, col_item, t),
- proj (col_iter, col_iter),
- proj (col_item, col_cast)),
- col_item, col_item, col_iter);
+ PFla_op_t *prod = simple_aggr (
+ project (cast(args[0].rel, col_cast, col_item, t),
+ proj (col_iter, col_iter),
+ proj (col_item, col_cast)),
+ col_iter,
+ alg_aggr_prod,
+ col_item,
+ col_item);
return (struct PFla_pair_t) {
.rel = attach (
@@ -5345,11 +5383,14 @@
{
(void) ordering; (void) side_effects;
- PFla_op_t *sum = aggr (la_sum,
- project (cast (args[0].rel, col_cast, col_item, t),
- proj (col_iter, col_iter),
- proj (col_item, col_cast)),
- col_item, col_item, col_iter);
+ PFla_op_t *sum = simple_aggr (
+ project (cast (args[0].rel, col_cast, col_item, t),
+ proj (col_iter, col_iter),
+ proj (col_item, col_cast)),
+ col_iter,
+ alg_aggr_sum,
+ col_item,
+ col_item);
return (struct PFla_pair_t) {
.rel = attach (
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins