paths.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * paths.h
  4.  *   prototypes for various files in optimizer/paths (were separate
  5.  *   header files
  6.  *
  7.  *
  8.  * Copyright (c) 1994, Regents of the University of California
  9.  *
  10.  * $Id: paths.h,v 1.30 1999/05/26 12:56:35 momjian Exp $
  11.  *
  12.  *-------------------------------------------------------------------------
  13.  */
  14. #ifndef PATHS_H
  15. #define PATHS_H
  16. #include "nodes/nodes.h"
  17. #include "nodes/parsenodes.h"
  18. #include "nodes/relation.h"
  19. /*
  20.  * allpaths.h
  21.  */
  22. extern RelOptInfo *make_one_rel(Query *root, List *rels);
  23. /*
  24.  * indxpath.h
  25.  *   routines to generate index paths
  26.  */
  27. extern List *create_index_paths(Query *root, RelOptInfo *rel, List *indices,
  28.    List *restrictinfo_list,
  29.    List *joininfo_list);
  30. /*
  31.  * joinpath.h
  32.  *    routines to create join paths
  33.  */
  34. extern void update_rels_pathlist_for_joins(Query *root, List *joinrels);
  35. /*
  36.  * orindxpath.h
  37.  */
  38. extern List *create_or_index_paths(Query *root, RelOptInfo *rel, List *clauses);
  39. /*
  40.  * hashutils.h
  41.  *   routines to deal with hash keys and clauses
  42.  */
  43. extern List *group_clauses_by_hashop(List *restrictinfo_list,
  44. Relids inner_relids);
  45. /*
  46.  * joinutils.h
  47.  *   generic join method key/clause routines
  48.  */
  49. extern bool order_joinkeys_by_pathkeys(List *pathkeys,
  50.    List *joinkeys, List *joinclauses, int outer_or_inner,
  51.    List **matchedJoinKeysPtr,
  52.    List **matchedJoinClausesPtr);
  53. extern List *make_pathkeys_from_joinkeys(List *joinkeys, List *tlist,
  54. int outer_or_inner);
  55. extern Path *get_cheapest_path_for_joinkeys(List *joinkeys,
  56.    PathOrder *ordering, List *paths, int outer_or_inner);
  57. extern List *new_join_pathkeys(List *outer_pathkeys,
  58.   List *join_rel_tlist, List *joinclauses);
  59. /*
  60.  * mergeutils.h
  61.  *   routines to deal with merge keys and clauses
  62.  */
  63. extern List *group_clauses_by_order(List *restrictinfo_list,
  64.    Relids inner_relids);
  65. extern MergeInfo *match_order_mergeinfo(PathOrder *ordering,
  66.   List *mergeinfo_list);
  67. /*
  68.  * joinrels.h
  69.  *   routines to determine which relations to join
  70.  */
  71. extern List *make_rels_by_joins(Query *root, List *old_rels);
  72. extern List *make_rels_by_clause_joins(Query *root, RelOptInfo *old_rel,
  73.   List *joininfo_list, Relids only_relids);
  74. extern List *make_rels_by_clauseless_joins(RelOptInfo *old_rel,
  75.   List *inner_rels);
  76. extern RelOptInfo *get_cheapest_complete_rel(List *join_rel_list);
  77. /*
  78.  * prototypes for path/prune.c
  79.  */
  80. extern void merge_rels_with_same_relids(List *rel_list);
  81. extern void rels_set_cheapest(List *rel_list);
  82. extern List *del_rels_all_bushy_inactive(List *old_rels);
  83. #endif  /* PATHS_H */