Update of /cvsroot/monetdb/pathfinder/compiler/include
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv29987/include

Modified Files:
        logical.h logical_mnemonic.h physical.h physical_mnemonic.h 
        sql.h sql_mnemonic.h 
Log Message:
-- Re-organized our set of numbering operators. We have now 4 different
   operators with consistent semantics that cope with sorting and numbering:

     - la_rownum behaves exactly like SQLs ROW_NUMBER. It is used to generate
       position values.

     - la_rowrank behaves exactly like SQLs DENSE_RANK. It is used to generate
       the group by semantics of our functional source language. Up til now
       we only need the unpartitioned variant. (In MIL it is implemented
       using the sort extend.)

     - la_rank -- beside one exception -- behaves like la_rowrank. It is also
       implemented in our SQL compilation with a DENSE_RANK operation. la_rank's
       important difference to la_rowrank is that its resulting values are used
       solely for ordering. No operation should ever look at the generated 
values.
       While this difference is uninteresting in the resulting code it 
simplifies
       the algebraic optimizer a lot. Instead of repeatedly inferring a property
       that checks for column usage we can optimize based on the operator kind.

     - la_rowid generates unrepeatable unique numbers (as 'ROW_NUMBER() OVER ()'
       does in SQL or 'mark()' does in MIL). It is used to generate a new key
       column for mapping joins.

   In comparison to the old version we introduced a new operator la_rowrank,
   changed the semantic of la_rank from ROW_NUMBER to DENSE_RANK, and renamed
   the formular la_number operator into la_rowid.

   To implement positions in our Core to Algebra translation consistently we
   now use only la_rownum (to generate real position values),
   la_rank (to represent intermediate position order), and constant values
   (to represent unordered sequences).

-- Introduced new SQL operator DENSE_RANK.

-- Splitted up the physical pa_number operator into the 3 operators:
   pa_mark, pa_rank, and pa_mark_grp. The first and the last operator correspond
   to the respective MIL primitives. The result column of pa_rank is generated
   by the extend column of a CTrefine operation.

-- Added check for environment variable PF_DEBUG_PRINT_FRAG to disable the
   fragment printing in the AT&T dot output of the logical algebra.



Index: physical.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/physical.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- physical.h  4 Oct 2007 10:40:50 -0000       1.31
+++ physical.h  6 Dec 2007 08:42:36 -0000       1.32
@@ -91,7 +91,11 @@
     , pa_max            =  57 /**< Max operator */
     , pa_min            =  58 /**< Min operator */    
     , pa_sum            =  59 /**< Sum operator */
-    , pa_number         =  60 /**< Numbering operator */
+    , pa_mark           =  60 /**< consecutive numbering operator 
+                                   (starting from 1) */
+    , pa_rank           =  61 /**< ranking operator */
+    , pa_mark_grp       =  62 /**< grouped consecutive numbering operator
+                                   (starting from 1) */
     , pa_type           =  63 /**< selection of rows where a column is of a
                                    certain type */
     , pa_type_assert    =  64 /**< restriction of the type of a given column */
@@ -260,12 +264,19 @@
         PFalg_att_t     res;  /**< attribute to hold the result */
     } aggr;
 
