1 /* Copyright (c) 2010, 2021, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is also distributed with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have included with MySQL.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License, version 2.0, for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
22
23 /**
24 @file storage/perfschema/table_tlws_by_table.cc
25 Table TABLE_LOCK_WAITS_SUMMARY_BY_TABLE (implementation).
26 */
27
28 #include "my_global.h"
29 #include "my_thread.h"
30 #include "pfs_instr_class.h"
31 #include "pfs_column_types.h"
32 #include "pfs_column_values.h"
33 #include "table_tlws_by_table.h"
34 #include "pfs_global.h"
35 #include "pfs_visitor.h"
36 #include "pfs_buffer_container.h"
37 #include "field.h"
38
39 THR_LOCK table_tlws_by_table::m_table_lock;
40
41 static const TABLE_FIELD_TYPE field_types[]=
42 {
43 {
44 { C_STRING_WITH_LEN("OBJECT_TYPE") },
45 { C_STRING_WITH_LEN("varchar(64)") },
46 { NULL, 0}
47 },
48 {
49 { C_STRING_WITH_LEN("OBJECT_SCHEMA") },
50 { C_STRING_WITH_LEN("varchar(64)") },
51 { NULL, 0}
52 },
53 {
54 { C_STRING_WITH_LEN("OBJECT_NAME") },
55 { C_STRING_WITH_LEN("varchar(64)") },
56 { NULL, 0}
57 },
58 {
59 { C_STRING_WITH_LEN("COUNT_STAR") },
60 { C_STRING_WITH_LEN("bigint(20)") },
61 { NULL, 0}
62 },
63 {
64 { C_STRING_WITH_LEN("SUM_TIMER_WAIT") },
65 { C_STRING_WITH_LEN("bigint(20)") },
66 { NULL, 0}
67 },
68 {
69 { C_STRING_WITH_LEN("MIN_TIMER_WAIT") },
70 { C_STRING_WITH_LEN("bigint(20)") },
71 { NULL, 0}
72 },
73 {
74 { C_STRING_WITH_LEN("AVG_TIMER_WAIT") },
75 { C_STRING_WITH_LEN("bigint(20)") },
76 { NULL, 0}
77 },
78 {
79 { C_STRING_WITH_LEN("MAX_TIMER_WAIT") },
80 { C_STRING_WITH_LEN("bigint(20)") },
81 { NULL, 0}
82 },
83 {
84 { C_STRING_WITH_LEN("COUNT_READ") },
85 { C_STRING_WITH_LEN("bigint(20)") },
86 { NULL, 0}
87 },
88 {
89 { C_STRING_WITH_LEN("SUM_TIMER_READ") },
90 { C_STRING_WITH_LEN("bigint(20)") },
91 { NULL, 0}
92 },
93 {
94 { C_STRING_WITH_LEN("MIN_TIMER_READ") },
95 { C_STRING_WITH_LEN("bigint(20)") },
96 { NULL, 0}
97 },
98 {
99 { C_STRING_WITH_LEN("AVG_TIMER_READ") },
100 { C_STRING_WITH_LEN("bigint(20)") },
101 { NULL, 0}
102 },
103 {
104 { C_STRING_WITH_LEN("MAX_TIMER_READ") },
105 { C_STRING_WITH_LEN("bigint(20)") },
106 { NULL, 0}
107 },
108 {
109 { C_STRING_WITH_LEN("COUNT_WRITE") },
110 { C_STRING_WITH_LEN("bigint(20)") },
111 { NULL, 0}
112 },
113 {
114 { C_STRING_WITH_LEN("SUM_TIMER_WRITE") },
115 { C_STRING_WITH_LEN("bigint(20)") },
116 { NULL, 0}
117 },
118 {
119 { C_STRING_WITH_LEN("MIN_TIMER_WRITE") },
120 { C_STRING_WITH_LEN("bigint(20)") },
121 { NULL, 0}
122 },
123 {
124 { C_STRING_WITH_LEN("AVG_TIMER_WRITE") },
125 { C_STRING_WITH_LEN("bigint(20)") },
126 { NULL, 0}
127 },
128 {
129 { C_STRING_WITH_LEN("MAX_TIMER_WRITE") },
130 { C_STRING_WITH_LEN("bigint(20)") },
131 { NULL, 0}
132 },
133 {
134 { C_STRING_WITH_LEN("COUNT_READ_NORMAL") },
135 { C_STRING_WITH_LEN("bigint(20)") },
136 { NULL, 0}
137 },
138 {
139 { C_STRING_WITH_LEN("SUM_TIMER_READ_NORMAL") },
140 { C_STRING_WITH_LEN("bigint(20)") },
141 { NULL, 0}
142 },
143 {
144 { C_STRING_WITH_LEN("MIN_TIMER_READ_NORMAL") },
145 { C_STRING_WITH_LEN("bigint(20)") },
146 { NULL, 0}
147 },
148 {
149 { C_STRING_WITH_LEN("AVG_TIMER_READ_NORMAL") },
150 { C_STRING_WITH_LEN("bigint(20)") },
151 { NULL, 0}
152 },
153 {
154 { C_STRING_WITH_LEN("MAX_TIMER_READ_NORMAL") },
155 { C_STRING_WITH_LEN("bigint(20)") },
156 { NULL, 0}
157 },
158 {
159 { C_STRING_WITH_LEN("COUNT_READ_WITH_SHARED_LOCKS") },
160 { C_STRING_WITH_LEN("bigint(20)") },
161 { NULL, 0}
162 },
163 {
164 { C_STRING_WITH_LEN("SUM_TIMER_READ_WITH_SHARED_LOCKS") },
165 { C_STRING_WITH_LEN("bigint(20)") },
166 { NULL, 0}
167 },
168 {
169 { C_STRING_WITH_LEN("MIN_TIMER_READ_WITH_SHARED_LOCKS") },
170 { C_STRING_WITH_LEN("bigint(20)") },
171 { NULL, 0}
172 },
173 {
174 { C_STRING_WITH_LEN("AVG_TIMER_READ_WITH_SHARED_LOCKS") },
175 { C_STRING_WITH_LEN("bigint(20)") },
176 { NULL, 0}
177 },
178 {
179 { C_STRING_WITH_LEN("MAX_TIMER_READ_WITH_SHARED_LOCKS") },
180 { C_STRING_WITH_LEN("bigint(20)") },
181 { NULL, 0}
182 },
183 {
184 { C_STRING_WITH_LEN("COUNT_READ_HIGH_PRIORITY") },
185 { C_STRING_WITH_LEN("bigint(20)") },
186 { NULL, 0}
187 },
188 {
189 { C_STRING_WITH_LEN("SUM_TIMER_READ_HIGH_PRIORITY") },
190 { C_STRING_WITH_LEN("bigint(20)") },
191 { NULL, 0}
192 },
193 {
194 { C_STRING_WITH_LEN("MIN_TIMER_READ_HIGH_PRIORITY") },
195 { C_STRING_WITH_LEN("bigint(20)") },
196 { NULL, 0}
197 },
198 {
199 { C_STRING_WITH_LEN("AVG_TIMER_READ_HIGH_PRIORITY") },
200 { C_STRING_WITH_LEN("bigint(20)") },
201 { NULL, 0}
202 },
203 {
204 { C_STRING_WITH_LEN("MAX_TIMER_READ_HIGH_PRIORITY") },
205 { C_STRING_WITH_LEN("bigint(20)") },
206 { NULL, 0}
207 },
208 {
209 { C_STRING_WITH_LEN("COUNT_READ_NO_INSERT") },
210 { C_STRING_WITH_LEN("bigint(20)") },
211 { NULL, 0}
212 },
213 {
214 { C_STRING_WITH_LEN("SUM_TIMER_READ_NO_INSERT") },
215 { C_STRING_WITH_LEN("bigint(20)") },
216 { NULL, 0}
217 },
218 {
219 { C_STRING_WITH_LEN("MIN_TIMER_READ_NO_INSERT") },
220 { C_STRING_WITH_LEN("bigint(20)") },
221 { NULL, 0}
222 },
223 {
224 { C_STRING_WITH_LEN("AVG_TIMER_READ_NO_INSERT") },
225 { C_STRING_WITH_LEN("bigint(20)") },
226 { NULL, 0}
227 },
228 {
229 { C_STRING_WITH_LEN("MAX_TIMER_READ_NO_INSERT") },
230 { C_STRING_WITH_LEN("bigint(20)") },
231 { NULL, 0}
232 },
233 {
234 { C_STRING_WITH_LEN("COUNT_READ_EXTERNAL") },
235 { C_STRING_WITH_LEN("bigint(20)") },
236 { NULL, 0}
237 },
238 {
239 { C_STRING_WITH_LEN("SUM_TIMER_READ_EXTERNAL") },
240 { C_STRING_WITH_LEN("bigint(20)") },
241 { NULL, 0}
242 },
243 {
244 { C_STRING_WITH_LEN("MIN_TIMER_READ_EXTERNAL") },
245 { C_STRING_WITH_LEN("bigint(20)") },
246 { NULL, 0}
247 },
248 {
249 { C_STRING_WITH_LEN("AVG_TIMER_READ_EXTERNAL") },
250 { C_STRING_WITH_LEN("bigint(20)") },
251 { NULL, 0}
252 },
253 {
254 { C_STRING_WITH_LEN("MAX_TIMER_READ_EXTERNAL") },
255 { C_STRING_WITH_LEN("bigint(20)") },
256 { NULL, 0}
257 },
258 {
259 { C_STRING_WITH_LEN("COUNT_WRITE_ALLOW_WRITE") },
260 { C_STRING_WITH_LEN("bigint(20)") },
261 { NULL, 0}
262 },
263 {
264 { C_STRING_WITH_LEN("SUM_TIMER_WRITE_ALLOW_WRITE") },
265 { C_STRING_WITH_LEN("bigint(20)") },
266 { NULL, 0}
267 },
268 {
269 { C_STRING_WITH_LEN("MIN_TIMER_WRITE_ALLOW_WRITE") },
270 { C_STRING_WITH_LEN("bigint(20)") },
271 { NULL, 0}
272 },
273 {
274 { C_STRING_WITH_LEN("AVG_TIMER_WRITE_ALLOW_WRITE") },
275 { C_STRING_WITH_LEN("bigint(20)") },
276 { NULL, 0}
277 },
278 {
279 { C_STRING_WITH_LEN("MAX_TIMER_WRITE_ALLOW_WRITE") },
280 { C_STRING_WITH_LEN("bigint(20)") },
281 { NULL, 0}
282 },
283 {
284 { C_STRING_WITH_LEN("COUNT_WRITE_CONCURRENT_INSERT") },
285 { C_STRING_WITH_LEN("bigint(20)") },
286 { NULL, 0}
287 },
288 {
289 { C_STRING_WITH_LEN("SUM_TIMER_WRITE_CONCURRENT_INSERT") },
290 { C_STRING_WITH_LEN("bigint(20)") },
291 { NULL, 0}
292 },
293 {
294 { C_STRING_WITH_LEN("MIN_TIMER_WRITE_CONCURRENT_INSERT") },
295 { C_STRING_WITH_LEN("bigint(20)") },
296 { NULL, 0}
297 },
298 {
299 { C_STRING_WITH_LEN("AVG_TIMER_WRITE_CONCURRENT_INSERT") },
300 { C_STRING_WITH_LEN("bigint(20)") },
301 { NULL, 0}
302 },
303 {
304 { C_STRING_WITH_LEN("MAX_TIMER_WRITE_CONCURRENT_INSERT") },
305 { C_STRING_WITH_LEN("bigint(20)") },
306 { NULL, 0}
307 },
308 {
309 { C_STRING_WITH_LEN("COUNT_WRITE_LOW_PRIORITY") },
310 { C_STRING_WITH_LEN("bigint(20)") },
311 { NULL, 0}
312 },
313 {
314 { C_STRING_WITH_LEN("SUM_TIMER_WRITE_LOW_PRIORITY") },
315 { C_STRING_WITH_LEN("bigint(20)") },
316 { NULL, 0}
317 },
318 {
319 { C_STRING_WITH_LEN("MIN_TIMER_WRITE_LOW_PRIORITY") },
320 { C_STRING_WITH_LEN("bigint(20)") },
321 { NULL, 0}
322 },
323 {
324 { C_STRING_WITH_LEN("AVG_TIMER_WRITE_LOW_PRIORITY") },
325 { C_STRING_WITH_LEN("bigint(20)") },
326 { NULL, 0}
327 },
328 {
329 { C_STRING_WITH_LEN("MAX_TIMER_WRITE_LOW_PRIORITY") },
330 { C_STRING_WITH_LEN("bigint(20)") },
331 { NULL, 0}
332 },
333 {
334 { C_STRING_WITH_LEN("COUNT_WRITE_NORMAL") },
335 { C_STRING_WITH_LEN("bigint(20)") },
336 { NULL, 0}
337 },
338 {
339 { C_STRING_WITH_LEN("SUM_TIMER_WRITE_NORMAL") },
340 { C_STRING_WITH_LEN("bigint(20)") },
341 { NULL, 0}
342 },
343 {
344 { C_STRING_WITH_LEN("MIN_TIMER_WRITE_NORMAL") },
345 { C_STRING_WITH_LEN("bigint(20)") },
346 { NULL, 0}
347 },
348 {
349 { C_STRING_WITH_LEN("AVG_TIMER_WRITE_NORMAL") },
350 { C_STRING_WITH_LEN("bigint(20)") },
351 { NULL, 0}
352 },
353 {
354 { C_STRING_WITH_LEN("MAX_TIMER_WRITE_NORMAL") },
355 { C_STRING_WITH_LEN("bigint(20)") },
356 { NULL, 0}
357 },
358 {
359 { C_STRING_WITH_LEN("COUNT_WRITE_EXTERNAL") },
360 { C_STRING_WITH_LEN("bigint(20)") },
361 { NULL, 0}
362 },
363 {
364 { C_STRING_WITH_LEN("SUM_TIMER_WRITE_EXTERNAL") },
365 { C_STRING_WITH_LEN("bigint(20)") },
366 { NULL, 0}
367 },
368 {
369 { C_STRING_WITH_LEN("MIN_TIMER_WRITE_EXTERNAL") },
370 { C_STRING_WITH_LEN("bigint(20)") },
371 { NULL, 0}
372 },
373 {
374 { C_STRING_WITH_LEN("AVG_TIMER_WRITE_EXTERNAL") },
375 { C_STRING_WITH_LEN("bigint(20)") },
376 { NULL, 0}
377 },
378 {
379 { C_STRING_WITH_LEN("MAX_TIMER_WRITE_EXTERNAL") },
380 { C_STRING_WITH_LEN("bigint(20)") },
381 { NULL, 0}
382 }
383 };
384
385 TABLE_FIELD_DEF
386 table_tlws_by_table::m_field_def=
387 { sizeof(field_types) / sizeof(TABLE_FIELD_TYPE), field_types };
388
389 PFS_engine_table_share
390 table_tlws_by_table::m_share=
391 {
392 { C_STRING_WITH_LEN("table_lock_waits_summary_by_table") },
393 &pfs_truncatable_acl,
394 table_tlws_by_table::create,
395 NULL, /* write_row */
396 table_tlws_by_table::delete_all_rows,
397 table_tlws_by_table::get_row_count,
398 sizeof(PFS_simple_index),
399 &m_table_lock,
400 &m_field_def,
401 false, /* checked */
402 false /* perpetual */
403 };
404
405 PFS_engine_table*
create(void)406 table_tlws_by_table::create(void)
407 {
408 return new table_tlws_by_table();
409 }
410
411 int
delete_all_rows(void)412 table_tlws_by_table::delete_all_rows(void)
413 {
414 reset_table_lock_waits_by_table_handle();
415 reset_table_lock_waits_by_table();
416 return 0;
417 }
418
419 ha_rows
get_row_count(void)420 table_tlws_by_table::get_row_count(void)
421 {
422 return global_table_share_container.get_row_count();
423 }
424
table_tlws_by_table()425 table_tlws_by_table::table_tlws_by_table()
426 : PFS_engine_table(&m_share, &m_pos),
427 m_row_exists(false), m_pos(0), m_next_pos(0)
428 {}
429
reset_position(void)430 void table_tlws_by_table::reset_position(void)
431 {
432 m_pos.m_index= 0;
433 m_next_pos.m_index= 0;
434 }
435
rnd_init(bool scan)436 int table_tlws_by_table::rnd_init(bool scan)
437 {
438 m_normalizer= time_normalizer::get(wait_timer);
439 return 0;
440 }
441
rnd_next(void)442 int table_tlws_by_table::rnd_next(void)
443 {
444 PFS_table_share *pfs;
445
446 m_pos.set_at(&m_next_pos);
447 PFS_table_share_iterator it= global_table_share_container.iterate(m_pos.m_index);
448 do
449 {
450 pfs= it.scan_next(& m_pos.m_index);
451 if (pfs != NULL)
452 {
453 if (pfs->m_enabled)
454 {
455 make_row(pfs);
456 m_next_pos.set_after(&m_pos);
457 return 0;
458 }
459 }
460 } while (pfs != NULL);
461
462 return HA_ERR_END_OF_FILE;
463 }
464
465 int
rnd_pos(const void * pos)466 table_tlws_by_table::rnd_pos(const void *pos)
467 {
468 PFS_table_share *pfs;
469
470 set_position(pos);
471
472 pfs= global_table_share_container.get(m_pos.m_index);
473 if (pfs != NULL)
474 {
475 if (pfs->m_enabled)
476 {
477 make_row(pfs);
478 return 0;
479 }
480 }
481
482 return HA_ERR_RECORD_DELETED;
483 }
484
make_row(PFS_table_share * share)485 void table_tlws_by_table::make_row(PFS_table_share *share)
486 {
487 pfs_optimistic_state lock;
488
489 m_row_exists= false;
490
491 share->m_lock.begin_optimistic_lock(&lock);
492
493 if (m_row.m_object.make_row(share))
494 return;
495
496 PFS_table_lock_stat_visitor visitor;
497 PFS_object_iterator::visit_tables(share, & visitor);
498
499 if (! share->m_lock.end_optimistic_lock(&lock))
500 return;
501
502 m_row_exists= true;
503 m_row.m_stat.set(m_normalizer, &visitor.m_stat);
504 }
505
read_row_values(TABLE * table,unsigned char * buf,Field ** fields,bool read_all)506 int table_tlws_by_table::read_row_values(TABLE *table,
507 unsigned char *buf,
508 Field **fields,
509 bool read_all)
510 {
511 Field *f;
512
513 if (unlikely(! m_row_exists))
514 return HA_ERR_RECORD_DELETED;
515
516 /* Set the null bits */
517 assert(table->s->null_bytes == 1);
518 buf[0]= 0;
519
520 for (; (f= *fields) ; fields++)
521 {
522 if (read_all || bitmap_is_set(table->read_set, f->field_index))
523 {
524 switch(f->field_index)
525 {
526 case 0: /* OBJECT_TYPE */
527 case 1: /* SCHEMA_NAME */
528 case 2: /* OBJECT_NAME */
529 m_row.m_object.set_field(f->field_index, f);
530 break;
531 case 3: /* COUNT_STAR */
532 set_field_ulonglong(f, m_row.m_stat.m_all.m_count);
533 break;
534 case 4: /* SUM_TIMER */
535 set_field_ulonglong(f, m_row.m_stat.m_all.m_sum);
536 break;
537 case 5: /* MIN_TIMER */
538 set_field_ulonglong(f, m_row.m_stat.m_all.m_min);
539 break;
540 case 6: /* AVG_TIMER */
541 set_field_ulonglong(f, m_row.m_stat.m_all.m_avg);
542 break;
543 case 7: /* MAX_TIMER */
544 set_field_ulonglong(f, m_row.m_stat.m_all.m_max);
545 break;
546 case 8: /* COUNT_READ */
547 set_field_ulonglong(f, m_row.m_stat.m_all_read.m_count);
548 break;
549 case 9: /* SUM_TIMER_READ */
550 set_field_ulonglong(f, m_row.m_stat.m_all_read.m_sum);
551 break;
552 case 10: /* MIN_TIMER_READ */
553 set_field_ulonglong(f, m_row.m_stat.m_all_read.m_min);
554 break;
555 case 11: /* AVG_TIMER_READ */
556 set_field_ulonglong(f, m_row.m_stat.m_all_read.m_avg);
557 break;
558 case 12: /* MAX_TIMER_READ */
559 set_field_ulonglong(f, m_row.m_stat.m_all_read.m_max);
560 break;
561 case 13: /* COUNT_WRITE */
562 set_field_ulonglong(f, m_row.m_stat.m_all_write.m_count);
563 break;
564 case 14: /* SUM_TIMER_WRITE */
565 set_field_ulonglong(f, m_row.m_stat.m_all_write.m_sum);
566 break;
567 case 15: /* MIN_TIMER_WRITE */
568 set_field_ulonglong(f, m_row.m_stat.m_all_write.m_min);
569 break;
570 case 16: /* AVG_TIMER_WRITE */
571 set_field_ulonglong(f, m_row.m_stat.m_all_write.m_avg);
572 break;
573 case 17: /* MAX_TIMER_WRITE */
574 set_field_ulonglong(f, m_row.m_stat.m_all_write.m_max);
575 break;
576
577 case 18: /* COUNT_READ_NORMAL */
578 set_field_ulonglong(f, m_row.m_stat.m_read_normal.m_count);
579 break;
580 case 19: /* SUM_TIMER_READ_NORMAL */
581 set_field_ulonglong(f, m_row.m_stat.m_read_normal.m_sum);
582 break;
583 case 20: /* MIN_TIMER_READ_NORMAL */
584 set_field_ulonglong(f, m_row.m_stat.m_read_normal.m_min);
585 break;
586 case 21: /* AVG_TIMER_READ_NORMAL */
587 set_field_ulonglong(f, m_row.m_stat.m_read_normal.m_avg);
588 break;
589 case 22: /* MAX_TIMER_READ_NORMAL */
590 set_field_ulonglong(f, m_row.m_stat.m_read_normal.m_max);
591 break;
592
593 case 23: /* COUNT_READ_WITH_SHARED_LOCKS */
594 set_field_ulonglong(f, m_row.m_stat.m_read_with_shared_locks.m_count);
595 break;
596 case 24: /* SUM_TIMER_READ_WITH_SHARED_LOCKS */
597 set_field_ulonglong(f, m_row.m_stat.m_read_with_shared_locks.m_sum);
598 break;
599 case 25: /* MIN_TIMER_READ_WITH_SHARED_LOCKS */
600 set_field_ulonglong(f, m_row.m_stat.m_read_with_shared_locks.m_min);
601 break;
602 case 26: /* AVG_TIMER_READ_WITH_SHARED_LOCKS */
603 set_field_ulonglong(f, m_row.m_stat.m_read_with_shared_locks.m_avg);
604 break;
605 case 27: /* MAX_TIMER_READ_WITH_SHARED_LOCKS */
606 set_field_ulonglong(f, m_row.m_stat.m_read_with_shared_locks.m_max);
607 break;
608
609 case 28: /* COUNT_READ_HIGH_PRIORITY */
610 set_field_ulonglong(f, m_row.m_stat.m_read_high_priority.m_count);
611 break;
612 case 29: /* SUM_TIMER_READ_HIGH_PRIORITY */
613 set_field_ulonglong(f, m_row.m_stat.m_read_high_priority.m_sum);
614 break;
615 case 30: /* MIN_TIMER_READ_HIGH_PRIORITY */
616 set_field_ulonglong(f, m_row.m_stat.m_read_high_priority.m_min);
617 break;
618 case 31: /* AVG_TIMER_READ_HIGH_PRIORITY */
619 set_field_ulonglong(f, m_row.m_stat.m_read_high_priority.m_avg);
620 break;
621 case 32: /* MAX_TIMER_READ_HIGH_PRIORITY */
622 set_field_ulonglong(f, m_row.m_stat.m_read_high_priority.m_max);
623 break;
624
625 case 33: /* COUNT_READ_NO_INSERT */
626 set_field_ulonglong(f, m_row.m_stat.m_read_no_insert.m_count);
627 break;
628 case 34: /* SUM_TIMER_READ_NO_INSERT */
629 set_field_ulonglong(f, m_row.m_stat.m_read_no_insert.m_sum);
630 break;
631 case 35: /* MIN_TIMER_READ_NO_INSERT */
632 set_field_ulonglong(f, m_row.m_stat.m_read_no_insert.m_min);
633 break;
634 case 36: /* AVG_TIMER_READ_NO_INSERT */
635 set_field_ulonglong(f, m_row.m_stat.m_read_no_insert.m_avg);
636 break;
637 case 37: /* MAX_TIMER_READ_NO_INSERT */
638 set_field_ulonglong(f, m_row.m_stat.m_read_no_insert.m_max);
639 break;
640
641 case 38: /* COUNT_READ_EXTERNAL */
642 set_field_ulonglong(f, m_row.m_stat.m_read_external.m_count);
643 break;
644 case 39: /* SUM_TIMER_READ_EXTERNAL */
645 set_field_ulonglong(f, m_row.m_stat.m_read_external.m_sum);
646 break;
647 case 40: /* MIN_TIMER_READ_EXTERNAL */
648 set_field_ulonglong(f, m_row.m_stat.m_read_external.m_min);
649 break;
650 case 41: /* AVG_TIMER_READ_EXTERNAL */
651 set_field_ulonglong(f, m_row.m_stat.m_read_external.m_avg);
652 break;
653 case 42: /* MAX_TIMER_READ_EXTERNAL */
654 set_field_ulonglong(f, m_row.m_stat.m_read_external.m_max);
655 break;
656
657 case 43: /* COUNT_WRITE_ALLOW_WRITE */
658 set_field_ulonglong(f, m_row.m_stat.m_write_allow_write.m_count);
659 break;
660 case 44: /* SUM_TIMER_WRITE_ALLOW_WRITE */
661 set_field_ulonglong(f, m_row.m_stat.m_write_allow_write.m_sum);
662 break;
663 case 45: /* MIN_TIMER_WRITE_ALLOW_WRITE */
664 set_field_ulonglong(f, m_row.m_stat.m_write_allow_write.m_min);
665 break;
666 case 46: /* AVG_TIMER_WRITE_ALLOW_WRITE */
667 set_field_ulonglong(f, m_row.m_stat.m_write_allow_write.m_avg);
668 break;
669 case 47: /* MAX_TIMER_WRITE_ALLOW_WRITE */
670 set_field_ulonglong(f, m_row.m_stat.m_write_allow_write.m_max);
671 break;
672
673 case 48: /* COUNT_WRITE_CONCURRENT_INSERT */
674 set_field_ulonglong(f, m_row.m_stat.m_write_concurrent_insert.m_count);
675 break;
676 case 49: /* SUM_TIMER_WRITE_CONCURRENT_INSERT */
677 set_field_ulonglong(f, m_row.m_stat.m_write_concurrent_insert.m_sum);
678 break;
679 case 50: /* MIN_TIMER_WRITE_CONCURRENT_INSERT */
680 set_field_ulonglong(f, m_row.m_stat.m_write_concurrent_insert.m_min);
681 break;
682 case 51: /* AVG_TIMER_WRITE_CONCURRENT_INSERT */
683 set_field_ulonglong(f, m_row.m_stat.m_write_concurrent_insert.m_avg);
684 break;
685 case 52: /* MAX_TIMER_WRITE_CONCURRENT_INSERT */
686 set_field_ulonglong(f, m_row.m_stat.m_write_concurrent_insert.m_max);
687 break;
688
689 case 53: /* COUNT_WRITE_LOW_PRIORITY */
690 set_field_ulonglong(f, m_row.m_stat.m_write_low_priority.m_count);
691 break;
692 case 54: /* SUM_TIMER_WRITE_LOW_PRIORITY */
693 set_field_ulonglong(f, m_row.m_stat.m_write_low_priority.m_sum);
694 break;
695 case 55: /* MIN_TIMER_WRITE_LOW_PRIORITY */
696 set_field_ulonglong(f, m_row.m_stat.m_write_low_priority.m_min);
697 break;
698 case 56: /* AVG_TIMER_WRITE_LOW_PRIORITY */
699 set_field_ulonglong(f, m_row.m_stat.m_write_low_priority.m_avg);
700 break;
701 case 57: /* MAX_TIMER_WRITE_LOW_PRIORITY */
702 set_field_ulonglong(f, m_row.m_stat.m_write_low_priority.m_max);
703 break;
704
705 case 58: /* COUNT_WRITE_NORMAL */
706 set_field_ulonglong(f, m_row.m_stat.m_write_normal.m_count);
707 break;
708 case 59: /* SUM_TIMER_WRITE_NORMAL */
709 set_field_ulonglong(f, m_row.m_stat.m_write_normal.m_sum);
710 break;
711 case 60: /* MIN_TIMER_WRITE_NORMAL */
712 set_field_ulonglong(f, m_row.m_stat.m_write_normal.m_min);
713 break;
714 case 61: /* AVG_TIMER_WRITE_NORMAL */
715 set_field_ulonglong(f, m_row.m_stat.m_write_normal.m_avg);
716 break;
717 case 62: /* MAX_TIMER_WRITE_NORMAL */
718 set_field_ulonglong(f, m_row.m_stat.m_write_normal.m_max);
719 break;
720
721 case 63: /* COUNT_WRITE_EXTERNAL */
722 set_field_ulonglong(f, m_row.m_stat.m_write_external.m_count);
723 break;
724 case 64: /* SUM_TIMER_WRITE_EXTERNAL */
725 set_field_ulonglong(f, m_row.m_stat.m_write_external.m_sum);
726 break;
727 case 65: /* MIN_TIMER_WRITE_EXTERNAL */
728 set_field_ulonglong(f, m_row.m_stat.m_write_external.m_min);
729 break;
730 case 66: /* AVG_TIMER_WRITE_EXTERNAL */
731 set_field_ulonglong(f, m_row.m_stat.m_write_external.m_avg);
732 break;
733 case 67: /* MAX_TIMER_WRITE_EXTERNAL */
734 set_field_ulonglong(f, m_row.m_stat.m_write_external.m_max);
735 break;
736
737 default:
738 assert(false);
739 }
740 }
741 }
742
743 return 0;
744 }
745
746