Merge lp:~linuxjedi/drizzle/drizzle-global-buffer-limits into lp:drizzle/7.0
- drizzle-global-buffer-limits
- Merge into 7.0
Proposed by
Andrew Hutchings
Status: | Merged |
---|---|
Approved by: | Lee Bieber |
Approved revision: | 1823 |
Merged at revision: | 1907 |
Proposed branch: | lp:~linuxjedi/drizzle/drizzle-global-buffer-limits |
Merge into: | lp:drizzle/7.0 |
Diff against target: |
855 lines (+442/-12) 28 files modified
client/errname.cc (+4/-1) docs/options.rst (+21/-1) drizzled/drizzled.cc (+70/-0) drizzled/drizzled.h (+7/-1) drizzled/enum.h (+5/-1) drizzled/error.cc (+4/-0) drizzled/filesort.cc (+17/-1) drizzled/global_buffer.h (+69/-0) drizzled/include.am (+1/-0) drizzled/internal/mf_iocache.cc (+15/-0) drizzled/join_cache.cc (+9/-0) drizzled/records.cc (+8/-0) drizzled/sql_select.cc (+5/-0) tests/include/setup-global-constraints.inc (+32/-0) tests/r/global_read_constraints.result (+32/-0) tests/r/global_read_rnd_constraints.result (+1/-0) tests/r/global_sort_join_constraints.result (+30/-0) tests/t/global_read_constraints-master.opt (+1/-0) tests/t/global_read_constraints.test (+9/-0) tests/t/global_read_rnd_constraints-master.opt (+1/-0) tests/t/global_read_rnd_constraints.test (+19/-0) tests/t/global_sort_join_constraints-master.opt (+1/-0) tests/t/global_sort_join_constraints.test (+13/-0) unittests/atomics_test.cc (+2/-2) unittests/global_buffer_test.cc (+60/-0) unittests/include.am (+1/-0) unittests/pthread_atomics_test.cc (+2/-2) unittests/utf8_test.cc (+3/-3) |
To merge this branch: | bzr merge lp:~linuxjedi/drizzle/drizzle-global-buffer-limits |
Related bugs: | |
Related blueprints: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Brian Aker | Needs Fixing | ||
Review via email: mp+39793@code.launchpad.net |
Commit message
Description of the change
Adds global buffer constraints (see blueprint)
Also fixes a GCC 4.5 bug in some unittests and a minor docs change
To post a comment you must log in.
Revision history for this message
Andrew Hutchings (linuxjedi) wrote : | # |
Doh! Silly mistake which broke 32bit, fixed now
Revision history for this message
Andrew Hutchings (linuxjedi) wrote : | # |
2 test failures too:
http://
Revision history for this message
Andrew Hutchings (linuxjedi) wrote : | # |
bug#670496 is a show stopper for the test cases
Revision history for this message
Andrew Hutchings (linuxjedi) wrote : | # |
OK, test cases should now work
Revision history for this message
Lee Bieber (kalebral-deactivatedaccount) wrote : | # |
Tests are still failing on OSX, Centos, FreedBSD and OpenSUSE
Revision history for this message
Andrew Hutchings (linuxjedi) wrote : | # |
OK, fixed a problem found with join buffer constraint accounting.
Had to disable 2 tests as drizzleslap now gives unpredictable results if a query errors (which is the condition we are trying to test here).
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'client/errname.cc' |
2 | --- client/errname.cc 2010-09-08 22:31:17 +0000 |
3 | +++ client/errname.cc 2010-11-05 13:28:56 +0000 |
4 | @@ -735,7 +735,10 @@ |
5 | { "ER_UNKNOWN_SCHEMA_OPTION", 1699}, |
6 | { "ER_EVENT_OBSERVER_PLUGIN", 1700}, |
7 | { "ER_CORRUPT_SCHEMA_DEFINITION", 1701}, |
8 | - { "ER_UNUSED1702", 1702}, |
9 | + { "ER_OUT_OF_GLOBAL_SORTMEMORY", 1702}, |
10 | + { "ER_OUT_OF_GLOBAL_JOINMEMORY", 1703}, |
11 | + { "ER_OUT_OF_GLOBAL_READRNDMEMORY", 1704}, |
12 | + { "ER_OUT_OF_GLOBAL_READMEMORY", 1705}, |
13 | { 0, 0 } |
14 | }; |
15 | |
16 | |
17 | === modified file 'docs/options.rst' |
18 | --- docs/options.rst 2010-09-30 16:54:59 +0000 |
19 | +++ docs/options.rst 2010-11-05 13:28:56 +0000 |
20 | @@ -178,8 +178,13 @@ |
21 | |
22 | The size of the buffer that is used for full joins. |
23 | |
24 | +.. option:: --join-buffer-constraint arg (=0) |
25 | + |
26 | + A global constraint for join-buffer-size for all clients, cannot be set lower |
27 | + than --join-buffer-size. Setting to 0 means unlimited. |
28 | + |
29 | .. Why is this a core arg? |
30 | -.. option:: --max-allowed-packet arg (=1M) |
31 | +.. option:: --max-allowed-packet arg (=64M) |
32 | |
33 | Max packetlength to send/receive from to server. |
34 | |
35 | @@ -259,12 +264,22 @@ |
36 | each table it scans. If you do many sequential scans, you may want to |
37 | increase this value. |
38 | |
39 | +.. option:: --read-buffer-constraint arg (=0) |
40 | + |
41 | + A global constraint for read-buffer-size for all clients, cannot be set lower |
42 | + than --read-buffer-size. Setting to 0 means unlimited. |
43 | + |
44 | .. option:: --read-rnd-buffer-size arg (=262144) |
45 | |
46 | When reading rows in sorted order after a sort, the rows are read through |
47 | this buffer to avoid a disk seeks. If not set, then it's set to the value of |
48 | record_buffer. |
49 | |
50 | +.. option:: --read-rnd-constraint arg (=0) |
51 | + |
52 | + A global constraint for read-rnd-buffer-size for all clients, cannot be set |
53 | + lower than --read-rnd-buffer-size. Setting to 0 means unlimited. |
54 | + |
55 | .. option:: --scheduler arg (=multi-thread) |
56 | |
57 | Select scheduler to be used. |
58 | @@ -273,6 +288,11 @@ |
59 | |
60 | Each thread that needs to do a sort allocates a buffer of this size. |
61 | |
62 | +.. option:: --sort-buffer-constraint arg (=0) |
63 | + |
64 | + A global constraint for sort-buffer-size for all clients, cannot be set lower |
65 | + than --sort-buffer-size. Setting to 0 means unlimited. |
66 | + |
67 | .. option:: --table-definition-cache arg (=128) |
68 | |
69 | The number of cached table definitions. |
70 | |
71 | === modified file 'drizzled/drizzled.cc' |
72 | --- drizzled/drizzled.cc 2010-10-28 05:22:47 +0000 |
73 | +++ drizzled/drizzled.cc 2010-11-05 13:28:56 +0000 |
74 | @@ -66,6 +66,7 @@ |
75 | #include "drizzled/drizzled.h" |
76 | #include "drizzled/module/registry.h" |
77 | #include "drizzled/module/load_list.h" |
78 | +#include "drizzled/global_buffer.h" |
79 | |
80 | #include "drizzled/plugin/event_observer.h" |
81 | |
82 | @@ -352,6 +353,11 @@ |
83 | |
84 | atomic<uint32_t> connection_count; |
85 | |
86 | +global_buffer_constraint<uint64_t> global_sort_buffer(0); |
87 | +global_buffer_constraint<uint64_t> global_join_buffer(0); |
88 | +global_buffer_constraint<uint64_t> global_read_rnd_buffer(0); |
89 | +global_buffer_constraint<uint64_t> global_read_buffer(0); |
90 | + |
91 | /** |
92 | Refresh value. We use to test this to find out if a refresh even has happened recently. |
93 | */ |
94 | @@ -1300,6 +1306,9 @@ |
95 | N_("The maximum length of the result of function group_concat.")) |
96 | ("join-buffer-size", po::value<uint64_t>(&global_system_variables.join_buff_size)->default_value(128*1024L)->notifier(&check_limits_join_buffer_size), |
97 | N_("The size of the buffer that is used for full joins.")) |
98 | + ("join-heap-threshold", |
99 | + po::value<uint64_t>()->default_value(0), |
100 | + N_("A global cap on the amount of memory that can be allocated by session join buffers (0 means unlimited)")) |
101 | ("max-allowed-packet", po::value<uint32_t>(&global_system_variables.max_allowed_packet)->default_value(64*1024*1024L)->notifier(&check_limits_map), |
102 | N_("Max packetlength to send/receive from to server.")) |
103 | ("max-connect-errors", po::value<uint64_t>(&max_connect_errors)->default_value(MAX_CONNECT_ERRORS)->notifier(&check_limits_mce), |
104 | @@ -1353,16 +1362,25 @@ |
105 | N_("Each thread that does a sequential scan allocates a buffer of this " |
106 | "size for each table it scans. If you do many sequential scans, you may " |
107 | "want to increase this value.")) |
108 | + ("read-buffer-threshold", |
109 | + po::value<uint64_t>()->default_value(0), |
110 | + N_("A global cap on the size of read-buffer-size (0 means unlimited)")) |
111 | ("read-rnd-buffer-size", |
112 | po::value<uint32_t>(&global_system_variables.read_rnd_buff_size)->default_value(256*1024L)->notifier(&check_limits_read_rnd_buffer_size), |
113 | N_("When reading rows in sorted order after a sort, the rows are read " |
114 | "through this buffer to avoid a disk seeks. If not set, then it's set " |
115 | "to the value of record_buffer.")) |
116 | + ("read-rnd-threshold", |
117 | + po::value<uint64_t>()->default_value(0), |
118 | + N_("A global cap on the size of read-rnd-buffer-size (0 means unlimited)")) |
119 | ("scheduler", po::value<string>(), |
120 | N_("Select scheduler to be used (by default multi-thread).")) |
121 | ("sort-buffer-size", |
122 | po::value<size_t>(&global_system_variables.sortbuff_size)->default_value(MAX_SORT_MEMORY)->notifier(&check_limits_sort_buffer_size), |
123 | N_("Each thread that needs to do a sort allocates a buffer of this size.")) |
124 | + ("sort-heap-threshold", |
125 | + po::value<uint64_t>()->default_value(0), |
126 | + N_("A global cap on the amount of memory that can be allocated by session sort buffers (0 means unlimited)")) |
127 | ("table-definition-cache", po::value<size_t>(&table_def_size)->default_value(128)->notifier(&check_limits_tdc), |
128 | N_("The number of cached table definitions.")) |
129 | ("table-open-cache", po::value<uint64_t>(&table_cache_size)->default_value(TABLE_OPEN_CACHE_DEFAULT)->notifier(&check_limits_toc), |
130 | @@ -2256,6 +2274,58 @@ |
131 | exit(0); |
132 | } |
133 | |
134 | + if (vm.count("sort-heap-threshold")) |
135 | + { |
136 | + if ((vm["sort-heap-threshold"].as<uint64_t>() > 0) and |
137 | + (vm["sort-heap-threshold"].as<uint64_t>() < |
138 | + global_system_variables.sortbuff_size)) |
139 | + { |
140 | + cout << N_("Error: sort-heap-threshold cannot be less than sort-buffer-size") << endl; |
141 | + exit(-1); |
142 | + } |
143 | + |
144 | + global_sort_buffer.setMaxSize(vm["sort-heap-threshold"].as<uint64_t>()); |
145 | + } |
146 | + |
147 | + if (vm.count("join-heap-threshold")) |
148 | + { |
149 | + if ((vm["join-heap-threshold"].as<uint64_t>() > 0) and |
150 | + (vm["join-heap-threshold"].as<uint64_t>() < |
151 | + global_system_variables.join_buff_size)) |
152 | + { |
153 | + cout << N_("Error: join-heap-threshold cannot be less than join-buffer-size") << endl; |
154 | + exit(-1); |
155 | + } |
156 | + |
157 | + global_join_buffer.setMaxSize(vm["join-heap-threshold"].as<uint64_t>()); |
158 | + } |
159 | + |
160 | + if (vm.count("read-rnd-threshold")) |
161 | + { |
162 | + if ((vm["read-rnd-threshold"].as<uint64_t>() > 0) and |
163 | + (vm["read-rnd-threshold"].as<uint64_t>() < |
164 | + global_system_variables.read_rnd_buff_size)) |
165 | + { |
166 | + cout << N_("Error: read-rnd-threshold cannot be less than read-rnd-buffer-size") << endl; |
167 | + exit(-1); |
168 | + } |
169 | + |
170 | + global_read_rnd_buffer.setMaxSize(vm["read-rnd-threshold"].as<uint64_t>()); |
171 | + } |
172 | + |
173 | + if (vm.count("read-buffer-threshold")) |
174 | + { |
175 | + if ((vm["read-buffer-threshold"].as<uint64_t>() > 0) and |
176 | + (vm["read-buffer-threshold"].as<uint64_t>() < |
177 | + global_system_variables.read_buff_size)) |
178 | + { |
179 | + cout << N_("Error: read-buffer-threshold cannot be less than read-buffer-size") << endl; |
180 | + exit(-1); |
181 | + } |
182 | + |
183 | + global_read_buffer.setMaxSize(vm["read-buffer-threshold"].as<uint64_t>()); |
184 | + } |
185 | + |
186 | if (vm.count("exit-info")) |
187 | { |
188 | if (vm["exit-info"].as<long>()) |
189 | |
190 | === modified file 'drizzled/drizzled.h' |
191 | --- drizzled/drizzled.h 2010-09-27 07:06:04 +0000 |
192 | +++ drizzled/drizzled.h 2010-11-05 13:28:56 +0000 |
193 | @@ -25,7 +25,8 @@ |
194 | #include <boost/program_options.hpp> |
195 | |
196 | #include "drizzled/atomics.h" |
197 | - |
198 | +#include "drizzled/global_buffer.h" |
199 | +#include "drizzled/definitions.h" |
200 | struct passwd; |
201 | |
202 | namespace drizzled |
203 | @@ -47,6 +48,11 @@ |
204 | extern passwd *user_info; |
205 | extern char *drizzled_user; |
206 | |
207 | +extern global_buffer_constraint<uint64_t> global_sort_buffer; |
208 | +extern global_buffer_constraint<uint64_t> global_join_buffer; |
209 | +extern global_buffer_constraint<uint64_t> global_read_rnd_buffer; |
210 | +extern global_buffer_constraint<uint64_t> global_read_buffer; |
211 | + |
212 | extern const char * const DRIZZLE_CONFIG_NAME; |
213 | |
214 | boost::program_options::variables_map &getVariablesMap(); |
215 | |
216 | === modified file 'drizzled/enum.h' |
217 | --- drizzled/enum.h 2010-09-08 22:31:17 +0000 |
218 | +++ drizzled/enum.h 2010-11-05 13:28:56 +0000 |
219 | @@ -1044,7 +1044,11 @@ |
220 | ER_UNKNOWN_SCHEMA_OPTION, |
221 | ER_EVENT_OBSERVER_PLUGIN, |
222 | ER_CORRUPT_SCHEMA_DEFINITION, |
223 | - ER_ERROR_LAST= ER_CORRUPT_SCHEMA_DEFINITION |
224 | + ER_OUT_OF_GLOBAL_SORTMEMORY, |
225 | + ER_OUT_OF_GLOBAL_JOINMEMORY, |
226 | + ER_OUT_OF_GLOBAL_READRNDMEMORY, |
227 | + ER_OUT_OF_GLOBAL_READMEMORY, |
228 | + ER_ERROR_LAST= ER_OUT_OF_GLOBAL_READMEMORY |
229 | }; |
230 | |
231 | enum drizzle_exit_codes { |
232 | |
233 | === modified file 'drizzled/error.cc' |
234 | --- drizzled/error.cc 2010-10-14 18:58:48 +0000 |
235 | +++ drizzled/error.cc 2010-11-05 13:28:56 +0000 |
236 | @@ -235,6 +235,10 @@ |
237 | add(ER_OPEN_AS_READONLY, N_("Table '%-.192s' is read only")); |
238 | add(ER_OUTOFMEMORY, N_("Out of memory; restart server and try again (needed %lu bytes)")); |
239 | add(ER_OUT_OF_SORTMEMORY, N_("Out of sort memory; increase server sort buffer size")); |
240 | + add(ER_OUT_OF_GLOBAL_SORTMEMORY, N_("Global sort memory constraint hit; increase sort-heap-threshold")); |
241 | + add(ER_OUT_OF_GLOBAL_JOINMEMORY, N_("Global join memory constraint hit; increase join-heap-threshold")); |
242 | + add(ER_OUT_OF_GLOBAL_READRNDMEMORY, N_("Global read_rnd memory constraint hit; increase read-rnd-heap-threshold")); |
243 | + add(ER_OUT_OF_GLOBAL_READMEMORY, N_("Global read memory constraint hit; increase read-buffer-threshold")); |
244 | add(ER_UNEXPECTED_EOF, N_("Unexpected EOF found when reading file '%-.192s' (errno: %d)")); |
245 | add(ER_CON_COUNT_ERROR, N_("Too many connections")); |
246 | add(ER_OUT_OF_RESOURCES, N_("Out of memory; check if drizzled or some other process uses all available memory; if not, you may have to use 'ulimit' to allow drizzled to use more memory or you can add more swap space")); |
247 | |
248 | === modified file 'drizzled/filesort.cc' |
249 | --- drizzled/filesort.cc 2010-10-30 01:19:00 +0000 |
250 | +++ drizzled/filesort.cc 2010-11-05 13:28:56 +0000 |
251 | @@ -29,6 +29,7 @@ |
252 | #include <queue> |
253 | #include <algorithm> |
254 | |
255 | +#include "drizzled/drizzled.h" |
256 | #include "drizzled/sql_sort.h" |
257 | #include "drizzled/error.h" |
258 | #include "drizzled/probes.h" |
259 | @@ -41,6 +42,8 @@ |
260 | #include "drizzled/internal/my_sys.h" |
261 | #include "plugin/myisam/myisam.h" |
262 | #include "drizzled/plugin/transactional_storage_engine.h" |
263 | +#include "drizzled/atomics.h" |
264 | +#include "drizzled/global_buffer.h" |
265 | |
266 | using namespace std; |
267 | |
268 | @@ -136,8 +139,9 @@ |
269 | bool sort_positions, ha_rows *examined_rows) |
270 | { |
271 | int error; |
272 | - uint32_t memavl, min_sort_memory; |
273 | + uint32_t memavl= 0, min_sort_memory; |
274 | uint32_t maxbuffer; |
275 | + size_t allocated_sort_memory= 0; |
276 | buffpek *buffpek_inst; |
277 | ha_rows records= HA_POS_ERROR; |
278 | unsigned char **sort_keys= 0; |
279 | @@ -247,10 +251,20 @@ |
280 | uint32_t old_memavl; |
281 | uint32_t keys= memavl/(param.rec_length+sizeof(char*)); |
282 | param.keys= (uint32_t) min(records+1, (ha_rows)keys); |
283 | + |
284 | + allocated_sort_memory= param.keys * param.rec_length; |
285 | + if (not global_sort_buffer.add(allocated_sort_memory)) |
286 | + { |
287 | + my_error(ER_OUT_OF_GLOBAL_SORTMEMORY, MYF(ME_ERROR+ME_WAITTANG)); |
288 | + goto err; |
289 | + } |
290 | + |
291 | if ((table_sort.sort_keys= |
292 | (unsigned char **) make_char_array((char **) table_sort.sort_keys, |
293 | param.keys, param.rec_length))) |
294 | break; |
295 | + |
296 | + global_sort_buffer.sub(allocated_sort_memory); |
297 | old_memavl= memavl; |
298 | if ((memavl= memavl/4*3) < min_sort_memory && old_memavl > min_sort_memory) |
299 | memavl= min_sort_memory; |
300 | @@ -261,6 +275,7 @@ |
301 | my_error(ER_OUT_OF_SORTMEMORY,MYF(ME_ERROR+ME_WAITTANG)); |
302 | goto err; |
303 | } |
304 | + |
305 | if (open_cached_file(&buffpek_pointers,drizzle_tmpdir.c_str(),TEMP_PREFIX, |
306 | DISK_BUFFER_SIZE, MYF(MY_WME))) |
307 | goto err; |
308 | @@ -357,6 +372,7 @@ |
309 | session->status_var.filesort_rows+= (uint32_t) records; |
310 | } |
311 | *examined_rows= param.examined_rows; |
312 | + global_sort_buffer.sub(allocated_sort_memory); |
313 | memcpy(&table->sort, &table_sort, sizeof(filesort_info)); |
314 | DRIZZLE_FILESORT_DONE(error, records); |
315 | return (error ? HA_POS_ERROR : records); |
316 | |
317 | === added file 'drizzled/global_buffer.h' |
318 | --- drizzled/global_buffer.h 1970-01-01 00:00:00 +0000 |
319 | +++ drizzled/global_buffer.h 2010-11-05 13:28:56 +0000 |
320 | @@ -0,0 +1,69 @@ |
321 | +/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- |
322 | + * vim:expandtab:shiftwidth=2:tabstop=2:smarttab: |
323 | + * |
324 | + * Copyright (C) 2010 Andrew Hutchings |
325 | + * |
326 | + * This program is free software; you can redistribute it and/or modify |
327 | + * it under the terms of the GNU General Public License as published by |
328 | + * the Free Software Foundation; version 2 of the License. |
329 | + * |
330 | + * This program is distributed in the hope that it will be useful, |
331 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
332 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
333 | + * GNU General Public License for more details. |
334 | + * |
335 | + * You should have received a copy of the GNU General Public License |
336 | + * along with this program; if not, write to the Free Software |
337 | + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
338 | + */ |
339 | + |
340 | +#ifndef DRIZZLED_GLOBAL_BUFFER_H |
341 | +#define DRIZZLED_GLOBAL_BUFFER_H |
342 | + |
343 | +#include <drizzled/atomics.h> |
344 | + |
345 | +namespace drizzled |
346 | +{ |
347 | +template <class T> |
348 | +class global_buffer_constraint |
349 | +{ |
350 | +public: |
351 | + global_buffer_constraint(T max) |
352 | + { |
353 | + setMaxSize(max); |
354 | + } |
355 | + |
356 | + T getMaxSize() const { return max_size; } |
357 | + void setMaxSize(T new_size) |
358 | + { |
359 | + if (new_size == 0) new_size = std::numeric_limits<T>::max(); |
360 | + max_size= new_size; |
361 | + } |
362 | + |
363 | + bool add(T addition) |
364 | + { |
365 | + if (current_size.add_and_fetch(addition) > max_size) |
366 | + { |
367 | + current_size.add_and_fetch(T(0) - addition); |
368 | + return false; |
369 | + } |
370 | + return true; |
371 | + } |
372 | + |
373 | + bool sub(T subtract) |
374 | + { |
375 | + if (current_size < subtract) |
376 | + return false; |
377 | + else |
378 | + current_size.add_and_fetch(T(0) - subtract); |
379 | + |
380 | + return true; |
381 | + } |
382 | + |
383 | +private: |
384 | + atomic<T> current_size; |
385 | + T max_size; |
386 | +}; |
387 | + |
388 | +} |
389 | +#endif /* DRIZZLED_GLOBAL_BUFFER_H */ |
390 | |
391 | === modified file 'drizzled/include.am' |
392 | --- drizzled/include.am 2010-10-28 05:22:47 +0000 |
393 | +++ drizzled/include.am 2010-11-05 13:28:56 +0000 |
394 | @@ -190,6 +190,7 @@ |
395 | drizzled/generator/session.h \ |
396 | drizzled/generator/table.h \ |
397 | drizzled/gettext.h \ |
398 | + drizzled/global_buffer.h \ |
399 | drizzled/global_charset_info.h \ |
400 | drizzled/ha_statistics.h \ |
401 | drizzled/handler_structs.h \ |
402 | |
403 | === modified file 'drizzled/internal/mf_iocache.cc' |
404 | --- drizzled/internal/mf_iocache.cc 2010-10-10 08:28:30 +0000 |
405 | +++ drizzled/internal/mf_iocache.cc 2010-11-05 13:28:56 +0000 |
406 | @@ -51,6 +51,7 @@ |
407 | |
408 | #include "drizzled/internal/my_sys.h" |
409 | #include "drizzled/internal/m_string.h" |
410 | +#include "drizzled/drizzled.h" |
411 | #ifdef HAVE_AIOWAIT |
412 | #include "drizzled/error.h" |
413 | #include "drizzled/internal/aio_result.h" |
414 | @@ -247,6 +248,12 @@ |
415 | if (cachesize < min_cache) |
416 | cachesize = min_cache; |
417 | buffer_block= cachesize; |
418 | + if ((type == READ_CACHE) and (not global_read_buffer.add(buffer_block))) |
419 | + { |
420 | + my_error(ER_OUT_OF_GLOBAL_READMEMORY, MYF(ME_ERROR+ME_WAITTANG)); |
421 | + return 2; |
422 | + } |
423 | + |
424 | if ((info->buffer= |
425 | (unsigned char*) malloc(buffer_block)) != 0) |
426 | { |
427 | @@ -255,8 +262,14 @@ |
428 | break; /* Enough memory found */ |
429 | } |
430 | if (cachesize == min_cache) |
431 | + { |
432 | + if (type == READ_CACHE) |
433 | + global_read_buffer.sub(buffer_block); |
434 | return(2); /* Can't alloc cache */ |
435 | + } |
436 | /* Try with less memory */ |
437 | + if (type == READ_CACHE) |
438 | + global_read_buffer.sub(buffer_block); |
439 | cachesize= (cachesize*3/4 & ~(min_cache-1)); |
440 | } |
441 | } |
442 | @@ -928,6 +941,8 @@ |
443 | } |
444 | if (info->alloced_buffer) |
445 | { |
446 | + if (info->type == READ_CACHE) |
447 | + global_read_buffer.sub(info->buffer_length); |
448 | info->alloced_buffer=0; |
449 | if (info->file != -1) /* File doesn't exist */ |
450 | error= my_b_flush_io_cache(info,1); |
451 | |
452 | === modified file 'drizzled/join_cache.cc' |
453 | --- drizzled/join_cache.cc 2010-07-30 20:31:19 +0000 |
454 | +++ drizzled/join_cache.cc 2010-11-05 13:28:56 +0000 |
455 | @@ -30,6 +30,8 @@ |
456 | #include "config.h" |
457 | #include "drizzled/sql_select.h" /* include join.h */ |
458 | #include "drizzled/field/blob.h" |
459 | +#include "drizzled/drizzled.h" |
460 | +#include "drizzled/internal/my_sys.h" |
461 | |
462 | #include <algorithm> |
463 | |
464 | @@ -87,6 +89,8 @@ |
465 | if (!(cache->field=(CacheField*) |
466 | memory::sql_alloc(sizeof(CacheField)*(cache->fields+table_count*2)+(blobs+1)* sizeof(CacheField*)))) |
467 | { |
468 | + size= cache->end - cache->buff; |
469 | + global_join_buffer.sub(size); |
470 | free((unsigned char*) cache->buff); |
471 | cache->buff=0; |
472 | return(1); |
473 | @@ -162,6 +166,11 @@ |
474 | cache->blobs= blobs; |
475 | *blob_ptr= NULL; /* End sequentel */ |
476 | size= max((size_t) session->variables.join_buff_size, (size_t)cache->length); |
477 | + if (not global_join_buffer.add(size)) |
478 | + { |
479 | + my_error(ER_OUT_OF_GLOBAL_JOINMEMORY, MYF(ME_ERROR+ME_WAITTANG)); |
480 | + return 1; |
481 | + } |
482 | if (!(cache->buff= (unsigned char*) malloc(size))) |
483 | return 1; |
484 | cache->end= cache->buff+size; |
485 | |
486 | === modified file 'drizzled/records.cc' |
487 | --- drizzled/records.cc 2010-10-20 20:25:52 +0000 |
488 | +++ drizzled/records.cc 2010-11-05 13:28:56 +0000 |
489 | @@ -27,6 +27,7 @@ |
490 | #include "drizzled/optimizer/range.h" |
491 | #include "drizzled/internal/my_sys.h" |
492 | #include "drizzled/internal/iocache.h" |
493 | +#include "drizzled/drizzled.h" |
494 | |
495 | namespace drizzled |
496 | { |
497 | @@ -172,6 +173,7 @@ |
498 | { /* free cache if used */ |
499 | if (cache) |
500 | { |
501 | + global_read_rnd_buffer.sub(session->variables.read_rnd_buff_size); |
502 | free((char*) cache); |
503 | cache= NULL; |
504 | } |
505 | @@ -402,6 +404,12 @@ |
506 | local_rec_cache_size= cache_records * reclength; |
507 | rec_cache_size= cache_records * ref_length; |
508 | |
509 | + if (not global_read_rnd_buffer.add(session->variables.read_rnd_buff_size)) |
510 | + { |
511 | + my_error(ER_OUT_OF_GLOBAL_READRNDMEMORY, MYF(ME_ERROR+ME_WAITTANG)); |
512 | + return false; |
513 | + } |
514 | + |
515 | // We have to allocate one more byte to use uint3korr (see comments for it) |
516 | if (cache_records <= 2 || |
517 | !(cache=(unsigned char*) malloc(local_rec_cache_size + cache_records * struct_length + 1))) |
518 | |
519 | === modified file 'drizzled/sql_select.cc' |
520 | --- drizzled/sql_select.cc 2010-11-02 17:38:03 +0000 |
521 | +++ drizzled/sql_select.cc 2010-11-05 13:28:56 +0000 |
522 | @@ -51,6 +51,7 @@ |
523 | #include "drizzled/index_hint.h" |
524 | #include "drizzled/records.h" |
525 | #include "drizzled/internal/iocache.h" |
526 | +#include "drizzled/drizzled.h" |
527 | |
528 | #include "drizzled/sql_union.h" |
529 | #include "drizzled/optimizer/key_field.h" |
530 | @@ -1216,7 +1217,11 @@ |
531 | delete quick; |
532 | quick= 0; |
533 | if (cache.buff) |
534 | + { |
535 | + size_t size= cache.end - cache.buff; |
536 | + global_join_buffer.sub(size); |
537 | free(cache.buff); |
538 | + } |
539 | cache.buff= 0; |
540 | limit= 0; |
541 | if (table) |
542 | |
543 | === added file 'tests/include/setup-global-constraints.inc' |
544 | --- tests/include/setup-global-constraints.inc 1970-01-01 00:00:00 +0000 |
545 | +++ tests/include/setup-global-constraints.inc 2010-11-05 13:28:56 +0000 |
546 | @@ -0,0 +1,32 @@ |
547 | +--disable_warnings |
548 | +DROP TABLE IF EXISTS t1; |
549 | +DROP TABLE IF EXISTS t2; |
550 | +--enable_warnings |
551 | + |
552 | +CREATE TABLE `t1` ( |
553 | + `charcol1` VARCHAR(36) COLLATE utf8_general_ci DEFAULT NULL, |
554 | + `charcol2` VARCHAR(36) COLLATE utf8_general_ci DEFAULT NULL |
555 | +) ENGINE=InnoDB COLLATE = utf8_general_ci; |
556 | + |
557 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
558 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
559 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
560 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
561 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
562 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
563 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
564 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
565 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
566 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
567 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
568 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
569 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
570 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
571 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
572 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
573 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
574 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
575 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
576 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
577 | + |
578 | +CREATE TABLE t2 SELECT * FROM t1; |
579 | |
580 | === added file 'tests/r/global_read_constraints.result' |
581 | --- tests/r/global_read_constraints.result 1970-01-01 00:00:00 +0000 |
582 | +++ tests/r/global_read_constraints.result 2010-11-05 13:28:56 +0000 |
583 | @@ -0,0 +1,32 @@ |
584 | +USE test; |
585 | +DROP TABLE IF EXISTS t1; |
586 | +DROP TABLE IF EXISTS t2; |
587 | +CREATE TABLE `t1` ( |
588 | +`charcol1` VARCHAR(36) COLLATE utf8_general_ci DEFAULT NULL, |
589 | +`charcol2` VARCHAR(36) COLLATE utf8_general_ci DEFAULT NULL |
590 | +) ENGINE=InnoDB COLLATE = utf8_general_ci; |
591 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
592 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
593 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
594 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
595 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
596 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
597 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
598 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
599 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
600 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
601 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
602 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
603 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
604 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
605 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
606 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
607 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
608 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
609 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
610 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
611 | +CREATE TABLE t2 SELECT * FROM t1; |
612 | +create temporary table t3 (a varchar(255), b varchar(255)) engine=myisam; |
613 | +insert into t3 select * from t1; |
614 | +select SQL_BIG_RESULT * from t3, (select * from t1) as t4; |
615 | +ERROR HY000: Global read memory constraint hit; increase read-buffer-threshold |
616 | |
617 | === added file 'tests/r/global_read_rnd_constraints.result' |
618 | --- tests/r/global_read_rnd_constraints.result 1970-01-01 00:00:00 +0000 |
619 | +++ tests/r/global_read_rnd_constraints.result 2010-11-05 13:28:56 +0000 |
620 | @@ -0,0 +1,1 @@ |
621 | +USE test; |
622 | |
623 | === added file 'tests/r/global_sort_join_constraints.result' |
624 | --- tests/r/global_sort_join_constraints.result 1970-01-01 00:00:00 +0000 |
625 | +++ tests/r/global_sort_join_constraints.result 2010-11-05 13:28:56 +0000 |
626 | @@ -0,0 +1,30 @@ |
627 | +USE test; |
628 | +DROP TABLE IF EXISTS t1; |
629 | +DROP TABLE IF EXISTS t2; |
630 | +CREATE TABLE `t1` ( |
631 | +`charcol1` VARCHAR(36) COLLATE utf8_general_ci DEFAULT NULL, |
632 | +`charcol2` VARCHAR(36) COLLATE utf8_general_ci DEFAULT NULL |
633 | +) ENGINE=InnoDB COLLATE = utf8_general_ci; |
634 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
635 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
636 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
637 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
638 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
639 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
640 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
641 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
642 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
643 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
644 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
645 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
646 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
647 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
648 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
649 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
650 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
651 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
652 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
653 | +INSERT INTO t1 VALUES (UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()),(UUID(), UUID()); |
654 | +CREATE TABLE t2 SELECT * FROM t1; |
655 | +select SQL_BIG_RESULT * from t1 join t2 on (t1.charcol1 = t2.charcol2) join t2 as t3 on (t1.charcol1 = t3.charcol2); |
656 | +ERROR HY000: Global join memory constraint hit; increase join-heap-threshold |
657 | |
658 | === added file 'tests/t/global_read_constraints-master.opt' |
659 | --- tests/t/global_read_constraints-master.opt 1970-01-01 00:00:00 +0000 |
660 | +++ tests/t/global_read_constraints-master.opt 2010-11-05 13:28:56 +0000 |
661 | @@ -0,0 +1,1 @@ |
662 | +--read-buffer-threshold=128k |
663 | |
664 | === added file 'tests/t/global_read_constraints.test' |
665 | --- tests/t/global_read_constraints.test 1970-01-01 00:00:00 +0000 |
666 | +++ tests/t/global_read_constraints.test 2010-11-05 13:28:56 +0000 |
667 | @@ -0,0 +1,9 @@ |
668 | +# Setup table for tests |
669 | +USE test; |
670 | + |
671 | +--source include/setup-global-constraints.inc |
672 | + |
673 | +create temporary table t3 (a varchar(255), b varchar(255)) engine=myisam; |
674 | +insert into t3 select * from t1; |
675 | +--error 1705 |
676 | +select SQL_BIG_RESULT * from t3, (select * from t1) as t4; |
677 | |
678 | === added file 'tests/t/global_read_rnd_constraints-master.opt' |
679 | --- tests/t/global_read_rnd_constraints-master.opt 1970-01-01 00:00:00 +0000 |
680 | +++ tests/t/global_read_rnd_constraints-master.opt 2010-11-05 13:28:56 +0000 |
681 | @@ -0,0 +1,1 @@ |
682 | +--read-rnd-threshold=262144 |
683 | |
684 | === added file 'tests/t/global_read_rnd_constraints.test' |
685 | --- tests/t/global_read_rnd_constraints.test 1970-01-01 00:00:00 +0000 |
686 | +++ tests/t/global_read_rnd_constraints.test 2010-11-05 13:28:56 +0000 |
687 | @@ -0,0 +1,19 @@ |
688 | +# Test is disabled because drizzleslap error code is now different on different platforms |
689 | + |
690 | +# Setup table for tests |
691 | +USE test; |
692 | + |
693 | +#--source include/setup-global-constraints.inc |
694 | + |
695 | +# We appear to need to beef up the table to use the read_rnd buffer at all |
696 | +#alter table t1 modify charcol1 varchar(255); |
697 | +#alter table t1 modify charcol2 varchar(255); |
698 | +#insert into t1 select SQL_BIG_RESULT * from t1; |
699 | +#insert into t1 select SQL_BIG_RESULT * from t1; |
700 | +#insert into t1 select SQL_BIG_RESULT * from t1; |
701 | +#insert into t1 select SQL_BIG_RESULT * from t1; |
702 | +#insert into t1 select SQL_BIG_RESULT * from t1; |
703 | + |
704 | +# Test for read_rnd buffer constraint |
705 | +#--error 134 |
706 | +#--exec $DRIZZLE_SLAP -q "SELECT SQL_BIG_RESULT * FROM t1 ORDER BY 1" -c100 --iterations=1 --number-of-queries=1000 --create-schema=test |
707 | |
708 | === added file 'tests/t/global_sort_join_constraints-master.opt' |
709 | --- tests/t/global_sort_join_constraints-master.opt 1970-01-01 00:00:00 +0000 |
710 | +++ tests/t/global_sort_join_constraints-master.opt 2010-11-05 13:28:56 +0000 |
711 | @@ -0,0 +1,1 @@ |
712 | +--join-heap-threshold=131072 --sort-heap-threshold=2097144 |
713 | |
714 | === added file 'tests/t/global_sort_join_constraints.test' |
715 | --- tests/t/global_sort_join_constraints.test 1970-01-01 00:00:00 +0000 |
716 | +++ tests/t/global_sort_join_constraints.test 2010-11-05 13:28:56 +0000 |
717 | @@ -0,0 +1,13 @@ |
718 | +# Setup table for tests |
719 | +USE test; |
720 | + |
721 | +--source include/setup-global-constraints.inc |
722 | + |
723 | +# Test for sort buffer constraint |
724 | +# Test disabled, needs two parallel filesorts to trigger error. Drizzleslap's error handling currently unpredictable |
725 | +#--error 134 |
726 | +#--exec $DRIZZLE_SLAP -q "SELECT * FROM t1 ORDER BY 1" -c100 --iterations=1 --number-of-queries=1000 --create-schema=test |
727 | + |
728 | +# Test for join buffer constraint |
729 | +--error 1703 |
730 | +select SQL_BIG_RESULT * from t1 join t2 on (t1.charcol1 = t2.charcol2) join t2 as t3 on (t1.charcol1 = t3.charcol2); |
731 | |
732 | === modified file 'unittests/atomics_test.cc' |
733 | --- unittests/atomics_test.cc 2010-06-02 22:35:45 +0000 |
734 | +++ unittests/atomics_test.cc 2010-11-05 13:28:56 +0000 |
735 | @@ -78,8 +78,8 @@ |
736 | |
737 | u235.fetch_and_store(100); |
738 | |
739 | - EXPECT_EQ(false, u235.compare_and_swap(42, 200)); |
740 | - EXPECT_EQ(true, u235.compare_and_swap(200, 100)); |
741 | + ASSERT_FALSE(u235.compare_and_swap(42, 200)); |
742 | + ASSERT_TRUE(u235.compare_and_swap(200, 100)); |
743 | EXPECT_EQ(200, u235); |
744 | } |
745 | |
746 | |
747 | === added file 'unittests/global_buffer_test.cc' |
748 | --- unittests/global_buffer_test.cc 1970-01-01 00:00:00 +0000 |
749 | +++ unittests/global_buffer_test.cc 2010-11-05 13:28:56 +0000 |
750 | @@ -0,0 +1,60 @@ |
751 | +/* -*- mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*- |
752 | + * vim:expandtab:shiftwidth=2:tabstop=2:smarttab: |
753 | + * |
754 | + * Copyright (C) 2010 Andrew Hutchings |
755 | + * |
756 | + * This program is free software; you can redistribute it and/or modify |
757 | + * it under the terms of the GNU General Public License as published by |
758 | + * the Free Software Foundation; either version 2 of the License, or |
759 | + * (at your option) any later version. |
760 | + * |
761 | + * This program is distributed in the hope that it will be useful, |
762 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
763 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
764 | + * GNU General Public License for more details. |
765 | + * |
766 | + * You should have received a copy of the GNU General Public License |
767 | + * along with this program; if not, write to the Free Software |
768 | + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
769 | + */ |
770 | + |
771 | +#include "config.h" |
772 | + |
773 | +#include <gtest/gtest.h> |
774 | +#include "drizzled/global_buffer.h" |
775 | + |
776 | +TEST(global_buffer, overflow) |
777 | +{ |
778 | + drizzled::global_buffer_constraint<uint64_t> test_buffer(1024); |
779 | + |
780 | + ASSERT_TRUE(test_buffer.add(512)); |
781 | + ASSERT_TRUE(test_buffer.add(512)); |
782 | + ASSERT_FALSE(test_buffer.add(1)); |
783 | +} |
784 | + |
785 | +TEST(global_buffer, subtract) |
786 | +{ |
787 | + drizzled::global_buffer_constraint<uint64_t> test_buffer(1024); |
788 | + |
789 | + ASSERT_TRUE(test_buffer.add(1024)); |
790 | + ASSERT_TRUE(test_buffer.sub(512)); |
791 | + ASSERT_TRUE(test_buffer.add(512)); |
792 | + ASSERT_FALSE(test_buffer.add(1)); |
793 | +} |
794 | + |
795 | +TEST(global_buffer, underflow) |
796 | +{ |
797 | + drizzled::global_buffer_constraint<uint64_t> test_buffer(1024); |
798 | + |
799 | + ASSERT_TRUE(test_buffer.add(10)); |
800 | + ASSERT_FALSE(test_buffer.sub(11)); |
801 | +} |
802 | + |
803 | +TEST(global_buffer, change_max) |
804 | +{ |
805 | + drizzled::global_buffer_constraint<uint64_t> test_buffer(1024); |
806 | + |
807 | + test_buffer.setMaxSize(512); |
808 | + |
809 | + ASSERT_FALSE(test_buffer.add(513)); |
810 | +} |
811 | |
812 | === modified file 'unittests/include.am' |
813 | --- unittests/include.am 2010-09-14 07:47:50 +0000 |
814 | +++ unittests/include.am 2010-11-05 13:28:56 +0000 |
815 | @@ -28,6 +28,7 @@ |
816 | unittests/date_test.cc \ |
817 | unittests/date_time_test.cc \ |
818 | unittests/generators.cc \ |
819 | + unittests/global_buffer_test.cc \ |
820 | unittests/libdrizzle_test.cc \ |
821 | unittests/main.cc \ |
822 | unittests/micro_timestamp_test.cc \ |
823 | |
824 | === modified file 'unittests/pthread_atomics_test.cc' |
825 | --- unittests/pthread_atomics_test.cc 2010-06-02 22:35:45 +0000 |
826 | +++ unittests/pthread_atomics_test.cc 2010-11-05 13:28:56 +0000 |
827 | @@ -106,8 +106,8 @@ |
828 | |
829 | u235.fetch_and_store(100); |
830 | |
831 | - EXPECT_EQ(false, u235.compare_and_swap(42, 200)); |
832 | - EXPECT_EQ(true, u235.compare_and_swap(200, 100)); |
833 | + ASSERT_FALSE(u235.compare_and_swap(42, 200)); |
834 | + ASSERT_TRUE(u235.compare_and_swap(200, 100)); |
835 | EXPECT_EQ(200, u235); |
836 | } |
837 | |
838 | |
839 | === modified file 'unittests/utf8_test.cc' |
840 | --- unittests/utf8_test.cc 2010-06-03 20:42:25 +0000 |
841 | +++ unittests/utf8_test.cc 2010-11-05 13:28:56 +0000 |
842 | @@ -29,10 +29,10 @@ |
843 | |
844 | TEST(utf8, is_single) |
845 | { |
846 | - EXPECT_EQ(true, utf8::is_single('a')); |
847 | + ASSERT_TRUE(utf8::is_single('a')); |
848 | const char *multi_byte= "รง"; |
849 | - EXPECT_EQ(false, utf8::is_single(*multi_byte)); |
850 | - EXPECT_EQ(false, utf8::is_single(*(multi_byte + 1))); |
851 | + ASSERT_FALSE(utf8::is_single(*multi_byte)); |
852 | + ASSERT_FALSE(utf8::is_single(*(multi_byte + 1))); |
853 | } |
854 | |
855 | TEST(utf8, codepoint_length) |
http:// hudson. drizzle. org/view/ Drizzle- build/job/ drizzle- build-ubuntu10. 04-32bit- 2/792/console