-    /* semantic content for number operator */
+    /* semantic content for mark operators */
     struct {
-        PFalg_att_t     attname;  /**< name of generated (integer) attribute */
+        PFalg_att_t     res;      /**< name of generated (integer) attribute */
         PFalg_att_t     part;     /**< optional partitioning attribute,
                                        otherwise NULL */
-    } number;
+    } mark;
+
+    /** semantic content for rank operator */
+    struct {
+        PFalg_att_t      res;     /**< name of generated (integer) attribute */
+        PFord_ordering_t ord;    /**< ordering to consider for duplicate
+                                      elimination */
+    } rank;
 
     /* semantic content for type test operator */
     struct {
@@ -620,9 +631,12 @@
 
 /****************************************************************/
 
-PFpa_op_t *PFpa_number (const PFpa_op_t *n,
-                        PFalg_att_t new_att,
-                        PFalg_att_t part);
+PFpa_op_t *PFpa_mark (const PFpa_op_t *n, PFalg_att_t new_att);
+PFpa_op_t *PFpa_rank (const PFpa_op_t *n, PFalg_att_t new_att,
+                      PFord_ordering_t ord);
+PFpa_op_t *PFpa_mark_grp (const PFpa_op_t *n,
+                          PFalg_att_t new_att,
+                          PFalg_att_t part);
 
 /**
  * Type operator

Index: logical_mnemonic.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/logical_mnemonic.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- logical_mnemonic.h  16 Oct 2007 15:46:51 -0000      1.28
+++ logical_mnemonic.h  6 Dec 2007 08:42:36 -0000       1.29
@@ -103,19 +103,22 @@
 #define to(a,b,c,d,e)     PFla_to ((a),(b),(c),(d),(e))
 
 /* operator applying a (partitioned) aggregation function on a column */
-#define aggr(a,b,c,d,e)      PFla_aggr ((a),(b),(c),(d),(e))
+#define aggr(a,b,c,d,e)   PFla_aggr ((a),(b),(c),(d),(e))
 
 /* (partitioned) row counting operator */
 #define count(a,b,c)      PFla_count ((a),(b),(c))
 
-/** rownum operator */
-#define rownum(a,b,c,d)   PFla_rownum ((a),(b),(c),(d))
+/** rownumber operator */
+#define rownum(a,b,c,d)  PFla_rownum ((a),(b),(c),(d))
+
+/** rowrank operator */
+#define rowrank(a,b,c)    PFla_rowrank ((a),(b),(c))
 
 /** rank operator */
 #define rank(a,b,c)       PFla_rank ((a),(b),(c))
 
-/** number operator */
-#define number(a,b)       PFla_number ((a),(b))
+/** numbering operator */
+#define rowid(a,b)        PFla_rowid ((a),(b))
 
 /** type test operator */
 #define type(a,b,c,d)     PFla_type ((a),(b),(c),(d))

Index: sql_mnemonic.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/sql_mnemonic.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- sql_mnemonic.h      27 Nov 2007 21:26:44 -0000      1.30
+++ sql_mnemonic.h      6 Dec 2007 08:42:38 -0000       1.31
@@ -129,7 +129,8 @@
                                      
 /* .......... OLAP Functionality .......... */
 #define over(a,b)                    PFsql_over(a,b)
-#define rownumber()                  PFsql_rownumber()
+#define row_number()                 PFsql_row_number()
+#define dense_rank()                 PFsql_dense_rank()
 #define window_clause(p,o)           PFsql_window_clause(p,o)
 #define order_by(a)                  PFsql_order_by(a)
 

Index: physical_mnemonic.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/physical_mnemonic.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- physical_mnemonic.h 4 Oct 2007 10:40:50 -0000       1.23
+++ physical_mnemonic.h 6 Dec 2007 08:42:37 -0000       1.24
@@ -32,39 +32,39 @@
 /* Also import generic algebra stuff */
 #include "algebra_mnemonic.h"
 
-#define serialize(a,b,c)  PFpa_serialize ((a), (b), (c))
+#define serialize(a,b,c)     PFpa_serialize ((a), (b), (c))
 
 /** literal table construction */
-#define lit_tbl(a,b,c)    PFpa_lit_tbl ((a), (b), (c))
+#define lit_tbl(a,b,c)       PFpa_lit_tbl ((a), (b), (c))
 
 /** empty table construction */
-#define empty_tbl(atts)   PFpa_empty_tbl (atts)
+#define empty_tbl(atts)      PFpa_empty_tbl (atts)
 
 /** ColumnAttach */
-#define attach(a,b,c)     PFpa_attach ((a), (b), (c))
+#define attach(a,b,c)        PFpa_attach ((a), (b), (c))
 
 /** cartesian product */
-#define cross(a,b)        PFpa_cross ((a),(b))
+#define cross(a,b)           PFpa_cross ((a),(b))
 
 /** join that preserves the order of the first argument */
-#define leftjoin(a,b,c,d) PFpa_leftjoin ((a), (b), (c), (d))
+#define leftjoin(a,b,c,d)    PFpa_leftjoin ((a), (b), (c), (d))
 
 #if 0
 /** NestedLoopJoin */
-#define nljoin(a,b,c,d)   PFpa_nljoin ((a), (b), (c), (d))
+#define nljoin(a,b,c,d)      PFpa_nljoin ((a), (b), (c), (d))
 
 /** MergeJoin */
-#define merge_join(a,b,c,d) PFpa_merge_join ((a), (b), (c), (d))
+#define merge_join(a,b,c,d)  PFpa_merge_join ((a), (b), (c), (d))
 #endif
 
 /** standard join operator */
-#define eqjoin(a,b,c,d)   PFpa_eqjoin ((a), (b), (c), (d))
+#define eqjoin(a,b,c,d)      PFpa_eqjoin ((a), (b), (c), (d))
 
 /** semijoin operator */
-#define semijoin(a,b,c,d) PFpa_semijoin ((a), (b), (c), (d))
+#define semijoin(a,b,c,d)    PFpa_semijoin ((a), (b), (c), (d))
 
 /** thetajoin operator */
-#define thetajoin(a,b,c,d)  PFpa_thetajoin ((a), (b), (c), (d))
+#define thetajoin(a,b,c,d)   PFpa_thetajoin ((a), (b), (c), (d))
 
 /** thetajoin operator */
 #define unq2_tjoin(a,b,c,d,e,f,g) PFpa_unq2_thetajoin((a), (b), (c), \
@@ -75,40 +75,42 @@
                                                  (d), (e), (f), (g))
 
 /** projection operator */
