1/*****************************************************************************
2
3Copyright (c) 1996, 2009, Oracle and/or its affiliates. All Rights Reserved.
4
5This program is free software; you can redistribute it and/or modify it under
6the terms of the GNU General Public License as published by the Free Software
7Foundation; version 2 of the License.
8
9This program is distributed in the hope that it will be useful, but WITHOUT
10ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13You should have received a copy of the GNU General Public License along with
14this program; if not, write to the Free Software Foundation, Inc.,
1551 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
16
17*****************************************************************************/
18
19/**************************************************//**
20@file include/que0types.h
21Query graph global types
22
23Created 5/27/1996 Heikki Tuuri
24*******************************************************/
25
26#ifndef que0types_h
27#define que0types_h
28
29#include "data0data.h"
30#include "dict0types.h"
31
32/* Pseudotype for all graph nodes */
33typedef void que_node_t;
34
35/* Query graph root is a fork node */
36typedef struct que_fork_t que_t;
37
38struct que_thr_t;
39
40/* Common struct at the beginning of each query graph node; the name of this
41substruct must be 'common' */
42
43struct que_common_t{
44 ulint type; /*!< query node type */
45 que_node_t* parent; /*!< back pointer to parent node, or NULL */
46 que_node_t* brother;/* pointer to a possible brother node */
47 dfield_t val; /*!< evaluated value for an expression */
48 ulint val_buf_size;
49 /* buffer size for the evaluated value data,
50 if the buffer has been allocated dynamically:
51 if this field is != 0, and the node is a
52 symbol node or a function node, then we
53 have to free the data field in val
54 explicitly */
55};
56
57#endif
58