aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/path
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/path')
-rw-r--r--src/backend/optimizer/path/_deadcode/predmig.c4
-rw-r--r--src/backend/optimizer/path/_deadcode/xfunc.c8
-rw-r--r--src/backend/optimizer/path/allpaths.c6
-rw-r--r--src/backend/optimizer/path/costsize.c6
-rw-r--r--src/backend/optimizer/path/indxpath.c66
-rw-r--r--src/backend/optimizer/path/joinpath.c34
-rw-r--r--src/backend/optimizer/path/joinrels.c14
-rw-r--r--src/backend/optimizer/path/orindxpath.c12
-rw-r--r--src/backend/optimizer/path/prune.c6
9 files changed, 78 insertions, 78 deletions
diff --git a/src/backend/optimizer/path/_deadcode/predmig.c b/src/backend/optimizer/path/_deadcode/predmig.c
index 85c4952ab59..9c57e16536e 100644
--- a/src/backend/optimizer/path/_deadcode/predmig.c
+++ b/src/backend/optimizer/path/_deadcode/predmig.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/_deadcode/Attic/predmig.c,v 1.3 1999/05/25 22:04:22 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/_deadcode/Attic/predmig.c,v 1.4 1999/05/25 22:41:35 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -487,7 +487,7 @@ xfunc_form_groups(Query *queryInfo, Stream root, Stream bottom)
}
-/* ------------------- UTILITY FUNCTIONS ------------------------- */
+/* ------------------- UTILITY FUNCTIONS ------------------------- */
/*
** xfunc_free_stream
diff --git a/src/backend/optimizer/path/_deadcode/xfunc.c b/src/backend/optimizer/path/_deadcode/xfunc.c
index 7ee1c3616c5..3da0edba474 100644
--- a/src/backend/optimizer/path/_deadcode/xfunc.c
+++ b/src/backend/optimizer/path/_deadcode/xfunc.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/_deadcode/Attic/xfunc.c,v 1.3 1999/05/25 16:09:31 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/_deadcode/Attic/xfunc.c,v 1.4 1999/05/25 22:41:36 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -144,7 +144,7 @@ xfunc_shouldpull(Query *queryInfo,
Path childpath,
JoinPath parentpath,
int whichchild,
- RestrictInfo * maxcinfopt) /* Out: pointer to clause
+ RestrictInfo *maxcinfopt) /* Out: pointer to clause
* to pullup */
{
LispValue clauselist,
@@ -225,7 +225,7 @@ xfunc_shouldpull(Query *queryInfo,
|| (!is_join(childpath)
&& (whichchild == INNER)
&& IsA(parentpath, NestPath)
- && !IsA(parentpath, HashPath)
+ &&!IsA(parentpath, HashPath)
&&!IsA(parentpath, MergePath)))))
{
@@ -1423,7 +1423,7 @@ do { \
** Just like _copyRel, but doesn't copy the paths
*/
bool
-xfunc_copyrel(RelOptInfo from, RelOptInfo * to)
+xfunc_copyrel(RelOptInfo from, RelOptInfo *to)
{
RelOptInfo newnode;
diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c
index 8ebcc5d4794..d9b65c72fb9 100644
--- a/src/backend/optimizer/path/allpaths.c
+++ b/src/backend/optimizer/path/allpaths.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.45 1999/05/25 16:09:22 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.46 1999/05/25 22:41:25 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -48,7 +48,7 @@ static RelOptInfo *make_one_rel_by_joins(Query *root, List *rels,
int levels_needed);
#ifdef OPTIMIZER_DEBUG
-static void debug_print_rel(Query *root, RelOptInfo * rel);
+static void debug_print_rel(Query *root, RelOptInfo *rel);
#endif
@@ -355,7 +355,7 @@ print_path(Query *root, Path *path, int indent)
}
static void
-debug_print_rel(Query *root, RelOptInfo * rel)
+debug_print_rel(Query *root, RelOptInfo *rel)
{
List *l;
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index 327f58cf320..4d3e7d895ee 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.37 1999/05/25 16:09:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.38 1999/05/25 22:41:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -390,7 +390,7 @@ cost_hashjoin(Cost outercost,
* Returns the size.
*/
int
-compute_rel_size(RelOptInfo * rel)
+compute_rel_size(RelOptInfo *rel)
{
Cost temp;
int temp1;
@@ -413,7 +413,7 @@ compute_rel_size(RelOptInfo * rel)
* Returns the width of the tuple as a fixnum.
*/
int
-compute_rel_width(RelOptInfo * rel)
+compute_rel_width(RelOptInfo *rel)
{
return compute_targetlist_width(get_actual_tlist(rel->targetlist));
}
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c
index 29694ed2587..4a2dbbb0fe5 100644
--- a/src/backend/optimizer/path/indxpath.c
+++ b/src/backend/optimizer/path/indxpath.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.55 1999/05/25 16:09:24 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.56 1999/05/25 22:41:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -45,32 +45,32 @@
#include "utils/lsyscache.h"
-static void match_index_orclauses(RelOptInfo * rel, RelOptInfo * index, int indexkey,
+static void match_index_orclauses(RelOptInfo *rel, RelOptInfo *index, int indexkey,
int xclass, List *restrictinfo_list);
static bool match_index_to_operand(int indexkey, Expr *operand,
- RelOptInfo * rel, RelOptInfo * index);
-static List *match_index_orclause(RelOptInfo * rel, RelOptInfo * index, int indexkey,
+ RelOptInfo *rel, RelOptInfo *index);
+static List *match_index_orclause(RelOptInfo *rel, RelOptInfo *index, int indexkey,
int xclass, List *or_clauses, List *other_matching_indices);
-static List *group_clauses_by_indexkey(RelOptInfo * rel, RelOptInfo * index,
+static List *group_clauses_by_indexkey(RelOptInfo *rel, RelOptInfo *index,
int *indexkeys, Oid *classes, List *restrictinfo_list);
-static List *group_clauses_by_ikey_for_joins(RelOptInfo * rel, RelOptInfo * index,
+static List *group_clauses_by_ikey_for_joins(RelOptInfo *rel, RelOptInfo *index,
int *indexkeys, Oid *classes, List *join_cinfo_list, List *restr_cinfo_list);
-static RestrictInfo *match_clause_to_indexkey(RelOptInfo * rel, RelOptInfo * index, int indexkey,
- int xclass, RestrictInfo * restrictInfo, bool join);
+static RestrictInfo *match_clause_to_indexkey(RelOptInfo *rel, RelOptInfo *index, int indexkey,
+ int xclass, RestrictInfo *restrictInfo, bool join);
static bool pred_test(List *predicate_list, List *restrictinfo_list,
List *joininfo_list);
static bool one_pred_test(Expr *predicate, List *restrictinfo_list);
static bool one_pred_clause_expr_test(Expr *predicate, Node *clause);
static bool one_pred_clause_test(Expr *predicate, Node *clause);
static bool clause_pred_clause_test(Expr *predicate, Node *clause);
-static List *indexable_joinclauses(RelOptInfo * rel, RelOptInfo * index,
+static List *indexable_joinclauses(RelOptInfo *rel, RelOptInfo *index,
List *joininfo_list, List *restrictinfo_list);
-static List *index_innerjoin(Query *root, RelOptInfo * rel,
- List *clausegroup_list, RelOptInfo * index);
-static List *create_index_path_group(Query *root, RelOptInfo * rel, RelOptInfo * index,
+static List *index_innerjoin(Query *root, RelOptInfo *rel,
+ List *clausegroup_list, RelOptInfo *index);
+static List *create_index_path_group(Query *root, RelOptInfo *rel, RelOptInfo *index,
List *clausegroup_list, bool join);
static List *add_index_paths(List *indexpaths, List *new_indexpaths);
-static bool function_index_operand(Expr *funcOpnd, RelOptInfo * rel, RelOptInfo * index);
+static bool function_index_operand(Expr *funcOpnd, RelOptInfo *rel, RelOptInfo *index);
/* find_index_paths()
@@ -100,7 +100,7 @@ static bool function_index_operand(Expr *funcOpnd, RelOptInfo * rel, RelOptInfo
*/
List *
create_index_paths(Query *root,
- RelOptInfo * rel,
+ RelOptInfo *rel,
List *indices,
List *restrictinfo_list,
List *joininfo_list)
@@ -217,8 +217,8 @@ create_index_paths(Query *root,
*
*/
static void
-match_index_orclauses(RelOptInfo * rel,
- RelOptInfo * index,
+match_index_orclauses(RelOptInfo *rel,
+ RelOptInfo *index,
int indexkey,
int xclass,
List *restrictinfo_list)
@@ -253,8 +253,8 @@ match_index_orclauses(RelOptInfo * rel,
static bool
match_index_to_operand(int indexkey,
Expr *operand,
- RelOptInfo * rel,
- RelOptInfo * index)
+ RelOptInfo *rel,
+ RelOptInfo *index)
{
bool result;
@@ -296,8 +296,8 @@ match_index_to_operand(int indexkey,
* match the third, g,h match the fourth, etc.
*/
static List *
-match_index_orclause(RelOptInfo * rel,
- RelOptInfo * index,
+match_index_orclause(RelOptInfo *rel,
+ RelOptInfo *index,
int indexkey,
int xclass,
List *or_clauses,
@@ -387,8 +387,8 @@ match_index_orclause(RelOptInfo * rel,
*
*/
static List *
-group_clauses_by_indexkey(RelOptInfo * rel,
- RelOptInfo * index,
+group_clauses_by_indexkey(RelOptInfo *rel,
+ RelOptInfo *index,
int *indexkeys,
Oid *classes,
List *restrictinfo_list)
@@ -449,8 +449,8 @@ group_clauses_by_indexkey(RelOptInfo * rel,
*
*/
static List *
-group_clauses_by_ikey_for_joins(RelOptInfo * rel,
- RelOptInfo * index,
+group_clauses_by_ikey_for_joins(RelOptInfo *rel,
+ RelOptInfo *index,
int *indexkeys,
Oid *classes,
List *join_cinfo_list,
@@ -571,11 +571,11 @@ group_clauses_by_ikey_for_joins(RelOptInfo * rel,
*
*/
static RestrictInfo *
-match_clause_to_indexkey(RelOptInfo * rel,
- RelOptInfo * index,
+match_clause_to_indexkey(RelOptInfo *rel,
+ RelOptInfo *index,
int indexkey,
int xclass,
- RestrictInfo * restrictInfo,
+ RestrictInfo *restrictInfo,
bool join)
{
Expr *clause = restrictInfo->clause;
@@ -1183,7 +1183,7 @@ clause_pred_clause_test(Expr *predicate, Node *clause)
*
*/
static List *
-indexable_joinclauses(RelOptInfo * rel, RelOptInfo * index,
+indexable_joinclauses(RelOptInfo *rel, RelOptInfo *index,
List *joininfo_list, List *restrictinfo_list)
{
JoinInfo *joininfo = (JoinInfo *) NULL;
@@ -1255,8 +1255,8 @@ extract_restrict_clauses(List *clausegroup)
*
*/
static List *
-index_innerjoin(Query *root, RelOptInfo * rel, List *clausegroup_list,
- RelOptInfo * index)
+index_innerjoin(Query *root, RelOptInfo *rel, List *clausegroup_list,
+ RelOptInfo *index)
{
List *clausegroup = NIL;
List *cg_list = NIL;
@@ -1343,8 +1343,8 @@ index_innerjoin(Query *root, RelOptInfo * rel, List *clausegroup_list,
*/
static List *
create_index_path_group(Query *root,
- RelOptInfo * rel,
- RelOptInfo * index,
+ RelOptInfo *rel,
+ RelOptInfo *index,
List *clausegroup_list,
bool join)
{
@@ -1386,7 +1386,7 @@ add_index_paths(List *indexpaths, List *new_indexpaths)
}
static bool
-function_index_operand(Expr *funcOpnd, RelOptInfo * rel, RelOptInfo * index)
+function_index_operand(Expr *funcOpnd, RelOptInfo *rel, RelOptInfo *index)
{
Oid heapRelid = (Oid) lfirsti(rel->relids);
Func *function;
diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c
index a6f22c40edc..3dade2c6326 100644
--- a/src/backend/optimizer/path/joinpath.c
+++ b/src/backend/optimizer/path/joinpath.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.37 1999/05/25 16:09:25 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.38 1999/05/25 22:41:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -30,14 +30,14 @@
* _enable_mergejoin} */
static Path *best_innerjoin(List *join_paths, List *outer_relid);
-static List *sort_inner_and_outer(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static List *sort_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *mergeinfo_list);
-static List *match_unsorted_outer(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static List *match_unsorted_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *outerpath_list, Path *cheapest_inner, Path *best_innerjoin,
List *mergeinfo_list);
-static List *match_unsorted_inner(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static List *match_unsorted_inner(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *innerpath_list, List *mergeinfo_list);
-static List *hash_inner_and_outer(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static List *hash_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *hashinfo_list);
/*
@@ -194,9 +194,9 @@ best_innerjoin(List *join_paths, Relids outer_relids)
* Returns a list of mergejoin paths.
*/
static List *
-sort_inner_and_outer(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+sort_inner_and_outer(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *mergeinfo_list)
{
List *ms_list = NIL;
@@ -268,9 +268,9 @@ sort_inner_and_outer(RelOptInfo * joinrel,
* Returns a list of possible join path nodes.
*/
static List *
-match_unsorted_outer(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+match_unsorted_outer(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *outerpath_list,
Path *cheapest_inner,
Path *best_innerjoin,
@@ -411,9 +411,9 @@ match_unsorted_outer(RelOptInfo * joinrel,
* Returns a list of possible merge paths.
*/
static List *
-match_unsorted_inner(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+match_unsorted_inner(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *innerpath_list,
List *mergeinfo_list)
{
@@ -503,9 +503,9 @@ match_unsorted_inner(RelOptInfo * joinrel,
* Returns a list of hashjoin paths.
*/
static List *
-hash_inner_and_outer(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+hash_inner_and_outer(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *hashinfo_list)
{
List *hjoin_list = NIL;
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c
index 861f3cb2255..1a2c897502f 100644
--- a/src/backend/optimizer/path/joinrels.c
+++ b/src/backend/optimizer/path/joinrels.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.33 1999/05/25 16:09:26 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.34 1999/05/25 22:41:31 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -26,8 +26,8 @@
static List *new_joininfo_list(List *joininfo_list, Relids join_relids);
static bool nonoverlap_sets(List *s1, List *s2);
static bool is_subset(List *s1, List *s2);
-static void set_joinrel_size(RelOptInfo * joinrel, RelOptInfo * outer_rel,
- RelOptInfo * inner_rel, JoinInfo * jinfo);
+static void set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel,
+ RelOptInfo *inner_rel, JoinInfo *jinfo);
/*
* make_rels_by_joins
@@ -89,7 +89,7 @@ make_rels_by_joins(Query *root, List *old_rels)
* Returns a list of new join relations.
*/
List *
-make_rels_by_clause_joins(Query *root, RelOptInfo * old_rel,
+make_rels_by_clause_joins(Query *root, RelOptInfo *old_rel,
List *joininfo_list, Relids only_relids)
{
List *join_list = NIL;
@@ -159,7 +159,7 @@ make_rels_by_clause_joins(Query *root, RelOptInfo * old_rel,
* Returns a list of new join relations.
*/
List *
-make_rels_by_clauseless_joins(RelOptInfo * old_rel, List *inner_rels)
+make_rels_by_clauseless_joins(RelOptInfo *old_rel, List *inner_rels)
{
RelOptInfo *inner_rel;
List *t_list = NIL;
@@ -192,7 +192,7 @@ make_rels_by_clauseless_joins(RelOptInfo * old_rel, List *inner_rels)
* Returns the new join relation node.
*/
RelOptInfo *
-make_join_rel(RelOptInfo * outer_rel, RelOptInfo * inner_rel, JoinInfo * joininfo)
+make_join_rel(RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo *joininfo)
{
RelOptInfo *joinrel = makeNode(RelOptInfo);
List *joinrel_joininfo_list = NIL;
@@ -436,7 +436,7 @@ is_subset(List *s1, List *s2)
}
static void
-set_joinrel_size(RelOptInfo * joinrel, RelOptInfo * outer_rel, RelOptInfo * inner_rel, JoinInfo * jinfo)
+set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo *jinfo)
{
int ntuples;
float selec;
diff --git a/src/backend/optimizer/path/orindxpath.c b/src/backend/optimizer/path/orindxpath.c
index 4c257212185..0b9dd397d74 100644
--- a/src/backend/optimizer/path/orindxpath.c
+++ b/src/backend/optimizer/path/orindxpath.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.24 1999/05/25 16:09:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.25 1999/05/25 22:41:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -31,9 +31,9 @@
#include "parser/parsetree.h"
-static void best_or_subclause_indices(Query *root, RelOptInfo * rel, List *subclauses,
+static void best_or_subclause_indices(Query *root, RelOptInfo *rel, List *subclauses,
List *indices, List **indexids, Cost *cost, Cost *selec);
-static void best_or_subclause_index(Query *root, RelOptInfo * rel, Expr *subclause,
+static void best_or_subclause_index(Query *root, RelOptInfo *rel, Expr *subclause,
List *indices, int *indexid, Cost *cost, Cost *selec);
@@ -49,7 +49,7 @@ static void best_or_subclause_index(Query *root, RelOptInfo * rel, Expr *subclau
*/
List *
create_or_index_paths(Query *root,
- RelOptInfo * rel, List *clauses)
+ RelOptInfo *rel, List *clauses)
{
List *t_list = NIL;
List *clist;
@@ -156,7 +156,7 @@ create_or_index_paths(Query *root,
*/
static void
best_or_subclause_indices(Query *root,
- RelOptInfo * rel,
+ RelOptInfo *rel,
List *subclauses,
List *indices,
List **indexids, /* return value */
@@ -205,7 +205,7 @@ best_or_subclause_indices(Query *root,
*/
static void
best_or_subclause_index(Query *root,
- RelOptInfo * rel,
+ RelOptInfo *rel,
Expr *subclause,
List *indices,
int *retIndexid, /* return value */
diff --git a/src/backend/optimizer/path/prune.c b/src/backend/optimizer/path/prune.c
index da52363cc87..ba8880daa26 100644
--- a/src/backend/optimizer/path/prune.c
+++ b/src/backend/optimizer/path/prune.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.38 1999/05/25 16:09:28 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.39 1999/05/25 22:41:33 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -24,7 +24,7 @@
#include "utils/elog.h"
-static List *merge_rel_with_same_relids(RelOptInfo * rel, Relids unjoined_relids);
+static List *merge_rel_with_same_relids(RelOptInfo *rel, Relids unjoined_relids);
/*
* merge_rels_with_same_relids
@@ -59,7 +59,7 @@ merge_rels_with_same_relids(List *rel_list)
*
*/
static List *
-merge_rel_with_same_relids(RelOptInfo * rel, Relids unjoined_relids)
+merge_rel_with_same_relids(RelOptInfo *rel, Relids unjoined_relids)
{
List *i = NIL;
List *result = NIL;