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

数据库系统

开发平台:

Unix_Linux

  1. *******************************************************************************
  2. *                                                                             *
  3. * EXPLANATION OF THE NODE STRUCTURES                                          *
  4. *    - Andrew Yu (11/94)                                                      *
  5. *                                                                             *
  6. * Copyright (c) 1994, Regents of the University of California                 *
  7. *                                                                             *
  8. * $Id: README,v 1.1.1.1 1996/07/09 06:21:32 scrappy Exp $
  9. *                                                                             *
  10. *******************************************************************************
  11. INTRODUCTION
  12. The current node structures are plain old C structures. "Inheritance" is
  13. achieved by convention. No additional functions will be generated. Functions
  14. that manipulate node structures reside in this directory.
  15. FILES IN THIS DIRECTORY
  16.     Node manipulation functions:
  17. copyfuncs.c - copying a node
  18. equalfuncs.c - comparing a node
  19. outfuncs.c - convert a node to ascii representation
  20. readfuncs.c - convert ascii representation back to a node
  21. makefuncs.c - creator functions for primitive nodes
  22.     Node definitions:
  23. nodes.h - define node tags (NodeTag)
  24. pg_list.h - generic list 
  25. primnodes.h - primitive nodes
  26. parsenodes.h - parse tree nodes
  27. plannodes.h - plan tree nodes
  28. relation.h - inner plan tree nodes
  29. execnodes.h - executor nodes
  30. memnodes.h - memory nodes
  31. STEPS TO ADD A NODE
  32. Suppose you wana define a node Foo:
  33. 1. add a tag (T_Foo) to the enum NodeTag in nodes.h (You may have to
  34.    recompile the whole tree after doing this.)
  35. 2. add the structure definition to the appropriate ???nodes.h file. If you
  36.    intend to inherit from, say a Plan node, put Plan as the first field of
  37.    you definition.
  38. 3. if you intend to use copyObject, equal, nodeToString or stringToNode,
  39.    add an appropriate function to copyfuncs.c, equalfuncs.c, outfuncs.c
  40.    and readfuncs.c accordingly. (Except for frequently used nodes, don't
  41.    bother writing a creator function in makefuncs.c)
  42. HISTORICAL NOTE
  43. Prior to the current simple C structure definitions, the Node structures 
  44. uses a pseudo-inheritance system which automatically generates creator and
  45. accessor functions. Since every node inherits from LispValue, the whole thing
  46. is a mess. Here's a little anecdote:
  47.     LispValue definition -- class used to support lisp structures
  48.     in C.  This is here because we did not want to totally rewrite
  49.     planner and executor code which depended on lisp structures when
  50.     we ported postgres V1 from lisp to C. -cim 4/23/90
  51.