-#define project(a,b,c)    PFpa_project ((a), (b), (c))
+#define project(a,b,c)       PFpa_project ((a), (b), (c))
 
-#define select_(a,b)      PFpa_select ((a), (b))
-#define val_select(a,b,c) PFpa_value_select ((a), (b), (c))
+#define select_(a,b)         PFpa_select ((a), (b))
+#define val_select(a,b,c)    PFpa_value_select ((a), (b), (c))
 
-#define append_union(a,b) PFpa_append_union ((a), (b))
-#define merge_union(a,b,c) PFpa_merge_union ((a), (b), (c))
+#define append_union(a,b)    PFpa_append_union ((a), (b))
+#define merge_union(a,b,c)   PFpa_merge_union ((a), (b), (c))
 
-#define intersect(a,b)    PFpa_intersect ((a), (b))
-#define difference(a,b)   PFpa_difference ((a), (b))
+#define intersect(a,b)       PFpa_intersect ((a), (b))
+#define difference(a,b)      PFpa_difference ((a), (b))
 /** HashDistinct */
-#define sort_distinct(a,b) PFpa_sort_distinct ((a), (b))
+#define sort_distinct(a,b)   PFpa_sort_distinct ((a), (b))
 /** StandardSort */
-#define std_sort(a,b)     PFpa_std_sort ((a), (b))
+#define std_sort(a,b)        PFpa_std_sort ((a), (b))
 /** RefineSort */
-#define refine_sort(a,b,c) PFpa_refine_sort ((a), (b), (c))
+#define refine_sort(a,b,c)   PFpa_refine_sort ((a), (b), (c))
 
-#define fun_1to1(a,b,c,d) PFpa_fun_1to1 ((a), (b), (c), (d))
+#define fun_1to1(a,b,c,d)    PFpa_fun_1to1 ((a), (b), (c), (d))
 
-#define bool_not(a,b,c) PFpa_bool_not ((a), (b), (c))
+#define bool_not(a,b,c)      PFpa_bool_not ((a), (b), (c))
 
-#define hash_count(a,b,c) PFpa_hash_count ((a), (b), (c))
+#define hash_count(a,b,c)    PFpa_hash_count ((a), (b), (c))
 
-#define aggr(a,b,c,d, e) PFpa_aggr ((a), (b), (c), (d), (e))
+#define aggr(a,b,c,d, e)     PFpa_aggr ((a), (b), (c), (d), (e))
 
 /** a sort specification list is just another attribute list */
-#define sortby(...)     PFord_order_intro (__VA_ARGS__)
+#define sortby(...)          PFord_order_intro (__VA_ARGS__)
 
-/** Numbering operator */
-#define number(a,b,c)     PFpa_number ((a), (b), (c))
+/** Numbering operators */
+#define mark(a,b)            PFpa_mark ((a), (b))
+#define rank(a,b,c)          PFpa_rank ((a), (b), (c))
+#define mark_grp(a,b,c)      PFpa_mark_grp ((a), (b), (c))
 
