~ubuntu-branches/ubuntu/trusty/mysql-5.6/trusty

« back to all changes in this revision

Viewing changes to sql/sql_const.h

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-02-12 11:54:27 UTC
  • Revision ID: package-import@ubuntu.com-20140212115427-oq6tfsqxl1wuwehi
Tags: upstream-5.6.15
ImportĀ upstreamĀ versionĀ 5.6.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
 
2
 
 
3
   This program is free software; you can redistribute it and/or modify
 
4
   it under the terms of the GNU General Public License as published by
 
5
   the Free Software Foundation; version 2 of the License.
 
6
 
 
7
   This program is distributed in the hope that it will be useful,
 
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
10
   GNU General Public License for more details.
 
11
 
 
12
   You should have received a copy of the GNU General Public License
 
13
   along with this program; if not, write to the Free Software
 
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
 
15
 
 
16
/**
 
17
  @file
 
18
  File containing constants that can be used throughout the server.
 
19
 
 
20
  @note This file shall not contain any includes of any kinds.
 
21
*/
 
22
 
 
23
#ifndef SQL_CONST_INCLUDED
 
24
#define SQL_CONST_INCLUDED
 
25
 
 
26
#define LIBLEN FN_REFLEN-FN_LEN                 /* Max l{ngd p} dev */
 
27
/* extra 4+4 bytes for slave tmp tables */
 
28
#define MAX_DBKEY_LENGTH (NAME_LEN*2+1+1+4+4)
 
29
#define MAX_ALIAS_NAME 256
 
30
#define MAX_FIELD_NAME 34                       /* Max colum name length +2 */
 
31
#define MAX_SYS_VAR_LENGTH 32
 
32
#define MAX_KEY MAX_INDEXES                     /* Max used keys */
 
33
#define MAX_REF_PARTS 16U                       /* Max parts used as ref */
 
34
#define MAX_KEY_LENGTH 3072U                    /* max possible key */
 
35
#if SIZEOF_OFF_T > 4
 
36
#define MAX_REFLENGTH 8                         /* Max length for record ref */
 
37
#else
 
38
#define MAX_REFLENGTH 4                         /* Max length for record ref */
 
39
#endif
 
40
#define MAX_HOSTNAME  61                        /* len+1 in mysql.user */
 
41
 
 
42
#define MAX_MBWIDTH             3               /* Max multibyte sequence */
 
43
#define MAX_FIELD_CHARLENGTH    255
 
44
#define MAX_FIELD_VARCHARLENGTH 65535
 
45
#define MAX_FIELD_BLOBLENGTH UINT_MAX32     /* cf field_blob::get_length() */
 
46
/**
 
47
  CHAR and VARCHAR fields longer than this number of characters are converted
 
48
  to BLOB.
 
49
  Non-character fields longer than this number of bytes are converted to BLOB.
 
50
  Comparisons should be '>' or '<='.
 
51
*/
 
52
#define CONVERT_IF_BIGGER_TO_BLOB 512           /* Used for CREATE ... SELECT */
 
53
 
 
54
/* Max column width +1 */
 
55
#define MAX_FIELD_WIDTH         (MAX_FIELD_CHARLENGTH*MAX_MBWIDTH+1)
 
56
 
 
57
#define MAX_BIT_FIELD_LENGTH    64      /* Max length in bits for bit fields */
 
58
 
 
59
#define MAX_DATE_WIDTH          10      /* YYYY-MM-DD */
 
60
#define MAX_TIME_WIDTH          10      /* -838:59:59 */
 
61
#define MAX_TIME_FULL_WIDTH     23      /* -DDDDDD HH:MM:SS.###### */
 
62
#define MAX_DATETIME_FULL_WIDTH 29      /* YYYY-MM-DD HH:MM:SS.###### AM */
 
63
#define MAX_DATETIME_WIDTH      19      /* YYYY-MM-DD HH:MM:SS */
 
64
#define MAX_DATETIME_COMPRESSED_WIDTH 14  /* YYYYMMDDHHMMSS */
 
