00001 /***************************************************************************** 00002 00003 Copyright (C) 1996, 2009, Innobase Oy. All Rights Reserved. 00004 00005 This program is free software; you can redistribute it and/or modify it under 00006 the terms of the GNU General Public License as published by the Free Software 00007 Foundation; version 2 of the License. 00008 00009 This program is distributed in the hope that it will be useful, but WITHOUT 00010 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00011 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 00012 00013 You should have received a copy of the GNU General Public License along with 00014 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin 00015 St, Fifth Floor, Boston, MA 02110-1301 USA 00016 00017 *****************************************************************************/ 00018 00019 /**************************************************/ 00026 #pragma once 00027 #ifndef que0types_h 00028 #define que0types_h 00029 00030 #include "data0data.h" 00031 #include "dict0types.h" 00032 00033 /* Pseudotype for all graph nodes */ 00034 typedef void que_node_t; 00035 00036 typedef struct que_fork_struct que_fork_t; 00037 00038 /* Query graph root is a fork node */ 00039 typedef que_fork_t que_t; 00040 00041 typedef struct que_thr_struct que_thr_t; 00042 typedef struct que_common_struct que_common_t; 00043 00044 /* Common struct at the beginning of each query graph node; the name of this 00045 substruct must be 'common' */ 00046 00047 struct que_common_struct{ 00048 ulint type; 00049 que_node_t* parent; 00050 que_node_t* brother;/* pointer to a possible brother node */ 00051 dfield_t val; 00052 ulint val_buf_size; 00053 /* buffer size for the evaluated value data, 00054 if the buffer has been allocated dynamically: 00055 if this field is != 0, and the node is a 00056 symbol node or a function node, then we 00057 have to free the data field in val 00058 explicitly */ 00059 }; 00060 00061 #endif