-#define type(a,b,c,d)     PFpa_type ((a), (b), (c), (d))
-#define type_assert(a,b,c)  PFpa_type_assert ((a), (b), (c))
-#define cast(a,b,c,d) PFpa_cast ((a), (b), (c), (d))
+#define type(a,b,c,d)        PFpa_type ((a), (b), (c), (d))
+#define type_assert(a,b,c)   PFpa_type_assert ((a), (b), (c))
+#define cast(a,b,c,d)        PFpa_cast ((a), (b), (c), (d))
 
 /** StaircaseJoin */
 #define llscj_anc(a,b,c,d,e,f,g) PFpa_llscj_anc ((a), (b), (c), \
@@ -134,62 +136,62 @@
 #define llscj_prec_self(a,b,c,d,e,f,g) PFpa_llscj_prec_self ((a),(b), (c), \
         (d), (e), (f), (g))
 
-#define doc_tbl(a,b,c)    PFpa_doc_tbl ((a), (b), (c))
+#define doc_tbl(a,b,c)       PFpa_doc_tbl ((a), (b), (c))
 #define doc_access(a,b,c,d,e) PFpa_doc_access ((a), (b), (c), (d), (e))
 
 /* twig root operator */
-#define twig(a,b,c)       PFpa_twig ((a),(b),(c))
+#define twig(a,b,c)          PFpa_twig ((a),(b),(c))
 
 /* twig constructor sequence */
-#define fcns(a,b)         PFpa_fcns ((a),(b))
+#define fcns(a,b)            PFpa_fcns ((a),(b))
 
 /* document node-constructing operator */
-#define docnode(a,b,c)    PFpa_docnode ((a),(b),(c))
+#define docnode(a,b,c)       PFpa_docnode ((a),(b),(c))
 
 /* element-constructing operator */
-#define element(a,b,c,d) PFpa_element ((a),(b),(c),(d))
+#define element(a,b,c,d)     PFpa_element ((a),(b),(c),(d))
 
 /* attribute-constructing operator */
-#define attribute(a,b,c,d) PFpa_attribute ((a),(b),(c),(d))
+#define attribute(a,b,c,d)   PFpa_attribute ((a),(b),(c),(d))
 
 /* text node-constructing operator */
-#define textnode(a,b,c)   PFpa_textnode ((a),(b),(c))
+#define textnode(a,b,c)      PFpa_textnode ((a),(b),(c))
 
 /* comment-constructing operator */
-#define comment(a,b,c)    PFpa_comment ((a),(b),(c))
+#define comment(a,b,c)       PFpa_comment ((a),(b),(c))
 
 /* processing instruction-constructing operator */
-#define processi(a,b,c,d) PFpa_processi ((a),(b),(c),(d))
+#define processi(a,b,c,d)    PFpa_processi ((a),(b),(c),(d))
 
 /* constructor content operator (elem|doc) */
-#define content(a,b,c,d)  PFpa_content ((a),(b),(c),(d))
+#define content(a,b,c,d)     PFpa_content ((a),(b),(c),(d))
 
 #define merge_adjacent(a,b,c,d,e) PFpa_merge_adjacent ((a),(b),(c),(d),(e))
 
 /** roots() operator */
-#define roots(a)          PFpa_roots (a)
+#define roots(a)             PFpa_roots (a)
 
-#define fragment(a)       PFpa_fragment (a)
-#define frag_union(a,b)   PFpa_frag_union ((a), (b))
+#define fragment(a)          PFpa_fragment (a)
+#define frag_union(a,b)      PFpa_frag_union ((a), (b))
 
 /** empty fragment list */
-#define empty_frag()      PFpa_empty_frag ()
+#define empty_frag()         PFpa_empty_frag ()
 
-#define cond_err(a,b,c,d) PFpa_cond_err ((a), (b), (c), (d))
-#define nil()             PFpa_nil ()
-#define trace(a,b,c,d)    PFpa_trace ((a),(b),(c),(d))
-#define trace_msg(a,b,c,d) PFpa_trace_msg ((a), (b), (c), (d))
-#define trace_map(a,b,c,d) PFpa_trace_map ((a), (b), (c), (d))
+#define cond_err(a,b,c,d)    PFpa_cond_err ((a), (b), (c), (d))
+#define nil()                PFpa_nil ()
+#define trace(a,b,c,d)       PFpa_trace ((a),(b),(c),(d))
+#define trace_msg(a,b,c,d)   PFpa_trace_msg ((a), (b), (c), (d))
+#define trace_map(a,b,c,d)   PFpa_trace_map ((a), (b), (c), (d))
 
 /* recursion operators */