65
 
 
66
#define DATE_INT_DIGITS       8         /* YYYYMMDD       */
 
67
#define TIME_INT_DIGITS       7         /* hhhmmss        */
 
68
#define DATETIME_INT_DIGITS  14         /* YYYYMMDDhhmmss */
 
69
 
 
70
#define MAX_TABLES      (sizeof(table_map)*8-3) /* Max tables in join */
 
71
#define PARAM_TABLE_BIT (((table_map) 1) << (sizeof(table_map)*8-3))
 
72
#define OUTER_REF_TABLE_BIT     (((table_map) 1) << (sizeof(table_map)*8-2))
 
73
#define RAND_TABLE_BIT  (((table_map) 1) << (sizeof(table_map)*8-1))
 
74
#define PSEUDO_TABLE_BITS (PARAM_TABLE_BIT | OUTER_REF_TABLE_BIT | \
 
75
                           RAND_TABLE_BIT)
 
76
#define MAX_FIELDS      4096                    /* Limit in the .frm file */
 
77
#define MAX_PARTITIONS  8192
 
78
 
 
79
#define MAX_SELECT_NESTING (sizeof(nesting_map)*8-1)
 
80
 
 
81
#define DEFAULT_SORT_MEMORY (256UL* 1024UL)
 
82
#define MIN_SORT_MEMORY     (32UL * 1024UL)
 
83
 
 
84
/* Some portable defines */
 
85
 
 
86
#define STRING_BUFFER_USUAL_SIZE 80
 
87
 
 
88
/* Memory allocated when parsing a statement / saving a statement */
 
89
#define MEM_ROOT_BLOCK_SIZE       8192
 
90
#define MEM_ROOT_PREALLOC         8192
 
91
#define TRANS_MEM_ROOT_BLOCK_SIZE 4096
 
92
#define TRANS_MEM_ROOT_PREALLOC   4096
 
93
 
 
94
#define DEFAULT_ERROR_COUNT     64
 
95
#define EXTRA_RECORDS   10                      /* Extra records in sort */
 
96
#define SCROLL_EXTRA    5                       /* Extra scroll-rows. */
 
97
#define FIELD_NAME_USED ((uint) 32768)          /* Bit set if fieldname used */
 
98
#define FORM_NAME_USED  ((uint) 16384)          /* Bit set if formname used */
 
99
#define FIELD_NR_MASK   16383                   /* To get fieldnumber */
 
100
#define FERR            -1                      /* Error from my_functions */
 
101
#define CREATE_MODE     0                       /* Default mode on new files */
 
102
#define NAMES_SEP_CHAR  '\377'                  /* Char to sep. names */
 
103
 
 
104
#define READ_RECORD_BUFFER      (uint) (IO_SIZE*8) /* Pointer_buffer_size */
 
105
#define DISK_BUFFER_SIZE        (uint) (IO_SIZE*16) /* Size of diskbuffer */
 
106
 
 
107
#define FRM_VER_TRUE_VARCHAR (FRM_VER+4) /* 10 */
 
108
 
 
109
/***************************************************************************
 
110
  Configuration parameters
 
111
****************************************************************************/
 
112
 
 
113
#define ACL_CACHE_SIZE          256
 
114
#define MAX_PASSWORD_LENGTH     32
 
115
#define HOST_CACHE_SIZE         128
 
116
#define MAX_ACCEPT_RETRY        10      // Test accept this many times
 
117
#define MAX_FIELDS_BEFORE_HASH  32
 
118
#define USER_VARS_HASH_SIZE     16
 
119
#define TABLE_OPEN_CACHE_MIN    400
 
120
#define TABLE_OPEN_CACHE_DEFAULT 2000
 
121
#define TABLE_DEF_CACHE_DEFAULT 400
 
122
/**
 
123
  Maximum number of connections default value.
 
124
  151 is larger than Apache's default max children,
 
125
  to avoid "too many connections" error in a common setup.
 
126
*/
 
127
#define MAX_CONNECTIONS_DEFAULT 151
 
