Merge lp:~jaypipes/drizzle/captain-20090915-01 into lp:~drizzle-trunk/drizzle/development
- captain-20090915-01
- Merge into development
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~jaypipes/drizzle/captain-20090915-01 |
Merge into: | lp:~drizzle-trunk/drizzle/development |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~jaypipes/drizzle/captain-20090915-01 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Brian Aker | Pending | ||
Review via email: mp+12163@code.launchpad.net |
This proposal supersedes a proposal from 2009-09-15.
Commit message
Description of the change
Jay Pipes (jaypipes) wrote : Posted in a previous version of this proposal | # |
Brian Aker (brianaker) wrote : Posted in a previous version of this proposal | # |
A few things:
742 + res= (error >= 0 || session-
743 + DRIZZLE_
On non-dtrace systems this causes an evaluation/assign that will never be used (combine the statement) (once in the code res was the right thing to do, once it was not).
DRIZZLE_
Awesome fixes on all of the conversion work.
I can just fix this stuff BTW (working with someone right now on code reviews).
Jay Pipes (jaypipes) wrote : Posted in a previous version of this proposal | # |
Brian Aker wrote:
> Review: Needs Fixing
> A few things:
> 742 + res= (error >= 0 || session-
> 743 + DRIZZLE_
>
> On non-dtrace systems this causes an evaluation/assign that will never be used (combine the statement) (once in the code res was the right thing to do, once it was not).
>
> DRIZZLE_
Hmmm...agreed. Nice catch. Padraig, can you try using a
const_cast<const char *>(session->db) for both DRIZZLE_
DRIZZLE_
> Awesome fixes on all of the conversion work.
>
> I can just fix this stuff BTW (working with someone right now on code reviews).
I'd prefer if Padraig pushed a fix to his branch and we merge in from there.
Thanks!
Jay
Padraig O'Sullivan (posulliv) wrote : Posted in a previous version of this proposal | # |
> I'd prefer if Padraig pushed a fix to his branch and we merge in from there.
Ok, I made these changes and pushed them to my branch. I'll re-submit the merge proposal now.
Thanks for the comments!
Padraig
>
> Thanks!
>
> Jay
Jay Pipes (jaypipes) wrote : | # |
Adds the fix from Padraig/Trond that you requested on the DTrace Probe branch. All tests passing on all 64-bit platforms, Brian. :)
Cheers,
Jay
Preview Diff
1 | === modified file 'drizzled/Makefile.am' |
2 | --- drizzled/Makefile.am 2009-09-16 21:55:09 +0000 |
3 | +++ drizzled/Makefile.am 2009-09-21 14:34:41 +0000 |
4 | @@ -18,10 +18,16 @@ |
5 | |
6 | DTRACEFILES = handler.o \ |
7 | filesort.o \ |
8 | + drizzled.o \ |
9 | + session.o \ |
10 | sql_delete.o \ |
11 | sql_insert.o \ |
12 | sql_select.o \ |
13 | - sql_update.o |
14 | + sql_update.o \ |
15 | + sql_parse.o \ |
16 | + statement/delete.o \ |
17 | + statement/insert.o \ |
18 | + statement/insert_select.o |
19 | |
20 | drizzledincludedir = ${includedir}/drizzled |
21 | nobase_dist_drizzledinclude_HEADERS = \ |
22 | @@ -695,10 +701,6 @@ |
23 | util/convert.cc \ |
24 | xid.cc |
25 | |
26 | -if HAVE_DTRACE |
27 | -drizzled_SOURCES += probes.d |
28 | -endif |
29 | - |
30 | libserialutil_la_SOURCES = db.cc table_proto_write.cc |
31 | libserialutil_la_CXXFLAGS= ${AM_CXXFLAGS} ${PROTOSKIP_WARNINGS} |
32 | |
33 | @@ -726,7 +728,7 @@ |
34 | BUILT_SOURCES = $(BUILT_MAINT_SRC) \ |
35 | symbol_hash.h \ |
36 | function_hash.h \ |
37 | - $(PCHHEADERS) |
38 | + $(PCHHEADERS) |
39 | |
40 | EXTRA_DIST = \ |
41 | $(BUILT_MAINT_SRC) \ |
42 | @@ -745,16 +747,29 @@ |
43 | $(PCHHEADERS) \ |
44 | $(nodist_drizzled_SOURCES) |
45 | |
46 | +if DTRACE_NEEDS_OBJECTS |
47 | +drizzled_SOURCES += probes.d |
48 | +endif |
49 | + |
50 | +if HAVE_DTRACE |
51 | +BUILT_SOURCES += generated_probes.h |
52 | +CLEANFILES += generated_probes.h |
53 | +endif |
54 | + |
55 | + |
56 | DISTCLEANFILES = $(EXTRA_PROGRAMS) \ |
57 | $(BUILT_MAINT_SRC) |
58 | |
59 | MAINTAINERCLEANFILES = $(BUILT_MAINT_SRC) |
60 | |
61 | -probes.h: probes.d |
62 | - $(DTRACE) $(DTRACEFLAGS) -h -s probes.d |
63 | - mv probes.h probes.h.bak |
64 | - sed "s/#include <unistd.h>//g" probes.h.bak > probes.h |
65 | - rm probes.h.bak |
66 | +generated_probes.h : probes.d |
67 | + $(DTRACE) $(DTRACEFLAGS) -h -s probes.d -o generated_probes.h |
68 | + mv generated_probes.h generated_probes.h.bak |
69 | + sed "s/#include <unistd.h>//g" generated_probes.h.bak > generated_probes.h |
70 | + rm generated_probes.h.bak |
71 | + sed -e 's,void \*,const void \*,g' generated_probes.h | \ |
72 | + sed -e 's,char \*,const char \*,g' | tr '\t' ' ' > dtrace_probes.tmp |
73 | + mv dtrace_probes.tmp generated_probes.h |
74 | |
75 | |
76 | SUFFIXES = .d .gch .gperf .stamp-h |
77 | |
78 | === modified file 'drizzled/drizzled.cc' |
79 | --- drizzled/drizzled.cc 2009-09-15 17:23:06 +0000 |
80 | +++ drizzled/drizzled.cc 2009-09-21 14:34:41 +0000 |
81 | @@ -44,6 +44,7 @@ |
82 | #include <drizzled/scheduling.h> |
83 | #include "drizzled/temporal_format.h" /* For init_temporal_formats() */ |
84 | #include "drizzled/slot/listen.h" |
85 | +#include "drizzled/probes.h" |
86 | |
87 | #include <google/protobuf/stubs/common.h> |
88 | |
89 | @@ -455,6 +456,7 @@ |
90 | tmp= *it; |
91 | tmp->killed= Session::KILL_CONNECTION; |
92 | tmp->scheduler->killSession(tmp); |
93 | + DRIZZLE_CONNECTION_DONE(tmp->thread_id); |
94 | if (tmp->mysys_var) |
95 | { |
96 | tmp->mysys_var->abort=1; |
97 | @@ -765,6 +767,7 @@ |
98 | { |
99 | statistic_increment(killed_threads, &LOCK_status); |
100 | session->scheduler->killSessionNow(session); |
101 | + DRIZZLE_CONNECTION_DONE(session->thread_id); |
102 | } |
103 | return; |
104 | } |
105 | |
106 | === modified file 'drizzled/filesort.cc' |
107 | --- drizzled/filesort.cc 2009-08-20 20:29:18 +0000 |
108 | +++ drizzled/filesort.cc 2009-09-13 01:09:19 +0000 |
109 | @@ -114,7 +114,7 @@ |
110 | TableList *tab= table->pos_in_table_list; |
111 | Item_subselect *subselect= tab ? tab->containing_subselect() : 0; |
112 | |
113 | - DRIZZLE_FILESORT_START(); |
114 | + DRIZZLE_FILESORT_START(table->s->db.str, table->s->table_name.str); |
115 | |
116 | /* |
117 | Release InnoDB's adaptive hash index latch (if holding) before |
118 | @@ -324,8 +324,8 @@ |
119 | (uint32_t) records, &LOCK_status); |
120 | *examined_rows= param.examined_rows; |
121 | memcpy(&table->sort, &table_sort, sizeof(filesort_info_st)); |
122 | - DRIZZLE_FILESORT_END(); |
123 | - return(error ? HA_POS_ERROR : records); |
124 | + DRIZZLE_FILESORT_DONE(error, records); |
125 | + return (error ? HA_POS_ERROR : records); |
126 | } /* filesort */ |
127 | |
128 | |
129 | |
130 | === modified file 'drizzled/handler.cc' |
131 | --- drizzled/handler.cc 2009-08-23 01:10:19 +0000 |
132 | +++ drizzled/handler.cc 2009-09-14 01:25:59 +0000 |
133 | @@ -2696,9 +2696,9 @@ |
134 | We cache the table flags if the locking succeeded. Otherwise, we |
135 | keep them as they were when they were fetched in ha_open(). |
136 | */ |
137 | - DRIZZLE_EXTERNAL_LOCK(lock_type); |
138 | |
139 | int error= external_lock(session, lock_type); |
140 | + |
141 | if (error == 0) |
142 | cached_table_flags= table_flags(); |
143 | return error; |
144 | @@ -2729,7 +2729,6 @@ |
145 | int handler::ha_write_row(unsigned char *buf) |
146 | { |
147 | int error; |
148 | - DRIZZLE_INSERT_ROW_START(); |
149 | |
150 | /* |
151 | * If we have a timestamp column, update it to the current time |
152 | @@ -2743,12 +2742,13 @@ |
153 | mark_trx_read_write(); |
154 | |
155 | if (unlikely(error= write_row(buf))) |
156 | + { |
157 | return error; |
158 | + } |
159 | |
160 | if (unlikely(log_row_for_replication(table, 0, buf))) |
161 | return HA_ERR_RBR_LOGGING_FAILED; /* purecov: inspected */ |
162 | |
163 | - DRIZZLE_INSERT_ROW_END(); |
164 | return 0; |
165 | } |
166 | |
167 | @@ -2766,7 +2766,9 @@ |
168 | mark_trx_read_write(); |
169 | |
170 | if (unlikely(error= update_row(old_data, new_data))) |
171 | + { |
172 | return error; |
173 | + } |
174 | |
175 | if (unlikely(log_row_for_replication(table, old_data, new_data))) |
176 | return HA_ERR_RBR_LOGGING_FAILED; |
177 | |
178 | === modified file 'drizzled/probes.d' |
179 | --- drizzled/probes.d 2008-11-01 00:46:20 +0000 |
180 | +++ drizzled/probes.d 2009-09-14 20:44:27 +0000 |
181 | @@ -1,7 +1,7 @@ |
182 | /* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- |
183 | * vim:expandtab:shiftwidth=2:tabstop=2:smarttab: |
184 | * |
185 | - * Copyright (C) 2008 Sun Microsystems |
186 | + * Copyright (C) 2009 Sun Microsystems |
187 | * |
188 | * This program is free software; you can redistribute it and/or modify |
189 | * it under the terms of the GNU General Public License as published by |
190 | @@ -17,18 +17,107 @@ |
191 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
192 | */ |
193 | |
194 | +/* |
195 | + The actual probe names in DTrace scripts will replace '__' by '-'. Thus |
196 | + insert__row__start will be insert-row-start. |
197 | + |
198 | + Recommendations for adding new probes: |
199 | + |
200 | + - each probe should have the minimal set of arguments required to |
201 | + unambiguously identify the context in which the probe fires. Redundant |
202 | + probes (i.e. the ones that can be obtained in user scripts from previous |
203 | + probes' arguments or otherwise) may be added for convenience. |
204 | + |
205 | + - try to avoid computationally expensive probe arguments. If impossible, |
206 | + use *_ENABLED() macros to check if the probe is activated before |
207 | + performing expensive calculations for a probe argument. |
208 | + |
209 | + - all *-done probes should have a status argument wherever applicable to make |
210 | + it possible for user scripts to figure out whether the completed operation |
211 | + was successful or not. |
212 | + |
213 | + - for all status arguments, a non-zero value should be returned on error or |
214 | + failure, 0 should be returned on success. |
215 | +*/ |
216 | + |
217 | provider drizzle { |
218 | -probe external_lock(int); |
219 | -probe insert_row_start(); |
220 | -probe insert_row_end(); |
221 | -probe filesort_start(); |
222 | -probe filesort_end(); |
223 | -probe delete_start(); |
224 | -probe delete_end(); |
225 | -probe insert_start(); |
226 | -probe insert_end(); |
227 | -probe select_start(); |
228 | -probe select_end(); |
229 | -probe update_start(); |
230 | -probe update_end(); |
231 | + |
232 | + /* The following ones fire when creating or closing a client connection */ |
233 | + probe connection__start(unsigned long conn_id); |
234 | + probe connection__done(unsigned long conn_id); |
235 | + |
236 | + /* |
237 | + * Fire at the start/end of any client command processing (including SQL |
238 | + * queries). |
239 | + */ |
240 | + probe command__start(unsigned long conn_id, int command); |
241 | + probe command__done(int status); |
242 | + |
243 | + /* |
244 | + * The following probes fire at the start/end of any SQL query processing, |
245 | + * respectively. |
246 | + * |
247 | + * query_start() has a lot of parameters that can be used to pick up |
248 | + * parameters for a lot of other probes here. For simplicity reasons we also |
249 | + * add the query string to most other DTrace probes as well. Hostname is |
250 | + * either the hostname or the IP address of the Drizzle client. |
251 | + */ |
252 | + probe query__start(const char *query, |
253 | + unsigned long conn_id, |
254 | + const char *db_name); |
255 | + probe query__done(int status); |
256 | + |
257 | + /* Fire at the start/end of SQL query parsing */ |
258 | + probe query__parse__start(const char *query); |
259 | + probe query__parse__done(int status); |
260 | + |
261 | + /* |
262 | + * This probe fires when the actual query execution starts |
263 | + */ |
264 | + probe query__exec__start(const char *query, |
265 | + unsigned long connid, |
266 | + const char *db_name); |
267 | + probe query__exec__done(int status); |
268 | + |
269 | + /* These probes fire when performing write operations towards any handler */ |
270 | + probe insert__row__start(const char *db, const char *table); |
271 | + probe insert__row__done(int status); |
272 | + probe update__row__start(const char *db, const char *table); |
273 | + probe update__row__done(int status); |
274 | + probe delete__row__start(const char *db, const char *table); |
275 | + probe delete__row__done(int status); |
276 | + |
277 | + /* |
278 | + * These probes fire when calling external_lock for any handler |
279 | + * depending on the lock type being acquired or released. |
280 | + */ |
281 | + probe handler__rdlock__start(const char *db, const char *table); |
282 | + probe handler__wrlock__start(const char *db, const char *table); |
283 | + probe handler__unlock__start(const char *db, const char *table); |
284 | + probe handler__rdlock__done(int status); |
285 | + probe handler__wrlock__done(int status); |
286 | + probe handler__unlock__done(int status); |
287 | + |
288 | + /* |
289 | + * These probes fire when a filesort activity happens in a query. |
290 | + */ |
291 | + probe filesort__start(const char *db, const char *table); |
292 | + probe filesort__done(int status, unsigned long rows); |
293 | + /* |
294 | + * The query types SELECT, INSERT, INSERT AS SELECT, UPDATE, DELETE |
295 | + * are all probed. |
296 | + * The start probe always contains the query text. |
297 | + */ |
298 | + probe select__start(const char *query); |
299 | + probe select__done(int status, unsigned long rows); |
300 | + probe insert__start(const char *query); |
301 | + probe insert__done(int status, unsigned long rows); |
302 | + probe insert__select__start(const char *query); |
303 | + probe insert__select__done(int status, unsigned long rows); |
304 | + probe update__start(const char *query); |
305 | + probe update__done(int status, |
306 | + unsigned long rowsmatches, unsigned long rowschanged); |
307 | + probe delete__start(const char *query); |
308 | + probe delete__done(int status, unsigned long rows); |
309 | + |
310 | }; |
311 | |
312 | === added file 'drizzled/probes.h' |
313 | --- drizzled/probes.h 1970-01-01 00:00:00 +0000 |
314 | +++ drizzled/probes.h 2009-09-14 20:12:21 +0000 |
315 | @@ -0,0 +1,97 @@ |
316 | +/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*- |
317 | + * vim:expandtab:shiftwidth=2:tabstop=2:smarttab: |
318 | + * |
319 | + * Copyright (C) 2009 Sun Microsystems |
320 | + * |
321 | + * This program is free software; you can redistribute it and/or modify |
322 | + * it under the terms of the GNU General Public License as published by |
323 | + * the Free Software Foundation; either version 2 of the License, or |
324 | + * (at your option) any later version. |
325 | + * |
326 | + * This program is distributed in the hope that it will be useful, |
327 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
328 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
329 | + * GNU General Public License for more details. |
330 | + * |
331 | + * You should have received a copy of the GNU General Public License |
332 | + * along with this program; if not, write to the Free Software |
333 | + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
334 | + */ |
335 | + |
336 | +#ifndef DRIZZLED_PROBES_H |
337 | +#define DRIZZLED_PROBES_H |
338 | + |
339 | +#ifdef HAVE_DTRACE |
340 | +#include "drizzled/generated_probes.h" |
341 | +#else |
342 | +#define DRIZZLE_COMMAND_DONE(arg0) |
343 | +#define DRIZZLE_COMMAND_DONE_ENABLED() (0) |
344 | +#define DRIZZLE_COMMAND_START(arg0, arg1) |
345 | +#define DRIZZLE_COMMAND_START_ENABLED() (0) |
346 | +#define DRIZZLE_CONNECTION_DONE(arg0) |
347 | +#define DRIZZLE_CONNECTION_DONE_ENABLED() (0) |
348 | +#define DRIZZLE_CONNECTION_START(arg0) |
349 | +#define DRIZZLE_CONNECTION_START_ENABLED() (0) |
350 | +#define DRIZZLE_DELETE_DONE(arg0, arg1) |
351 | +#define DRIZZLE_DELETE_DONE_ENABLED() (0) |
352 | +#define DRIZZLE_DELETE_ROW_DONE(arg0) |
353 | +#define DRIZZLE_DELETE_ROW_DONE_ENABLED() (0) |
354 | +#define DRIZZLE_DELETE_ROW_START(arg0, arg1) |
355 | +#define DRIZZLE_DELETE_ROW_START_ENABLED() (0) |
356 | +#define DRIZZLE_DELETE_START(arg0) |
357 | +#define DRIZZLE_DELETE_START_ENABLED() (0) |
358 | +#define DRIZZLE_FILESORT_DONE(arg0, arg1) |
359 | +#define DRIZZLE_FILESORT_DONE_ENABLED() (0) |
360 | +#define DRIZZLE_FILESORT_START(arg0, arg1) |
361 | +#define DRIZZLE_FILESORT_START_ENABLED() (0) |
362 | +#define DRIZZLE_HANDLER_RDLOCK_DONE(arg0) |
363 | +#define DRIZZLE_HANDLER_RDLOCK_DONE_ENABLED() (0) |
364 | +#define DRIZZLE_HANDLER_RDLOCK_START(arg0, arg1) |
365 | +#define DRIZZLE_HANDLER_RDLOCK_START_ENABLED() (0) |
366 | +#define DRIZZLE_HANDLER_UNLOCK_DONE(arg0) |
367 | +#define DRIZZLE_HANDLER_UNLOCK_DONE_ENABLED() (0) |
368 | +#define DRIZZLE_HANDLER_UNLOCK_START(arg0, arg1) |
369 | +#define DRIZZLE_HANDLER_UNLOCK_START_ENABLED() (0) |
370 | +#define DRIZZLE_HANDLER_WRLOCK_DONE(arg0) |
371 | +#define DRIZZLE_HANDLER_WRLOCK_DONE_ENABLED() (0) |
372 | +#define DRIZZLE_HANDLER_WRLOCK_START(arg0, arg1) |
373 | +#define DRIZZLE_HANDLER_WRLOCK_START_ENABLED() (0) |
374 | +#define DRIZZLE_INSERT_DONE(arg0, arg1) |
375 | +#define DRIZZLE_INSERT_DONE_ENABLED() (0) |
376 | +#define DRIZZLE_INSERT_ROW_DONE(arg0) |
377 | +#define DRIZZLE_INSERT_ROW_DONE_ENABLED() (0) |
378 | +#define DRIZZLE_INSERT_ROW_START(arg0, arg1) |
379 | +#define DRIZZLE_INSERT_ROW_START_ENABLED() (0) |
380 | +#define DRIZZLE_INSERT_SELECT_DONE(arg0, arg1) |
381 | +#define DRIZZLE_INSERT_SELECT_DONE_ENABLED() (0) |
382 | +#define DRIZZLE_INSERT_SELECT_START(arg0) |
383 | +#define DRIZZLE_INSERT_SELECT_START_ENABLED() (0) |
384 | +#define DRIZZLE_INSERT_START(arg0) |
385 | +#define DRIZZLE_INSERT_START_ENABLED() (0) |
386 | +#define DRIZZLE_QUERY_DONE(arg0) |
387 | +#define DRIZZLE_QUERY_DONE_ENABLED() (0) |
388 | +#define DRIZZLE_QUERY_EXEC_DONE(arg0) |
389 | +#define DRIZZLE_QUERY_EXEC_DONE_ENABLED() (0) |
390 | +#define DRIZZLE_QUERY_EXEC_START(arg0, arg1, arg2) |
391 | +#define DRIZZLE_QUERY_EXEC_START_ENABLED() (0) |
392 | +#define DRIZZLE_QUERY_PARSE_DONE(arg0) |
393 | +#define DRIZZLE_QUERY_PARSE_DONE_ENABLED() (0) |
394 | +#define DRIZZLE_QUERY_PARSE_START(arg0) |
395 | +#define DRIZZLE_QUERY_PARSE_START_ENABLED() (0) |
396 | +#define DRIZZLE_QUERY_START(arg0, arg1, arg2) |
397 | +#define DRIZZLE_QUERY_START_ENABLED() (0) |
398 | +#define DRIZZLE_SELECT_DONE(arg0, arg1) |
399 | +#define DRIZZLE_SELECT_DONE_ENABLED() (0) |
400 | +#define DRIZZLE_SELECT_START(arg0) |
401 | +#define DRIZZLE_SELECT_START_ENABLED() (0) |
402 | +#define DRIZZLE_UPDATE_DONE(arg0, arg1, arg2) |
403 | +#define DRIZZLE_UPDATE_DONE_ENABLED() (0) |
404 | +#define DRIZZLE_UPDATE_ROW_DONE(arg0) |
405 | +#define DRIZZLE_UPDATE_ROW_DONE_ENABLED() (0) |
406 | +#define DRIZZLE_UPDATE_ROW_START(arg0, arg1) |
407 | +#define DRIZZLE_UPDATE_ROW_START_ENABLED() (0) |
408 | +#define DRIZZLE_UPDATE_START(arg0) |
409 | +#define DRIZZLE_UPDATE_START_ENABLED() (0) |
410 | +#endif |
411 | + |
412 | +#endif /* DRIZZLED_PROBES_H */ |
413 | |
414 | === removed file 'drizzled/probes.h' |
415 | --- drizzled/probes.h 2009-05-21 17:05:14 +0000 |
416 | +++ drizzled/probes.h 1970-01-01 00:00:00 +0000 |
417 | @@ -1,250 +0,0 @@ |
418 | -/* |
419 | - * Generated by dtrace(1M). |
420 | - */ |
421 | - |
422 | -#ifndef _PROBES_H |
423 | -#define _PROBES_H |
424 | - |
425 | - |
426 | - |
427 | -#ifdef __cplusplus |
428 | -extern "C" { |
429 | -#endif |
430 | - |
431 | -#if _DTRACE_VERSION |
432 | - |
433 | -#define DRIZZLE_DELETE_END() \ |
434 | - __dtrace_drizzle___delete_end() |
435 | -#ifndef __sparc |
436 | -#define DRIZZLE_DELETE_END_ENABLED() \ |
437 | - __dtraceenabled_drizzle___delete_end() |
438 | -#else |
439 | -#define DRIZZLE_DELETE_END_ENABLED() \ |
440 | - __dtraceenabled_drizzle___delete_end(0) |
441 | -#endif |
442 | -#define DRIZZLE_DELETE_START() \ |
443 | - __dtrace_drizzle___delete_start() |
444 | -#ifndef __sparc |
445 | -#define DRIZZLE_DELETE_START_ENABLED() \ |
446 | - __dtraceenabled_drizzle___delete_start() |
447 | -#else |
448 | -#define DRIZZLE_DELETE_START_ENABLED() \ |
449 | - __dtraceenabled_drizzle___delete_start(0) |
450 | -#endif |
451 | -#define DRIZZLE_EXTERNAL_LOCK(arg0) \ |
452 | - __dtrace_drizzle___external_lock(arg0) |
453 | -#ifndef __sparc |
454 | -#define DRIZZLE_EXTERNAL_LOCK_ENABLED() \ |
455 | - __dtraceenabled_drizzle___external_lock() |
456 | -#else |
457 | -#define DRIZZLE_EXTERNAL_LOCK_ENABLED() \ |
458 | - __dtraceenabled_drizzle___external_lock(0) |
459 | -#endif |
460 | -#define DRIZZLE_FILESORT_END() \ |
461 | - __dtrace_drizzle___filesort_end() |
462 | -#ifndef __sparc |
463 | -#define DRIZZLE_FILESORT_END_ENABLED() \ |
464 | - __dtraceenabled_drizzle___filesort_end() |
465 | -#else |
466 | -#define DRIZZLE_FILESORT_END_ENABLED() \ |
467 | - __dtraceenabled_drizzle___filesort_end(0) |
468 | -#endif |
469 | -#define DRIZZLE_FILESORT_START() \ |
470 | - __dtrace_drizzle___filesort_start() |
471 | -#ifndef __sparc |
472 | -#define DRIZZLE_FILESORT_START_ENABLED() \ |
473 | - __dtraceenabled_drizzle___filesort_start() |
474 | -#else |
475 | -#define DRIZZLE_FILESORT_START_ENABLED() \ |
476 | - __dtraceenabled_drizzle___filesort_start(0) |
477 | -#endif |
478 | -#define DRIZZLE_INSERT_END() \ |
479 | - __dtrace_drizzle___insert_end() |
480 | -#ifndef __sparc |
481 | -#define DRIZZLE_INSERT_END_ENABLED() \ |
482 | - __dtraceenabled_drizzle___insert_end() |
483 | -#else |
484 | -#define DRIZZLE_INSERT_END_ENABLED() \ |
485 | - __dtraceenabled_drizzle___insert_end(0) |
486 | -#endif |
487 | -#define DRIZZLE_INSERT_ROW_END() \ |
488 | - __dtrace_drizzle___insert_row_end() |
489 | -#ifndef __sparc |
490 | -#define DRIZZLE_INSERT_ROW_END_ENABLED() \ |
491 | - __dtraceenabled_drizzle___insert_row_end() |
492 | -#else |
493 | -#define DRIZZLE_INSERT_ROW_END_ENABLED() \ |
494 | - __dtraceenabled_drizzle___insert_row_end(0) |
495 | -#endif |
496 | -#define DRIZZLE_INSERT_ROW_START() \ |
497 | - __dtrace_drizzle___insert_row_start() |
498 | -#ifndef __sparc |
499 | -#define DRIZZLE_INSERT_ROW_START_ENABLED() \ |
500 | - __dtraceenabled_drizzle___insert_row_start() |
501 | -#else |
502 | -#define DRIZZLE_INSERT_ROW_START_ENABLED() \ |
503 | - __dtraceenabled_drizzle___insert_row_start(0) |
504 | -#endif |
505 | -#define DRIZZLE_INSERT_START() \ |
506 | - __dtrace_drizzle___insert_start() |
507 | -#ifndef __sparc |
508 | -#define DRIZZLE_INSERT_START_ENABLED() \ |
509 | - __dtraceenabled_drizzle___insert_start() |
510 | -#else |
511 | -#define DRIZZLE_INSERT_START_ENABLED() \ |
512 | - __dtraceenabled_drizzle___insert_start(0) |
513 | -#endif |
514 | -#define DRIZZLE_SELECT_END() \ |
515 | - __dtrace_drizzle___select_end() |
516 | -#ifndef __sparc |
517 | -#define DRIZZLE_SELECT_END_ENABLED() \ |
518 | - __dtraceenabled_drizzle___select_end() |
519 | -#else |
520 | -#define DRIZZLE_SELECT_END_ENABLED() \ |
521 | - __dtraceenabled_drizzle___select_end(0) |
522 | -#endif |
523 | -#define DRIZZLE_SELECT_START() \ |
524 | - __dtrace_drizzle___select_start() |
525 | -#ifndef __sparc |
526 | -#define DRIZZLE_SELECT_START_ENABLED() \ |
527 | - __dtraceenabled_drizzle___select_start() |
528 | -#else |
529 | -#define DRIZZLE_SELECT_START_ENABLED() \ |
530 | - __dtraceenabled_drizzle___select_start(0) |
531 | -#endif |
532 | -#define DRIZZLE_UPDATE_END() \ |
533 | - __dtrace_drizzle___update_end() |
534 | -#ifndef __sparc |
535 | -#define DRIZZLE_UPDATE_END_ENABLED() \ |
536 | - __dtraceenabled_drizzle___update_end() |
537 | -#else |
538 | -#define DRIZZLE_UPDATE_END_ENABLED() \ |
539 | - __dtraceenabled_drizzle___update_end(0) |
540 | -#endif |
541 | -#define DRIZZLE_UPDATE_START() \ |
542 | - __dtrace_drizzle___update_start() |
543 | -#ifndef __sparc |
544 | -#define DRIZZLE_UPDATE_START_ENABLED() \ |
545 | - __dtraceenabled_drizzle___update_start() |
546 | -#else |
547 | -#define DRIZZLE_UPDATE_START_ENABLED() \ |
548 | - __dtraceenabled_drizzle___update_start(0) |
549 | -#endif |
550 | - |
551 | - |
552 | -extern void __dtrace_drizzle___delete_end(void); |
553 | -#ifndef __sparc |
554 | -extern int __dtraceenabled_drizzle___delete_end(void); |
555 | -#else |
556 | -extern int __dtraceenabled_drizzle___delete_end(long); |
557 | -#endif |
558 | -extern void __dtrace_drizzle___delete_start(void); |
559 | -#ifndef __sparc |
560 | -extern int __dtraceenabled_drizzle___delete_start(void); |
561 | -#else |
562 | -extern int __dtraceenabled_drizzle___delete_start(long); |
563 | -#endif |
564 | -extern void __dtrace_drizzle___external_lock(int); |
565 | -#ifndef __sparc |
566 | -extern int __dtraceenabled_drizzle___external_lock(void); |
567 | -#else |
568 | -extern int __dtraceenabled_drizzle___external_lock(long); |
569 | -#endif |
570 | -extern void __dtrace_drizzle___filesort_end(void); |
571 | -#ifndef __sparc |
572 | -extern int __dtraceenabled_drizzle___filesort_end(void); |
573 | -#else |
574 | -extern int __dtraceenabled_drizzle___filesort_end(long); |
575 | -#endif |
576 | -extern void __dtrace_drizzle___filesort_start(void); |
577 | -#ifndef __sparc |
578 | -extern int __dtraceenabled_drizzle___filesort_start(void); |
579 | -#else |
580 | -extern int __dtraceenabled_drizzle___filesort_start(long); |
581 | -#endif |
582 | -extern void __dtrace_drizzle___insert_end(void); |
583 | -#ifndef __sparc |
584 | -extern int __dtraceenabled_drizzle___insert_end(void); |
585 | -#else |
586 | -extern int __dtraceenabled_drizzle___insert_end(long); |
587 | -#endif |
588 | -extern void __dtrace_drizzle___insert_row_end(void); |
589 | -#ifndef __sparc |
590 | -extern int __dtraceenabled_drizzle___insert_row_end(void); |
591 | -#else |
592 | -extern int __dtraceenabled_drizzle___insert_row_end(long); |
593 | -#endif |
594 | -extern void __dtrace_drizzle___insert_row_start(void); |
595 | -#ifndef __sparc |
596 | -extern int __dtraceenabled_drizzle___insert_row_start(void); |
597 | -#else |
598 | -extern int __dtraceenabled_drizzle___insert_row_start(long); |
599 | -#endif |
600 | -extern void __dtrace_drizzle___insert_start(void); |
601 | -#ifndef __sparc |
602 | -extern int __dtraceenabled_drizzle___insert_start(void); |
603 | -#else |
604 | -extern int __dtraceenabled_drizzle___insert_start(long); |
605 | -#endif |
606 | -extern void __dtrace_drizzle___select_end(void); |
607 | -#ifndef __sparc |
608 | -extern int __dtraceenabled_drizzle___select_end(void); |
609 | -#else |
610 | -extern int __dtraceenabled_drizzle___select_end(long); |
611 | -#endif |
612 | -extern void __dtrace_drizzle___select_start(void); |
613 | -#ifndef __sparc |
614 | -extern int __dtraceenabled_drizzle___select_start(void); |
615 | -#else |
616 | -extern int __dtraceenabled_drizzle___select_start(long); |
617 | -#endif |
618 | -extern void __dtrace_drizzle___update_end(void); |
619 | -#ifndef __sparc |
620 | -extern int __dtraceenabled_drizzle___update_end(void); |
621 | -#else |
622 | -extern int __dtraceenabled_drizzle___update_end(long); |
623 | -#endif |
624 | -extern void __dtrace_drizzle___update_start(void); |
625 | -#ifndef __sparc |
626 | -extern int __dtraceenabled_drizzle___update_start(void); |
627 | -#else |
628 | -extern int __dtraceenabled_drizzle___update_start(long); |
629 | -#endif |
630 | - |
631 | -#else |
632 | - |
633 | -#define DRIZZLE_DELETE_END() |
634 | -#define DRIZZLE_DELETE_END_ENABLED() (0) |
635 | -#define DRIZZLE_DELETE_START() |
636 | -#define DRIZZLE_DELETE_START_ENABLED() (0) |
637 | -#define DRIZZLE_EXTERNAL_LOCK(arg0) |
638 | -#define DRIZZLE_EXTERNAL_LOCK_ENABLED() (0) |
639 | -#define DRIZZLE_FILESORT_END() |
640 | -#define DRIZZLE_FILESORT_END_ENABLED() (0) |
641 | -#define DRIZZLE_FILESORT_START() |
642 | -#define DRIZZLE_FILESORT_START_ENABLED() (0) |
643 | -#define DRIZZLE_INSERT_END() |
644 | -#define DRIZZLE_INSERT_END_ENABLED() (0) |
645 | -#define DRIZZLE_INSERT_ROW_END() |
646 | -#define DRIZZLE_INSERT_ROW_END_ENABLED() (0) |
647 | -#define DRIZZLE_INSERT_ROW_START() |
648 | -#define DRIZZLE_INSERT_ROW_START_ENABLED() (0) |
649 | -#define DRIZZLE_INSERT_START() |
650 | -#define DRIZZLE_INSERT_START_ENABLED() (0) |
651 | -#define DRIZZLE_SELECT_END() |
652 | -#define DRIZZLE_SELECT_END_ENABLED() (0) |
653 | -#define DRIZZLE_SELECT_START() |
654 | -#define DRIZZLE_SELECT_START_ENABLED() (0) |
655 | -#define DRIZZLE_UPDATE_END() |
656 | -#define DRIZZLE_UPDATE_END_ENABLED() (0) |
657 | -#define DRIZZLE_UPDATE_START() |
658 | -#define DRIZZLE_UPDATE_START_ENABLED() (0) |
659 | - |
660 | -#endif |
661 | - |
662 | - |
663 | -#ifdef __cplusplus |
664 | -} |
665 | -#endif |
666 | - |
667 | -#endif /* _PROBES_H */ |
668 | |
669 | === modified file 'drizzled/session.cc' |
670 | --- drizzled/session.cc 2009-09-15 21:35:52 +0000 |
671 | +++ drizzled/session.cc 2009-09-21 14:34:41 +0000 |
672 | @@ -37,6 +37,7 @@ |
673 | #include <drizzled/item/empty_string.h> |
674 | #include <drizzled/show.h> |
675 | #include <drizzled/scheduling.h> |
676 | +#include "drizzled/probes.h" |
677 | |
678 | #include <algorithm> |
679 | |
680 | @@ -481,6 +482,7 @@ |
681 | if (state_to_set != Session::KILL_QUERY) |
682 | { |
683 | scheduler->killSession(this); |
684 | + DRIZZLE_CONNECTION_DONE(thread_id); |
685 | } |
686 | if (mysys_var) |
687 | { |
688 | @@ -620,6 +622,7 @@ |
689 | |
690 | if (scheduler->addSession(this)) |
691 | { |
692 | + DRIZZLE_CONNECTION_START(thread_id); |
693 | char error_message_buff[DRIZZLE_ERRMSG_SIZE]; |
694 | |
695 | killed= Session::KILL_CONNECTION; |
696 | |
697 | === modified file 'drizzled/sql_delete.cc' |
698 | --- drizzled/sql_delete.cc 2009-08-06 16:51:53 +0000 |
699 | +++ drizzled/sql_delete.cc 2009-09-17 00:08:20 +0000 |
700 | @@ -25,6 +25,7 @@ |
701 | #include <drizzled/sql_parse.h> |
702 | #include <drizzled/sql_base.h> |
703 | #include <drizzled/lock.h> |
704 | +#include "drizzled/probes.h" |
705 | |
706 | /** |
707 | Implement DELETE SQL word. |
708 | @@ -51,9 +52,11 @@ |
709 | Select_Lex *select_lex= &session->lex->select_lex; |
710 | Session::killed_state killed_status= Session::NOT_KILLED; |
711 | |
712 | - |
713 | if (session->openTablesLock(table_list)) |
714 | + { |
715 | + DRIZZLE_DELETE_DONE(1, 0); |
716 | return true; |
717 | + } |
718 | |
719 | table= table_list->table; |
720 | assert(table); |
721 | @@ -162,14 +165,14 @@ |
722 | delete select; |
723 | free_underlaid_joins(session, select_lex); |
724 | session->row_count_func= 0; |
725 | - DRIZZLE_DELETE_END(); |
726 | + DRIZZLE_DELETE_DONE(0, 0); |
727 | session->my_ok((ha_rows) session->row_count_func); |
728 | /* |
729 | We don't need to call reset_auto_increment in this case, because |
730 | mysql_truncate always gives a NULL conds argument, hence we never |
731 | get here. |
732 | */ |
733 | - return(0); // Nothing to delete |
734 | + return 0; // Nothing to delete |
735 | } |
736 | |
737 | /* If running in safe sql mode, don't allow updates without keys */ |
738 | @@ -322,17 +325,17 @@ |
739 | assert(transactional_table || !deleted || session->transaction.stmt.modified_non_trans_table); |
740 | free_underlaid_joins(session, select_lex); |
741 | |
742 | - DRIZZLE_DELETE_END(); |
743 | + DRIZZLE_DELETE_DONE((error >= 0 || session->is_error()), deleted); |
744 | if (error < 0 || (session->lex->ignore && !session->is_fatal_error)) |
745 | { |
746 | session->row_count_func= deleted; |
747 | session->my_ok((ha_rows) session->row_count_func); |
748 | } |
749 | - return(error >= 0 || session->is_error()); |
750 | + return (error >= 0 || session->is_error()); |
751 | |
752 | err: |
753 | - DRIZZLE_DELETE_END(); |
754 | - return(true); |
755 | + DRIZZLE_DELETE_DONE(1, 0); |
756 | + return true; |
757 | } |
758 | |
759 | |
760 | |
761 | === modified file 'drizzled/sql_insert.cc' |
762 | --- drizzled/sql_insert.cc 2009-09-15 21:01:42 +0000 |
763 | +++ drizzled/sql_insert.cc 2009-09-21 14:34:41 +0000 |
764 | @@ -240,7 +240,10 @@ |
765 | values_list.elements > 1); |
766 | |
767 | if (session->openTablesLock(table_list)) |
768 | + { |
769 | + DRIZZLE_INSERT_DONE(1, 0); |
770 | return true; |
771 | + } |
772 | |
773 | lock_type= table_list->lock_type; |
774 | |
775 | @@ -466,8 +469,8 @@ |
776 | info.copied + info.deleted + info.touched, id, buff); |
777 | } |
778 | session->abort_on_warning= 0; |
779 | - DRIZZLE_INSERT_END(); |
780 | - return(false); |
781 | + DRIZZLE_INSERT_DONE(0, session->row_count_func); |
782 | + return false; |
783 | |
784 | abort: |
785 | if (table != NULL) |
786 | @@ -475,8 +478,8 @@ |
787 | if (!joins_freed) |
788 | free_underlaid_joins(session, &session->lex->select_lex); |
789 | session->abort_on_warning= 0; |
790 | - DRIZZLE_INSERT_END(); |
791 | - return(true); |
792 | + DRIZZLE_INSERT_DONE(1, 0); |
793 | + return true; |
794 | } |
795 | |
796 | |
797 | @@ -1336,7 +1339,8 @@ |
798 | if (error) |
799 | { |
800 | table->file->print_error(error,MYF(0)); |
801 | - return(1); |
802 | + DRIZZLE_INSERT_SELECT_DONE(error, 0); |
803 | + return 1; |
804 | } |
805 | char buff[160]; |
806 | if (info.ignore) |
807 | @@ -1354,7 +1358,8 @@ |
808 | (info.copied ? autoinc_value_of_last_inserted_row : 0)); |
809 | session->my_ok((ulong) session->row_count_func, |
810 | info.copied + info.deleted + info.touched, id, buff); |
811 | - return(0); |
812 | + DRIZZLE_INSERT_SELECT_DONE(0, session->row_count_func); |
813 | + return 0; |
814 | } |
815 | |
816 | void select_insert::abort() { |
817 | @@ -1393,6 +1398,11 @@ |
818 | table->file->ha_release_auto_increment(); |
819 | } |
820 | |
821 | + if (DRIZZLE_INSERT_SELECT_DONE_ENABLED()) |
822 | + { |
823 | + DRIZZLE_INSERT_SELECT_DONE(0, info.copied + info.deleted + info.updated); |
824 | + } |
825 | + |
826 | return; |
827 | } |
828 | |
829 | |
830 | === modified file 'drizzled/sql_parse.cc' |
831 | --- drizzled/sql_parse.cc 2009-08-27 01:04:45 +0000 |
832 | +++ drizzled/sql_parse.cc 2009-09-17 00:08:20 +0000 |
833 | @@ -35,6 +35,7 @@ |
834 | #include <drizzled/lock.h> |
835 | #include <drizzled/select_send.h> |
836 | #include <drizzled/statement.h> |
837 | +#include "drizzled/probes.h" |
838 | |
839 | #include <bitset> |
840 | #include <algorithm> |
841 | @@ -166,7 +167,10 @@ |
842 | bool error= 0; |
843 | Query_id &query_id= Query_id::get_query_id(); |
844 | |
845 | - session->command=command; |
846 | + DRIZZLE_COMMAND_START(session->thread_id, |
847 | + command); |
848 | + |
849 | + session->command= command; |
850 | session->lex->sql_command= SQLCOM_END; /* to avoid confusing VIEW detectors */ |
851 | session->set_time(); |
852 | session->query_id= query_id.value(); |
853 | @@ -204,6 +208,9 @@ |
854 | { |
855 | if (! session->readAndStoreQuery(packet, packet_length)) |
856 | break; // fatal error is set |
857 | + DRIZZLE_QUERY_START(session->query, |
858 | + session->thread_id, |
859 | + const_cast<const char *>(session->db ? session->db : "")); |
860 | const char* end_of_stmt= NULL; |
861 | |
862 | mysql_parse(session, session->query, session->query_length, &end_of_stmt); |
863 | @@ -295,15 +302,25 @@ |
864 | |
865 | /* Store temp state for processlist */ |
866 | session->set_proc_info("cleaning up"); |
867 | - session->command=COM_SLEEP; |
868 | + session->command= COM_SLEEP; |
869 | memset(session->process_list_info, 0, PROCESS_LIST_WIDTH); |
870 | - session->query=0; |
871 | - session->query_length=0; |
872 | + session->query= 0; |
873 | + session->query_length= 0; |
874 | |
875 | session->set_proc_info(NULL); |
876 | session->packet.shrink(session->variables.net_buffer_length); // Reclaim some memory |
877 | free_root(session->mem_root,MYF(MY_KEEP_PREALLOC)); |
878 | - return(error); |
879 | + |
880 | + if (DRIZZLE_QUERY_DONE_ENABLED() || DRIZZLE_COMMAND_DONE_ENABLED()) |
881 | + { |
882 | + if (command == COM_QUERY) |
883 | + { |
884 | + DRIZZLE_QUERY_DONE(session->is_error()); |
885 | + } |
886 | + DRIZZLE_COMMAND_DONE(session->is_error()); |
887 | + } |
888 | + |
889 | + return error; |
890 | } |
891 | |
892 | |
893 | @@ -759,8 +776,12 @@ |
894 | if (*found_semicolon && |
895 | (session->query_length= (ulong)(*found_semicolon - session->query))) |
896 | session->query_length--; |
897 | + DRIZZLE_QUERY_EXEC_START(session->query, |
898 | + session->thread_id, |
899 | + const_cast<const char *>(session->db ? session->db : "")); |
900 | /* Actually execute the query */ |
901 | mysql_execute_command(session); |
902 | + DRIZZLE_QUERY_EXEC_DONE(0); |
903 | } |
904 | } |
905 | } |
906 | @@ -1819,6 +1840,8 @@ |
907 | { |
908 | assert(session->m_lip == NULL); |
909 | |
910 | + DRIZZLE_QUERY_PARSE_START(session->query); |
911 | + |
912 | /* Set Lex_input_stream. */ |
913 | |
914 | session->m_lip= lip; |
915 | @@ -1835,6 +1858,8 @@ |
916 | |
917 | session->m_lip= NULL; |
918 | |
919 | + DRIZZLE_QUERY_PARSE_DONE(mysql_parse_status || session->is_fatal_error); |
920 | + |
921 | /* That's it. */ |
922 | |
923 | return mysql_parse_status || session->is_fatal_error; |
924 | |
925 | === modified file 'drizzled/sql_select.cc' |
926 | --- drizzled/sql_select.cc 2009-09-16 20:58:28 +0000 |
927 | +++ drizzled/sql_select.cc 2009-09-21 14:34:41 +0000 |
928 | @@ -124,7 +124,7 @@ |
929 | { |
930 | bool res; |
931 | register Select_Lex *select_lex= &lex->select_lex; |
932 | - DRIZZLE_SELECT_START(); |
933 | + DRIZZLE_SELECT_START(session->query); |
934 | |
935 | if (select_lex->master_unit()->is_union() || |
936 | select_lex->master_unit()->fake_select_lex) |
937 | @@ -157,8 +157,8 @@ |
938 | if (unlikely(res)) |
939 | result->abort(); |
940 | |
941 | - DRIZZLE_SELECT_END(); |
942 | - return(res); |
943 | + DRIZZLE_SELECT_DONE(res, session->limit_found_rows); |
944 | + return res; |
945 | } |
946 | |
947 | /* |
948 | |
949 | === modified file 'drizzled/sql_update.cc' |
950 | --- drizzled/sql_update.cc 2009-08-20 20:29:18 +0000 |
951 | +++ drizzled/sql_update.cc 2009-09-17 00:08:20 +0000 |
952 | @@ -139,9 +139,12 @@ |
953 | List<Item> all_fields; |
954 | Session::killed_state killed_status= Session::NOT_KILLED; |
955 | |
956 | - DRIZZLE_UPDATE_START(); |
957 | + DRIZZLE_UPDATE_START(session->query); |
958 | if (session->openTablesLock(table_list)) |
959 | + { |
960 | + DRIZZLE_UPDATE_DONE(1, 0, 0); |
961 | return 1; |
962 | + } |
963 | |
964 | session->set_proc_info("init"); |
965 | table= table_list->table; |
966 | @@ -179,8 +182,8 @@ |
967 | if (select_lex->inner_refs_list.elements && |
968 | fix_inner_refs(session, all_fields, select_lex, select_lex->ref_pointer_array)) |
969 | { |
970 | - DRIZZLE_UPDATE_END(); |
971 | - return(-1); |
972 | + DRIZZLE_UPDATE_DONE(1, 0, 0); |
973 | + return -1; |
974 | } |
975 | |
976 | if (conds) |
977 | @@ -215,9 +218,9 @@ |
978 | free_underlaid_joins(session, select_lex); |
979 | if (error) |
980 | goto abort; // Error in where |
981 | - DRIZZLE_UPDATE_END(); |
982 | + DRIZZLE_UPDATE_DONE(0, 0, 0); |
983 | session->my_ok(); // No matching records |
984 | - return(0); |
985 | + return 0; |
986 | } |
987 | if (!select && limit != HA_POS_ERROR) |
988 | { |
989 | @@ -627,7 +630,6 @@ |
990 | id= session->arg_of_last_insert_id_function ? |
991 | session->first_successful_insert_id_in_prev_stmt : 0; |
992 | |
993 | - DRIZZLE_UPDATE_END(); |
994 | if (error < 0) |
995 | { |
996 | char buff[STRING_BUFFER_USUAL_SIZE]; |
997 | @@ -638,7 +640,8 @@ |
998 | } |
999 | session->count_cuted_fields= CHECK_FIELD_IGNORE; /* calc cuted fields */ |
1000 | session->abort_on_warning= 0; |
1001 | - return((error >= 0 || session->is_error()) ? 1 : 0); |
1002 | + DRIZZLE_UPDATE_DONE((error >= 0 || session->is_error()), found, updated); |
1003 | + return ((error >= 0 || session->is_error()) ? 1 : 0); |
1004 | |
1005 | err: |
1006 | delete select; |
1007 | @@ -651,8 +654,8 @@ |
1008 | session->abort_on_warning= 0; |
1009 | |
1010 | abort: |
1011 | - DRIZZLE_UPDATE_END(); |
1012 | - return(1); |
1013 | + DRIZZLE_UPDATE_DONE(1, 0, 0); |
1014 | + return 1; |
1015 | } |
1016 | |
1017 | /* |
1018 | |
1019 | === modified file 'drizzled/statement/delete.cc' |
1020 | --- drizzled/statement/delete.cc 2009-08-10 18:03:39 +0000 |
1021 | +++ drizzled/statement/delete.cc 2009-09-13 04:30:14 +0000 |
1022 | @@ -22,12 +22,14 @@ |
1023 | #include <drizzled/show.h> |
1024 | #include <drizzled/session.h> |
1025 | #include <drizzled/lock.h> |
1026 | +#include <drizzled/probes.h> |
1027 | #include <drizzled/statement/delete.h> |
1028 | |
1029 | using namespace drizzled; |
1030 | |
1031 | bool statement::Delete::execute() |
1032 | { |
1033 | + DRIZZLE_DELETE_START(session->query); |
1034 | TableList *first_table= (TableList *) session->lex->select_lex.table_list.first; |
1035 | TableList *all_tables= session->lex->query_tables; |
1036 | Select_Lex *select_lex= &session->lex->select_lex; |
1037 | |
1038 | === modified file 'drizzled/statement/insert.cc' |
1039 | --- drizzled/statement/insert.cc 2009-08-26 23:47:28 +0000 |
1040 | +++ drizzled/statement/insert.cc 2009-09-13 04:30:14 +0000 |
1041 | @@ -22,6 +22,7 @@ |
1042 | #include <drizzled/show.h> |
1043 | #include <drizzled/lock.h> |
1044 | #include <drizzled/session.h> |
1045 | +#include <drizzled/probes.h> |
1046 | #include <drizzled/statement/insert.h> |
1047 | |
1048 | using namespace drizzled; |
1049 | @@ -43,6 +44,8 @@ |
1050 | return true; |
1051 | } |
1052 | |
1053 | + DRIZZLE_INSERT_START(session->query); |
1054 | + |
1055 | bool res= mysql_insert(session, |
1056 | all_tables, |
1057 | session->lex->field_list, |
1058 | |
1059 | === modified file 'drizzled/statement/insert_select.cc' |
1060 | --- drizzled/statement/insert_select.cc 2009-08-27 00:39:15 +0000 |
1061 | +++ drizzled/statement/insert_select.cc 2009-09-13 04:30:14 +0000 |
1062 | @@ -22,6 +22,7 @@ |
1063 | #include <drizzled/show.h> |
1064 | #include <drizzled/lock.h> |
1065 | #include <drizzled/session.h> |
1066 | +#include <drizzled/probes.h> |
1067 | #include <drizzled/statement/insert_select.h> |
1068 | |
1069 | using namespace drizzled; |
1070 | @@ -54,6 +55,7 @@ |
1071 | |
1072 | if (! (res= session->openTablesLock(all_tables))) |
1073 | { |
1074 | + DRIZZLE_INSERT_SELECT_START(session->query); |
1075 | /* Skip first table, which is the table we are inserting in */ |
1076 | TableList *second_table= first_table->next_local; |
1077 | select_lex->table_list.first= (unsigned char*) second_table; |
1078 | |
1079 | === modified file 'm4/pandora_64bit.m4' |
1080 | --- m4/pandora_64bit.m4 2009-08-04 17:58:31 +0000 |
1081 | +++ m4/pandora_64bit.m4 2009-09-14 18:37:34 +0000 |
1082 | @@ -23,7 +23,7 @@ |
1083 | AS_IF([test "$isainfo_b" != "x"],[ |
1084 | |
1085 | isainfo_k=`${ISAINFO} -k` |
1086 | - DTRACEFLAGS="${DTRACEFLAGS} -${isainfo_k}" |
1087 | + DTRACEFLAGS="${DTRACEFLAGS} -${isainfo_b}" |
1088 | |
1089 | AS_IF([test "x$ac_enable_64bit" = "xyes"],[ |
1090 | |
1091 | |
1092 | === modified file 'mysys/my_bitmap.cc' |
1093 | --- mysys/my_bitmap.cc 2009-07-30 02:39:13 +0000 |
1094 | +++ mysys/my_bitmap.cc 2009-09-15 01:32:36 +0000 |
1095 | @@ -29,7 +29,7 @@ |
1096 | Create a mask with the upper 'unused' bits set and the lower 'used' |
1097 | bits clear. The bits within each byte is stored in big-endian order. |
1098 | */ |
1099 | - unsigned char const mask= (~((1 << used) - 1)) & 255; |
1100 | + unsigned char const mask= static_cast<unsigned char const>((~((1 << used) - 1)) & 255); |
1101 | |
1102 | /* |
1103 | The first bytes are to be set to zero since they represent real bits |
1104 | @@ -87,9 +87,9 @@ |
1105 | bool MyBitmap::testAndSet(const uint32_t bitPos) |
1106 | { |
1107 | unsigned char *value= ((unsigned char*) bitmap) + (bitPos / 8); |
1108 | - unsigned char bit= 1 << ((bitPos) & 7); |
1109 | - unsigned char res= (*value) & bit; |
1110 | - *value|= bit; |
1111 | + unsigned char bit= static_cast<unsigned char>(1 << ((bitPos) & 7)); |
1112 | + unsigned char res= static_cast<unsigned char>((*value) & bit); |
1113 | + *value= static_cast<unsigned char>(*value | bit); |
1114 | return res; |
1115 | } |
1116 | |
1117 | @@ -98,9 +98,9 @@ |
1118 | bool MyBitmap::testAndClear(const uint32_t bitPos) |
1119 | { |
1120 | unsigned char *byte= (unsigned char*) bitmap + (bitPos / 8); |
1121 | - unsigned char bit= 1 << ((bitPos) & 7); |
1122 | - unsigned char res= (*byte) & bit; |
1123 | - *byte&= ~bit; |
1124 | + unsigned char bit= static_cast<unsigned char>(1 << ((bitPos) & 7)); |
1125 | + unsigned char res= static_cast<unsigned char>((*byte) & bit); |
1126 | + *byte= static_cast<unsigned char>(*byte & ~bit); |
1127 | return res; |
1128 | } |
1129 | |
1130 | @@ -133,7 +133,7 @@ |
1131 | m+= prefix_bytes; |
1132 | if ((prefix_bits= prefix_size & 7)) |
1133 | { |
1134 | - *m++= (1 << prefix_bits)-1; |
1135 | + *m++= static_cast<unsigned char>((1 << prefix_bits)-1); |
1136 | } |
1137 | if ((d= numOfBytesInMap() - prefix_bytes)) |
1138 | { |
1139 | @@ -284,7 +284,7 @@ |
1140 | |
1141 | void MyBitmap::setAbove(const uint32_t from_byte, const uint32_t use_bit) |
1142 | { |
1143 | - unsigned char use_byte= use_bit ? 0xff : 0; |
1144 | + unsigned char use_byte= static_cast<unsigned char>(use_bit ? 0xff : 0); |
1145 | unsigned char *to= (unsigned char *) bitmap + from_byte; |
1146 | unsigned char *end= (unsigned char *) bitmap + (n_bits+7)/8; |
1147 | |
1148 | |
1149 | === modified file 'mysys/my_bitmap.h' |
1150 | --- mysys/my_bitmap.h 2009-07-30 04:00:24 +0000 |
1151 | +++ mysys/my_bitmap.h 2009-09-15 01:32:36 +0000 |
1152 | @@ -171,7 +171,10 @@ |
1153 | */ |
1154 | void setBit(const uint32_t bit) |
1155 | { |
1156 | - ((unsigned char *)bitmap)[bit / 8] |= (1 << ((bit) & 7)); |
1157 | + reinterpret_cast<unsigned char *>(bitmap)[bit / 8]= |
1158 | + static_cast<unsigned char>( |
1159 | + (reinterpret_cast<unsigned char *>(bitmap))[bit / 8] | |
1160 | + (1 << ((bit) & 7))); |
1161 | } |
1162 | |
1163 | /** |
1164 | @@ -181,7 +184,10 @@ |
1165 | */ |
1166 | void flipBit(const uint32_t bit) |
1167 | { |
1168 | - ((unsigned char *)bitmap)[bit / 8] ^= (1 << ((bit) & 7)); |
1169 | + reinterpret_cast<unsigned char *>(bitmap)[bit / 8]= |
1170 | + static_cast<unsigned char>( |
1171 | + (reinterpret_cast<unsigned char *>(bitmap))[bit / 8] ^ |
1172 | + (1 << ((bit) & 7))); |
1173 | } |
1174 | |
1175 | /** |
1176 | @@ -191,7 +197,10 @@ |
1177 | */ |
1178 | void clearBit(const uint32_t bit) |
1179 | { |
1180 | - ((unsigned char *)bitmap)[bit / 8] &= ~ (1 << ((bit) & 7)); |
1181 | + reinterpret_cast<unsigned char *>(bitmap)[bit / 8]= |
1182 | + static_cast<unsigned char>( |
1183 | + (reinterpret_cast<unsigned char *>(bitmap))[bit / 8] & |
1184 | + ~ (1 << ((bit) & 7))); |
1185 | } |
1186 | |
1187 | /** |
1188 | |
1189 | === modified file 'mysys/my_copy.cc' |
1190 | --- mysys/my_copy.cc 2009-04-17 21:01:47 +0000 |
1191 | +++ mysys/my_copy.cc 2009-09-15 01:32:36 +0000 |
1192 | @@ -79,7 +79,8 @@ |
1193 | MyFlags)) < 0) |
1194 | goto err; |
1195 | |
1196 | - while ((Count=my_read(from_file, buff, sizeof(buff), MyFlags)) != 0) |
1197 | + while ((Count= static_cast<uint32_t>(my_read(from_file, buff, |
1198 | + sizeof(buff), MyFlags))) != 0) |
1199 | { |
1200 | if (Count == (uint32_t) -1 || |
1201 | my_write(to_file,buff,Count,MYF(MyFlags | MY_NABP))) |
1202 | |
1203 | === modified file 'mysys/my_getopt.cc' |
1204 | --- mysys/my_getopt.cc 2009-06-24 23:48:15 +0000 |
1205 | +++ mysys/my_getopt.cc 2009-09-15 01:32:36 +0000 |
1206 | @@ -217,7 +217,7 @@ |
1207 | } |
1208 | else |
1209 | { |
1210 | - length= strlen(opt_str); |
1211 | + length= static_cast<uint32_t>(strlen(opt_str)); |
1212 | optend= 0; |
1213 | } |
1214 | |
1215 | |
1216 | === modified file 'mysys/my_init.cc' |
1217 | --- mysys/my_init.cc 2009-05-04 18:11:56 +0000 |
1218 | +++ mysys/my_init.cc 2009-09-15 01:32:36 +0000 |
1219 | @@ -121,10 +121,10 @@ |
1220 | Non-physical pagefaults %ld, Physical pagefaults %ld, Swaps %ld\n\ |
1221 | Blocks in %ld out %ld, Messages in %ld out %ld, Signals %ld\n\ |
1222 | Voluntary context switches %ld, Involuntary context switches %ld\n", |
1223 | - (rus.ru_utime.tv_sec * SCALE_SEC + |
1224 | - rus.ru_utime.tv_usec / SCALE_USEC) / 100.0, |
1225 | - (rus.ru_stime.tv_sec * SCALE_SEC + |
1226 | - rus.ru_stime.tv_usec / SCALE_USEC) / 100.0, |
1227 | + static_cast<double>((rus.ru_utime.tv_sec * SCALE_SEC + |
1228 | + rus.ru_utime.tv_usec / SCALE_USEC)) / 100.0, |
1229 | + static_cast<double>((rus.ru_stime.tv_sec * SCALE_SEC + |
1230 | + rus.ru_stime.tv_usec / SCALE_USEC)) / 100.0, |
1231 | rus.ru_maxrss, rus.ru_idrss, |
1232 | rus.ru_minflt, rus.ru_majflt, |
1233 | rus.ru_nswap, rus.ru_inblock, rus.ru_oublock, |
1234 | |
1235 | === modified file 'mysys/my_lib.cc' |
1236 | --- mysys/my_lib.cc 2009-05-23 16:15:00 +0000 |
1237 | +++ mysys/my_lib.cc 2009-09-15 01:32:36 +0000 |
1238 | @@ -142,7 +142,7 @@ |
1239 | (void) closedir(dirp); |
1240 | |
1241 | result->dir_entry= (FILEINFO *)dir_entries_storage->buffer; |
1242 | - result->number_off_files= dir_entries_storage->elements; |
1243 | + result->number_off_files= static_cast<uint>(dir_entries_storage->elements); |
1244 | |
1245 | if (!(MyFlags & MY_DONT_SORT)) |
1246 | my_qsort((void *) result->dir_entry, result->number_off_files, |
1247 | |
1248 | === modified file 'mysys/my_symlink2.cc' |
1249 | --- mysys/my_symlink2.cc 2009-06-16 01:36:01 +0000 |
1250 | +++ mysys/my_symlink2.cc 2009-09-15 01:32:36 +0000 |
1251 | @@ -134,7 +134,8 @@ |
1252 | char link_name[FN_REFLEN], tmp_name[FN_REFLEN]; |
1253 | int sym_link_size= -1; |
1254 | int was_symlink= (!my_disable_symlinks && |
1255 | - (sym_link_size= readlink(from,link_name,FN_REFLEN-1)) != -1); |
1256 | + (sym_link_size= static_cast<int>(readlink(from,link_name, |
1257 | + FN_REFLEN-1))) != -1); |
1258 | int result=0; |
1259 | int name_is_different; |
1260 |
Contains Joe Daly's -Wconversion fixes for mysys/ files and Padraig's enhancements and port of MySQL DTrace Probes.
All tests pass on all 64-bit platforms.