-#define rec_fix(a,b)      PFpa_rec_fix ((a),(b))
-#define rec_param(a,b)    PFpa_rec_param ((a),(b))
-#define rec_arg(a,b,c)    PFpa_rec_arg ((a),(b),(c))
-#define rec_base(a,b)     PFpa_rec_base ((a),(b))
-#define rec_border(a)     PFpa_rec_border (a)
+#define rec_fix(a,b)         PFpa_rec_fix ((a),(b))
+#define rec_param(a,b)       PFpa_rec_param ((a),(b))
+#define rec_arg(a,b,c)       PFpa_rec_arg ((a),(b),(c))
+#define rec_base(a,b)        PFpa_rec_base ((a),(b))
+#define rec_border(a)        PFpa_rec_border (a)
 
-#define fn_concat(a,b,c,d)  PFpa_fn_concat ((a), (b), (c), (d))
-#define fn_contains(a,b,c,d)  PFpa_fn_contains ((a), (b), (c), (d))
-#define string_join(a,b,c,d)  PFpa_string_join ((a),(b),(c),(d))
+#define fn_concat(a,b,c,d)   PFpa_fn_concat ((a), (b), (c), (d))
+#define fn_contains(a,b,c,d) PFpa_fn_contains ((a), (b), (c), (d))
+#define string_join(a,b,c,d) PFpa_string_join ((a),(b),(c),(d))
 
 /* vim:set shiftwidth=4 expandtab: */

Index: sql.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/sql.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- sql.h       27 Nov 2007 21:26:44 -0000      1.38
+++ sql.h       6 Dec 2007 08:42:37 -0000       1.39
@@ -180,7 +180,9 @@
     , sql_avg               /* AVG () aggregate */
 
     , sql_over              /* OVER expression */
-    , sql_rownumber         /* ROWNUMBER () function
+    , sql_row_number        /* ROW_NUMBER () function
+                               (first argument of a sql_over operator) */
+    , sql_dense_rank        /* DENSE_RANK () function
                                (first argument of a sql_over operator) */
     , sql_wnd_clause        /* a window clause
                                (second argument of a sql_over operator) */
@@ -832,9 +834,13 @@
  */
 PFsql_t * PFsql_over (const PFsql_t *a, const PFsql_t *b);
 /**
- * Create a SQL tree node representing SQL `ROWNUMBER()' function.
+ * Create a SQL tree node representing SQL `ROW_NUMBER()' function.
  */
-PFsql_t * PFsql_rownumber (void);
+PFsql_t * PFsql_row_number (void);
+/**
+ * Create a SQL tree node representing SQL `DENSE_RANK()' function.
+ */
+PFsql_t * PFsql_dense_rank (void);
 /**
  * The whole clause, consisting of sortkey- and
  * partition expressions is called window_clause.

Index: logical.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/logical.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- logical.h   7 Nov 2007 22:00:45 -0000       1.44
+++ logical.h   6 Dec 2007 08:42:35 -0000       1.45
@@ -89,16 +89,32 @@
     , la_min             = 34 /**< operator for (partitioned) min of a column 
*/
     , la_sum             = 35 /**< operator for (partitioned) sum of a column 
*/
     , la_count           = 36 /**< (partitioned) row counting operator */