128
/**
 
129
  We must have room for at least 400 table definitions in the table
 
130
  cache, since otherwise there is no chance prepared
 
131
  statements that use these many tables can work.
 
132
  Prepared statements use table definition cache ids (table_map_id)
 
133
  as table version identifiers. If the table definition
 
134
  cache size is less than the number of tables used in a statement,
 
135
  the contents of the table definition cache is guaranteed to rotate
 
136
  between a prepare and execute. This leads to stable validation
 
137
  errors. In future we shall use more stable version identifiers,
 
138
  for now the only solution is to ensure that the table definition
 
139
  cache can contain at least all tables of a given statement.
 
140
*/
 
141
#define TABLE_DEF_CACHE_MIN     400
 
142
 
 
143
/*
 
144
  Stack reservation.
 
145
  Feel free to raise this by the smallest amount you can to get the
 
146
  "execution_constants" test to pass.
 
147
*/
 
148
#define STACK_MIN_SIZE          16000   // Abort if less stack during eval.
 
149
 
 
150
#define STACK_MIN_SIZE_FOR_OPEN 1024*80
 
151
#define STACK_BUFF_ALLOC        352     ///< For stack overrun checks
 
152
#ifndef MYSQLD_NET_RETRY_COUNT
 
153
#define MYSQLD_NET_RETRY_COUNT  10      ///< Abort read after this many int.
 
154
#endif
 
155
 
 
156
#define QUERY_ALLOC_BLOCK_SIZE          8192
 
157
#define QUERY_ALLOC_PREALLOC_SIZE       8192
 
158
#define TRANS_ALLOC_BLOCK_SIZE          4096
 
159
#define TRANS_ALLOC_PREALLOC_SIZE       4096
 
160
#define RANGE_ALLOC_BLOCK_SIZE          4096
 
161
#define ACL_ALLOC_BLOCK_SIZE            1024
 
162
#define UDF_ALLOC_BLOCK_SIZE            1024
 
163
#define TABLE_ALLOC_BLOCK_SIZE          1024
 
164
#define WARN_ALLOC_BLOCK_SIZE           2048
 
165
#define WARN_ALLOC_PREALLOC_SIZE        1024
 
166
 
 
167
/*
 
168
  The following parameters is to decide when to use an extra cache to
 
169
  optimise seeks when reading a big table in sorted order
 
170
*/
 
171
#define MIN_FILE_LENGTH_TO_USE_ROW_CACHE (10L*1024*1024)
 
172
#define MIN_ROWS_TO_USE_TABLE_CACHE      100
 
173
#define MIN_ROWS_TO_USE_BULK_INSERT      100
 
174
 
 
175
/**
 
176
  The following is used to decide if MySQL should use table scanning
 
177
  instead of reading with keys.  The number says how costly evaluation of the
 
178
  filter condition for a row is compared to reading one extra row from a table.
 
179
*/
 
180
#define ROW_EVALUATE_COST  0.20
 
181
 
 
182
/**
 
183
  Cost of comparing a rowid compared to reading one row from a table.
 
184
*/
 
185
#define ROWID_COMPARE_COST 0.10  // Half the cost of a general row comparison
 
186
 
 
187
/*
 
188
  For sequential disk seeks the cost formula is:
 
189
    DISK_SEEK_BASE_COST + DISK_SEEK_PROP_COST * #blocks_to_skip  
 
190
  
 
191
  The cost of average seek 
 
192
    DISK_SEEK_BASE_COST + DISK_SEEK_PROP_COST*BLOCKS_IN_AVG_SEEK =1.0.
 
193
*/
 
194
#define DISK_SEEK_BASE_COST ((double)0.9)
 
195
 
 
196
#define BLOCKS_IN_AVG_SEEK  128
 
197
 
 
198
#define DISK_SEEK_PROP_COST ((double)0.1/BLOCKS_IN_AVG_SEEK)
 
199
 
 
200
 
 
201
/**
 
202
  Number of rows in a reference table when refereed through a not unique key.
 
203
  This value is only used when we don't know anything about the key
 
204
  distribution.
 
205
*/
 
