main.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. /**
  14.    @mainpage NDB ODBC
  15.    The ODBC Driver Frontend has:
  16.    -# HandleBase  : Various ODBC handles
  17.    -# AttrArea    : Attributes of handles
  18.    -# ConnArea    : Communication area on connection level between driver parts
  19.    -# StmtArea    : Communication area on statement level between driver parts
  20.    and controls the following steps:
  21.    -# SQL_compiler           : Compiles SQL into SQL_code_tree:s
  22.       -# Parser              : Bison grammar
  23.       -# Analyzer            : Syntactic and semantic checks (binds names)
  24.       -# PlanGen             : Generate initial (execution) plan (PlanTree)
  25.    -# CodeGen                : Generates CodeTree:s out of PlanTree:s
  26.       -# Optimizer           : Optimizes PlanTree:s
  27.       -# Output              : Outputs executable CodeTree:s
  28.    -# Executor               : Executes CodeTree:s
  29.       -# CodeTree::allocRun  : Allocates runtime data structures (RunTree:s)
  30.       -# Dataflow machine    : Executes and evaluates statement and expressions
  31.    The Dataflow machine works in four different ways:
  32.    -# Non-query statements
  33.       -# CodeStmt::execute   : Executes (non-query) statement 
  34.    -# Query statements
  35.       -# CodeQuery::execute  : Execute Query statement
  36.       -# CodeQuery::fetch    : Fetch row from CodeQuery node
  37.    -# Boolean expressions
  38.       -# CodePred::evaluate  : Evaluates boolean expression
  39.    -# Arithmetical expressions
  40.       -# CodeExpr::evaluate  : Evaluates arithmetic expression
  41.    The following components are used throughout the NDB ODBC:
  42.    -# Context (Ctx)                   : Info regarding execution/evaluation
  43.    -# Diagnostic area (DiagArea)      : Errors and warnings (for ODBC user)
  44.    -# DescArea : Description of ODBC user input/output bind varibles/columns
  45.    -# Dictionary (DictBase)           : Lookup info stored in NDB Dictionary
  46.                                         and info regarding temporary 
  47.                 materialized results
  48.    -# ResultArea                      : Execution (temporary) results
  49.    @section secCompiler          SQL_compiler : SQL to SQL_code_tree
  50.    The SQL_compiler takes an <em>SQL statement</em> and translates 
  51.    it into an SQL_code_tree.  The compiler uses an SQL_code_tree 
  52.    internally during the compilation and the result of the compilation
  53.    is a simlified SQL_code_tree.
  54.    The compiler works in the following steps:
  55.    -# Parse SQL statments and create SQL_code_tree representing the 
  56.       statement.
  57.    -# Apply Syntax Rules to the SQL_code_tree.  Syntax rules are 
  58.       rules which are <em>not</em> expressed in the SQL grammar,
  59.       but are expressed in natural language in the SQL specification.
  60.    -# Apply Access Rules to the SQL_code_tree 
  61.       (this is not implemented, since NDB Cluster has no access control)
  62.    -# Apply General Rules to the SQL_code_tree
  63.    -# Apply Conformance Rules to the SQL_code_tree
  64.    The resulting simplified SQL_code_tree is represented by a
  65.    tree of C++ objects.
  66.    @section secCodegen           Codegen : SQL_code_tree to CodeTree
  67.    CodeGen takes simplified SQL_code_tree:s and transforms them into
  68.    CodeTree:s.  
  69.    @section secOptimizer         Optimizer : CodeTree to CodeTree
  70.    The implementation of the ODBC optimizer will uses the
  71.    PlanTree:s to represent statements and transforms them
  72.    into executable format (still PlanTree format).
  73.    @note In the future, more optimizations can be implemented.
  74.    @section secExecutor          Executor : Execute CodeTree
  75.    The Executor uses the following data structures:
  76.    -# CodeTree  : A read-only quary evaluation plan
  77.    -# RunTree   : Runtime data structures containing ResultSet:s 
  78.    The execution mechanism is actually implemented as a
  79.    part of the CodeTree.
  80. */