-    , la_rownum          = 37 /**< consecutive number generation */
-    , la_rank            = 38 /**< arbitrary but ordered number generation */
-    , la_number          = 39 /**< arbitrary, unordered number generation */
-    , la_type            = 40 /**< selection of rows where a column is of a
+    /* Semantics of la_row_num, la_rowrank, la_rank, and la_rowid:
+       - la_rownum behaves exactly like SQLs ROW_NUMBER. It is used to generate
+         position values.
+       - la_rowrank behaves exactly like SQLs DENSE_RANK. It is used to 
generate
+         the group by semantics of our functional source language.
+       - la_rank -- beside one exception -- behaves like la_rowrank. It is also
+         implemented in our SQL compilation with a DENSE_RANK operation. 
la_rank's
+         important difference to la_rowrank is that its resulting values are 
used
+         solely for ordering. No operation should ever look at the generated 
values.
+         While this difference is uninteresting in the resulting code it 
simplifies
+         the algebraic optimizer a lot. Instead of repeatedly inferring a 
property
+         that checks for column usage we can optimize based on the operator 
kind.
+       - la_rowid generates unrepeatable unique numbers (as 'ROW_NUMBER() OVER 
()'
+         does in SQL or 'mark()' does in MIL). It is used to generate a new key
+         column. */
+    , la_rownum          = 37 /**< consecutive number generation (ROW_NUMBER) 
*/
+    , la_rowrank         = 38 /**< consecutive number generation (DENSE_RANK) 
*/
+    , la_rank            = 39 /**< arbitrary but ordered number generation */
+    , la_rowid           = 40 /**< arbitrary, unordered number generation */
+    , la_type            = 41 /**< selection of rows where a column is of a
                                    certain type */
-    , la_type_assert     = 41 /**< restricts the type of a relation */
-    , la_cast            = 42 /**< type cast of an attribute */
-    , la_seqty1          = 43 /**< test for exactly one type occurrence in one
+    , la_type_assert     = 42 /**< restricts the type of a relation */
+    , la_cast            = 43 /**< type cast of an attribute */
+    , la_seqty1          = 44 /**< test for exactly one type occurrence in one
                                    iteration (Pathfinder extension) */
-    , la_all             = 44 /**< test if all items in an iteration are true 
*/
+    , la_all             = 45 /**< test if all items in an iteration are true 
*/
     , la_step            = 50 /**< XPath location step */
     , la_step_join       = 51 /**< duplicate generating path step */
     , la_guide_step      = 52 /**< XPath location step 
@@ -295,26 +311,19 @@
         PFalg_att_t     res;   /**< attribute to hold the result */
     } aggr;
 
-    /* semantic content for rownum operator */
+    /* semantic content for rownumber, rowrank, and rank operator */
     struct {
         PFalg_att_t     res;      /**< name of generated (integer) attribute */
         PFord_ordering_t sortby;  /**< sort crit. (list of attribute names
                                        and direction) */
         PFalg_att_t     part;     /**< optional partitioning attribute,
                                        otherwise NULL */
-    } rownum;
-
-    /* semantic content for rank operator */
-    struct {
-        PFalg_att_t     res;      /**< name of generated (integer) attribute */
-        PFord_ordering_t sortby;  /**< sort crit. (list of attribute names
-                                       and direction) */
-    } rank;
+    } sort;
 
-    /* semantic content for number operator */
+    /* semantic content for rowid operator */
     struct {
         PFalg_att_t     res;      /**< name of generated (integer) attribute */
-    } number;
+    } rowid;
 
     /* semantic content for type test, cast, and type_assert operator */
     struct {
@@ -516,7 +525,7 @@
  * A dummy operator that is generated whenever some rewrite 
  * throws away an operator (e.g., '*p = *L(p);') and the replacement
  * is an already existing node that may not be split into multiple 
- * operators (e.g. a number operator).
+ * operators (e.g. a rowid operator).
  */
 PFla_op_t * PFla_dummy (PFla_op_t *n);
 
@@ -753,12 +762,16 @@
 PFla_op_t * PFla_rownum (const PFla_op_t *n, PFalg_att_t a,
                          PFord_ordering_t s, PFalg_att_t p);
 
+/** Constructor for the row ranking operator. */
+PFla_op_t * PFla_rowrank (const PFla_op_t *n, PFalg_att_t a,
+                          PFord_ordering_t s);
+
 /** Constructor for the ranking operator. */
 PFla_op_t * PFla_rank (const PFla_op_t *n, PFalg_att_t a,
                        PFord_ordering_t s);
 
 /** Constructor for the numbering operator. */
-PFla_op_t * PFla_number (const PFla_op_t *n, PFalg_att_t a);
+PFla_op_t * PFla_rowid (const PFla_op_t *n, PFalg_att_t a);
 
 /**
  * Constructor for type test of column values. The result is


-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to