206
#define MATCHING_ROWS_IN_OTHER_TABLE 10
 
207
 
 
208
/*
 
209
  Constants related to the use of temporary tables in query execution.
 
210
  Lookup and write operations are currently assumed to be equally costly
 
211
  (concerns HEAP_TEMPTABLE_ROW_COST and DISK_TEMPTABLE_ROW_COST).
 
212
*/
 
213
/*
 
214
  Creating a Heap temporary table is by benchmark found to be as costly as
 
215
  writing 10 rows into the table.
 
216
*/
 
217
#define HEAP_TEMPTABLE_CREATE_COST    2.0
 
218
/*
 
219
  Writing a row to or reading a row from a Heap temporary table is equivalent
 
220
  to evaluating a row in the join engine.
 
221
*/
 
222
#define HEAP_TEMPTABLE_ROW_COST       0.2
 
223
/*
 
224
  Creating a MyISAM table is 20 times slower than creating a Heap table.
 
225
*/
 
226
#define DISK_TEMPTABLE_CREATE_COST   40.0
 
227
/*
 
228
  Generating MyIsam rows sequentially is 2 times slower than generating
 
229
  Heap rows, when number of rows is greater than 1000. However, we do not have
 
230
  benchmarks for very large tables, so setting this factor conservatively to
 
231
  be 5 times slower (ie the cost is 1.0).
 
232
*/
 
233
#define DISK_TEMPTABLE_ROW_COST       1.0
 
234
 
 
235
#define MY_CHARSET_BIN_MB_MAXLEN 1
 
236
 
 
237
/** Don't pack string keys shorter than this (if PACK_KEYS=1 isn't used). */
 
238
#define KEY_DEFAULT_PACK_LENGTH 8
 
239
 
 
240
/** Characters shown for the command in 'show processlist'. */
 
241
#define PROCESS_LIST_WIDTH 100
 
242
/* Characters shown for the command in 'information_schema.processlist' */
 
243
#define PROCESS_LIST_INFO_WIDTH 65535
 
244
 
 
245
#define PRECISION_FOR_DOUBLE 53
 
246
#define PRECISION_FOR_FLOAT  24
 
247
 
 
248
/* -[digits].E+## */
 
249
#define MAX_FLOAT_STR_LENGTH (FLT_DIG + 6)
 
250
/* -[digits].E+### */
 
251
#define MAX_DOUBLE_STR_LENGTH (DBL_DIG + 7)
 
252
 
 
253
/*
 
254
  Default time to wait before aborting a new client connection
 
255
  that does not respond to "initial server greeting" timely
 
256
*/
 
257
#define CONNECT_TIMEOUT         10
 
258
 
 
259
/* The following can also be changed from the command line */
 
260
#define DEFAULT_CONCURRENCY     10
 
261
#define DELAYED_LIMIT           100             /**< pause after xxx inserts */
 
262
#define DELAYED_QUEUE_SIZE      1000
 
263
#define DELAYED_WAIT_TIMEOUT    5*60            /**< Wait for delayed insert */
 
264
 
 
265
#define LONG_TIMEOUT ((ulong) 3600L*24L*365L)
 
266
 
 
267
/**
 
268
  Maximum length of time zone name that we support (Time zone name is
 
269
  char(64) in db). mysqlbinlog needs it.
 
270
*/
 
271
#define MAX_TIME_ZONE_NAME_LENGTH       (NAME_LEN + 1)
 
272
 
 
273
#if defined(__WIN__)
 
274
#define INTERRUPT_PRIOR -2
 
275
#define CONNECT_PRIOR   -1
 
276
#define WAIT_PRIOR      0
 
277
#define QUERY_PRIOR     2
 
278
#else
 
279
#define INTERRUPT_PRIOR 10
 
280
#define CONNECT_PRIOR   9
 
281
#define WAIT_PRIOR      8
 
282
#define QUERY_PRIOR     6
 
283
#endif /* __WIN92__ */
 
284
 
 
285
#endif /* SQL_CONST_INCLUDED */