~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/handler/i_s.cc

Merge Padraig

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
#include <drizzled/plugin.h>
32
32
#include <drizzled/field.h>
33
33
#include <drizzled/table.h>
 
34
#include <drizzled/info_schema.h>
34
35
 
35
36
#include "i_s.h"
36
37
 
75
76
InfoSchemaTable *innodb_cmpmem_schema_table= NULL;
76
77
InfoSchemaTable *innodb_cmpmem_reset_schema_table= NULL;
77
78
 
78
 
static const ST_FIELD_INFO END_OF_ST_FIELD_INFO =
79
 
        {STRUCT_FLD(field_name,         NULL),
80
 
         STRUCT_FLD(field_length,       0),
81
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_NULL),
82
 
         STRUCT_FLD(value,              0),
83
 
         STRUCT_FLD(field_flags,        0),
84
 
         STRUCT_FLD(old_name,           ""),
85
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)};
 
79
static TrxISMethods trx_methods;
 
80
static CmpISMethods cmp_methods;
 
81
static CmpResetISMethods cmp_reset_methods;
 
82
static CmpmemISMethods cmpmem_methods;
 
83
static CmpmemResetISMethods cmpmem_reset_methods;
86
84
 
87
85
/*
88
86
Use the following types mapping:
117
115
void localtime_to_TIME(DRIZZLE_TIME *to, struct tm *from);
118
116
 
119
117
/***********************************************************************
120
 
Common function to fill any of the dynamic tables:
121
 
INFORMATION_SCHEMA.innodb_trx
122
 
INFORMATION_SCHEMA.innodb_locks
123
 
INFORMATION_SCHEMA.innodb_lock_waits */
124
 
static
125
 
int
126
 
trx_i_s_common_fill_table(
127
 
/*======================*/
128
 
                                /* out: 0 on success */
129
 
        Session*                session,        /* in: thread */
130
 
        TableList*      tables, /* in/out: tables to fill */
131
 
        COND*           cond);  /* in: condition (not used) */
132
 
 
133
 
/***********************************************************************
134
118
Unbind a dynamic INFORMATION_SCHEMA table. */
135
119
 
136
120
/***********************************************************************
215
199
}
216
200
 
217
201
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_trx */
218
 
static ST_FIELD_INFO    innodb_trx_fields_info[] =
 
202
static ColumnInfo       innodb_trx_fields_info[] =
219
203
{
220
204
#define IDX_TRX_ID              0
221
 
        {STRUCT_FLD(field_name,         "trx_id"),
222
 
         STRUCT_FLD(field_length,       TRX_ID_MAX_LEN + 1),
223
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
224
 
         STRUCT_FLD(value,              0),
225
 
         STRUCT_FLD(field_flags,        0),
226
 
         STRUCT_FLD(old_name,           ""),
227
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
205
        ColumnInfo("trx_id",
 
206
                  TRX_ID_MAX_LEN + 1,
 
207
                  DRIZZLE_TYPE_VARCHAR,
 
208
                  0,
 
209
                  0,
 
210
                  "",
 
211
                  SKIP_OPEN_TABLE),
228
212
 
229
213
#define IDX_TRX_STATE           1
230
 
        {STRUCT_FLD(field_name,         "trx_state"),
231
 
         STRUCT_FLD(field_length,       TRX_QUE_STATE_STR_MAX_LEN + 1),
232
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
233
 
         STRUCT_FLD(value,              0),
234
 
         STRUCT_FLD(field_flags,        0),
235
 
         STRUCT_FLD(old_name,           ""),
236
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
214
        ColumnInfo("trx_state",
 
215
                  TRX_QUE_STATE_STR_MAX_LEN + 1,
 
216
                  DRIZZLE_TYPE_VARCHAR,
 
217
                  0,
 
218
                  0,
 
219
                  "",
 
220
                  SKIP_OPEN_TABLE),
237
221
 
238
222
#define IDX_TRX_STARTED         2
239
 
        {STRUCT_FLD(field_name,         "trx_started"),
240
 
         STRUCT_FLD(field_length,       0),
241
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_DATETIME),
242
 
         STRUCT_FLD(value,              0),
243
 
         STRUCT_FLD(field_flags,        0),
244
 
         STRUCT_FLD(old_name,           ""),
245
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
223
        ColumnInfo("trx_started",
 
224
                  0,
 
225
                  DRIZZLE_TYPE_DATETIME,
 
226
                  0,
 
227
                  0,
 
228
                  "",
 
229
                  SKIP_OPEN_TABLE),
246
230
 
247
231
#define IDX_TRX_REQUESTED_LOCK_ID       3
248
 
        {STRUCT_FLD(field_name,         "trx_requested_lock_id"),
249
 
         STRUCT_FLD(field_length,       TRX_I_S_LOCK_ID_MAX_LEN + 1),
250
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
251
 
         STRUCT_FLD(value,              0),
252
 
         STRUCT_FLD(field_flags,        MY_I_S_MAYBE_NULL),
253
 
         STRUCT_FLD(old_name,           ""),
254
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
232
        ColumnInfo("trx_requested_lock_id",
 
233
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
 
234
                  DRIZZLE_TYPE_VARCHAR,
 
235
                  0,
 
236
                  MY_I_S_MAYBE_NULL,
 
237
                  "",
 
238
                  SKIP_OPEN_TABLE),
255
239
 
256
240
#define IDX_TRX_WAIT_STARTED    4
257
 
        {STRUCT_FLD(field_name,         "trx_wait_started"),
258
 
         STRUCT_FLD(field_length,       0),
259
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_DATETIME),
260
 
         STRUCT_FLD(value,              0),
261
 
         STRUCT_FLD(field_flags,        MY_I_S_MAYBE_NULL),
262
 
         STRUCT_FLD(old_name,           ""),
263
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
241
        ColumnInfo("trx_wait_started",
 
242
                  0,
 
243
                  DRIZZLE_TYPE_DATETIME,
 
244
                  0,
 
245
                  MY_I_S_MAYBE_NULL,
 
246
                  "",
 
247
                  SKIP_OPEN_TABLE),
264
248
 
265
249
#define IDX_TRX_WEIGHT          5
266
 
        {STRUCT_FLD(field_name,         "trx_weight"),
267
 
         STRUCT_FLD(field_length,       MY_INT64_NUM_DECIMAL_DIGITS),
268
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONGLONG),
269
 
         STRUCT_FLD(value,              0),
270
 
         STRUCT_FLD(field_flags,        MY_I_S_UNSIGNED),
271
 
         STRUCT_FLD(old_name,           ""),
272
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
250
        ColumnInfo("trx_weight",
 
251
                  MY_INT64_NUM_DECIMAL_DIGITS,
 
252
                  DRIZZLE_TYPE_LONGLONG,
 
253
                  0,
 
254
                  MY_I_S_UNSIGNED,
 
255
                  "",
 
256
                  SKIP_OPEN_TABLE),
273
257
 
274
258
#define IDX_TRX_DRIZZLE_THREAD_ID       6
275
 
        {STRUCT_FLD(field_name,         "trx_mysql_thread_id"),
276
 
         STRUCT_FLD(field_length,       MY_INT64_NUM_DECIMAL_DIGITS),
277
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONGLONG),
278
 
         STRUCT_FLD(value,              0),
279
 
         STRUCT_FLD(field_flags,        MY_I_S_UNSIGNED),
280
 
         STRUCT_FLD(old_name,           ""),
281
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
259
        ColumnInfo("trx_mysql_thread_id",
 
260
                  MY_INT64_NUM_DECIMAL_DIGITS,
 
261
                  DRIZZLE_TYPE_LONGLONG,
 
262
                  0,
 
263
                  MY_I_S_UNSIGNED,
 
264
                  "",
 
265
                  SKIP_OPEN_TABLE),
282
266
 
283
267
#define IDX_TRX_QUERY           7
284
 
        {STRUCT_FLD(field_name,         "trx_query"),
285
 
         STRUCT_FLD(field_length,       TRX_I_S_TRX_QUERY_MAX_LEN),
286
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
287
 
         STRUCT_FLD(value,              0),
288
 
         STRUCT_FLD(field_flags,        MY_I_S_MAYBE_NULL),
289
 
         STRUCT_FLD(old_name,           ""),
290
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
268
        ColumnInfo("trx_query",
 
269
                  TRX_I_S_TRX_QUERY_MAX_LEN,
 
270
                  DRIZZLE_TYPE_VARCHAR,
 
271
                  0,
 
272
                  MY_I_S_MAYBE_NULL,
 
273
                  "",
 
274
                  SKIP_OPEN_TABLE),
291
275
 
292
 
        END_OF_ST_FIELD_INFO
 
276
        ColumnInfo()
293
277
};
294
278
 
295
279
/***********************************************************************
387
371
                return(1);
388
372
        memset(innodb_trx_schema_table, 0, sizeof(InfoSchemaTable));
389
373
 
390
 
        innodb_trx_schema_table->fields_info = innodb_trx_fields_info;
391
 
        innodb_trx_schema_table->fill_table = trx_i_s_common_fill_table;
392
 
        innodb_trx_schema_table->table_name= "INNODB_TRX";
 
374
        innodb_trx_schema_table->setColumnInfo(innodb_trx_fields_info);
 
375
        innodb_trx_schema_table->setInfoSchemaMethods(&trx_methods);
 
376
        innodb_trx_schema_table->setTableName("INNODB_TRX");
393
377
 
394
378
        return(0);
395
379
}
396
380
 
397
381
 
398
382
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_locks */
399
 
static ST_FIELD_INFO    innodb_locks_fields_info[] =
 
383
static ColumnInfo innodb_locks_fields_info[] =
400
384
{
401
385
#define IDX_LOCK_ID             0
402
 
        {STRUCT_FLD(field_name,         "lock_id"),
403
 
         STRUCT_FLD(field_length,       TRX_I_S_LOCK_ID_MAX_LEN + 1),
404
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
405
 
         STRUCT_FLD(value,              0),
406
 
         STRUCT_FLD(field_flags,        0),
407
 
         STRUCT_FLD(old_name,           ""),
408
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
386
        ColumnInfo("lock_id",
 
387
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
 
388
                  DRIZZLE_TYPE_VARCHAR,
 
389
                  0,
 
390
                  0,
 
391
                  "",
 
392
                  SKIP_OPEN_TABLE),
409
393
 
410
394
#define IDX_LOCK_TRX_ID         1
411
 
        {STRUCT_FLD(field_name,         "lock_trx_id"),
412
 
         STRUCT_FLD(field_length,       TRX_ID_MAX_LEN + 1),
413
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
414
 
         STRUCT_FLD(value,              0),
415
 
         STRUCT_FLD(field_flags,        0),
416
 
         STRUCT_FLD(old_name,           ""),
417
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
395
        ColumnInfo("lock_trx_id",
 
396
                  TRX_ID_MAX_LEN + 1,
 
397
                  DRIZZLE_TYPE_VARCHAR,
 
398
                  0,
 
399
                  0,
 
400
                  "",
 
401
                  SKIP_OPEN_TABLE),
418
402
 
419
403
#define IDX_LOCK_MODE           2
420
 
        {STRUCT_FLD(field_name,         "lock_mode"),
 
404
        ColumnInfo("lock_mode",
421
405
         /* S[,GAP] X[,GAP] IS[,GAP] IX[,GAP] AUTO_INC UNKNOWN */
422
 
         STRUCT_FLD(field_length,       32),
423
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
424
 
         STRUCT_FLD(value,              0),
425
 
         STRUCT_FLD(field_flags,        0),
426
 
         STRUCT_FLD(old_name,           ""),
427
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
406
                  32,
 
407
                  DRIZZLE_TYPE_VARCHAR,
 
408
                  0,
 
409
                  0,
 
410
                  "",
 
411
                  SKIP_OPEN_TABLE),
428
412
 
429
413
#define IDX_LOCK_TYPE           3
430
 
        {STRUCT_FLD(field_name,         "lock_type"),
431
 
         STRUCT_FLD(field_length,       32 /* RECORD|TABLE|UNKNOWN */),
432
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
433
 
         STRUCT_FLD(value,              0),
434
 
         STRUCT_FLD(field_flags,        0),
435
 
         STRUCT_FLD(old_name,           ""),
436
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
414
        ColumnInfo("lock_type",
 
415
                  32, /* RECORD|TABLE|UNKNOWN */
 
416
                  DRIZZLE_TYPE_VARCHAR,
 
417
                  0,
 
418
                  0,
 
419
                  "",
 
420
                  SKIP_OPEN_TABLE),
437
421
 
438
422
#define IDX_LOCK_TABLE          4
439
 
        {STRUCT_FLD(field_name,         "lock_table"),
440
 
         STRUCT_FLD(field_length,       1024),
441
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
442
 
         STRUCT_FLD(value,              0),
443
 
         STRUCT_FLD(field_flags,        0),
444
 
         STRUCT_FLD(old_name,           ""),
445
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
423
        ColumnInfo("lock_table",
 
424
                  1024,
 
425
                  DRIZZLE_TYPE_VARCHAR,
 
426
                  0,
 
427
                  0,
 
428
                  "",
 
429
                  SKIP_OPEN_TABLE),
446
430
 
447
431
#define IDX_LOCK_INDEX          5
448
 
        {STRUCT_FLD(field_name,         "lock_index"),
449
 
         STRUCT_FLD(field_length,       1024),
450
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
451
 
         STRUCT_FLD(value,              0),
452
 
         STRUCT_FLD(field_flags,        MY_I_S_MAYBE_NULL),
453
 
         STRUCT_FLD(old_name,           ""),
454
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
432
        ColumnInfo("lock_index",
 
433
                  1024,
 
434
                  DRIZZLE_TYPE_VARCHAR,
 
435
                  0,
 
436
                  MY_I_S_MAYBE_NULL,
 
437
                  "",
 
438
                  SKIP_OPEN_TABLE),
455
439
 
456
440
#define IDX_LOCK_SPACE          6
457
 
        {STRUCT_FLD(field_name,         "lock_space"),
458
 
         STRUCT_FLD(field_length,       MY_INT64_NUM_DECIMAL_DIGITS),
459
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONGLONG),
460
 
         STRUCT_FLD(value,              0),
461
 
         STRUCT_FLD(field_flags,        MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL),
462
 
         STRUCT_FLD(old_name,           ""),
463
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
441
        ColumnInfo("lock_space",
 
442
                  MY_INT64_NUM_DECIMAL_DIGITS,
 
443
                  DRIZZLE_TYPE_LONGLONG,
 
444
                  0,
 
445
                  MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL,
 
446
                  "",
 
447
                  SKIP_OPEN_TABLE),
464
448
 
465
449
#define IDX_LOCK_PAGE           7
466
 
        {STRUCT_FLD(field_name,         "lock_page"),
467
 
         STRUCT_FLD(field_length,       MY_INT64_NUM_DECIMAL_DIGITS),
468
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONGLONG),
469
 
         STRUCT_FLD(value,              0),
470
 
         STRUCT_FLD(field_flags,        MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL),
471
 
         STRUCT_FLD(old_name,           ""),
472
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
450
        ColumnInfo("lock_page",
 
451
                  MY_INT64_NUM_DECIMAL_DIGITS,
 
452
                  DRIZZLE_TYPE_LONGLONG,
 
453
                  0,
 
454
                  MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL,
 
455
                  "",
 
456
                  SKIP_OPEN_TABLE),
473
457
 
474
458
#define IDX_LOCK_REC            8
475
 
        {STRUCT_FLD(field_name,         "lock_rec"),
476
 
         STRUCT_FLD(field_length,       MY_INT64_NUM_DECIMAL_DIGITS),
477
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONGLONG),
478
 
         STRUCT_FLD(value,              0),
479
 
         STRUCT_FLD(field_flags,        MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL),
480
 
         STRUCT_FLD(old_name,           ""),
481
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
459
        ColumnInfo("lock_rec",
 
460
                  MY_INT64_NUM_DECIMAL_DIGITS,
 
461
                  DRIZZLE_TYPE_LONGLONG,
 
462
                  0,
 
463
                  MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL,
 
464
                  "",
 
465
                  SKIP_OPEN_TABLE),
482
466
 
483
467
#define IDX_LOCK_DATA           9
484
 
        {STRUCT_FLD(field_name,         "lock_data"),
485
 
         STRUCT_FLD(field_length,       TRX_I_S_LOCK_DATA_MAX_LEN),
486
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
487
 
         STRUCT_FLD(value,              0),
488
 
         STRUCT_FLD(field_flags,        MY_I_S_MAYBE_NULL),
489
 
         STRUCT_FLD(old_name,           ""),
490
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
468
        ColumnInfo("lock_data",
 
469
                  TRX_I_S_LOCK_DATA_MAX_LEN,
 
470
                  DRIZZLE_TYPE_VARCHAR,
 
471
                  0,
 
472
                  MY_I_S_MAYBE_NULL,
 
473
                  "",
 
474
                  SKIP_OPEN_TABLE),
491
475
 
492
 
        END_OF_ST_FIELD_INFO
 
476
        ColumnInfo()
493
477
};
494
478
 
495
479
/***********************************************************************
611
595
                return(1);
612
596
        memset(innodb_locks_schema_table, 0, sizeof(InfoSchemaTable));
613
597
 
614
 
        innodb_locks_schema_table->fields_info = innodb_locks_fields_info;
615
 
        innodb_locks_schema_table->fill_table = trx_i_s_common_fill_table;
616
 
        innodb_locks_schema_table->table_name= "INNODB_LOCKS";
 
598
        innodb_locks_schema_table->setColumnInfo(innodb_locks_fields_info);
 
599
        innodb_locks_schema_table->setInfoSchemaMethods(&trx_methods);
 
600
        innodb_locks_schema_table->setTableName("INNODB_LOCKS");
617
601
        return(0);
618
602
}
619
603
 
620
604
 
621
605
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_lock_waits */
622
 
static ST_FIELD_INFO    innodb_lock_waits_fields_info[] =
 
606
static ColumnInfo innodb_lock_waits_fields_info[] =
623
607
{
624
608
#define IDX_REQUESTING_TRX_ID   0
625
 
        {STRUCT_FLD(field_name,         "requesting_trx_id"),
626
 
         STRUCT_FLD(field_length,       TRX_ID_MAX_LEN + 1),
627
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
628
 
         STRUCT_FLD(value,              0),
629
 
         STRUCT_FLD(field_flags,        0),
630
 
         STRUCT_FLD(old_name,           ""),
631
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
609
        ColumnInfo("requesting_trx_id",
 
610
                  TRX_ID_MAX_LEN + 1,
 
611
                  DRIZZLE_TYPE_VARCHAR,
 
612
                  0,
 
613
                  0,
 
614
                  "",
 
615
                  SKIP_OPEN_TABLE),
632
616
 
633
617
#define IDX_REQUESTED_LOCK_ID   1
634
 
        {STRUCT_FLD(field_name,         "requested_lock_id"),
635
 
         STRUCT_FLD(field_length,       TRX_I_S_LOCK_ID_MAX_LEN + 1),
636
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
637
 
         STRUCT_FLD(value,              0),
638
 
         STRUCT_FLD(field_flags,        0),
639
 
         STRUCT_FLD(old_name,           ""),
640
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
618
        ColumnInfo("requested_lock_id",
 
619
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
 
620
                  DRIZZLE_TYPE_VARCHAR,
 
621
                  0,
 
622
                  0,
 
623
                  "",
 
624
                  SKIP_OPEN_TABLE),
641
625
 
642
626
#define IDX_BLOCKING_TRX_ID     2
643
 
        {STRUCT_FLD(field_name,         "blocking_trx_id"),
644
 
         STRUCT_FLD(field_length,       TRX_ID_MAX_LEN + 1),
645
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
646
 
         STRUCT_FLD(value,              0),
647
 
         STRUCT_FLD(field_flags,        0),
648
 
         STRUCT_FLD(old_name,           ""),
649
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
627
        ColumnInfo("blocking_trx_id",
 
628
                  TRX_ID_MAX_LEN + 1,
 
629
                  DRIZZLE_TYPE_VARCHAR,
 
630
                  0,
 
631
                  0,
 
632
                  "",
 
633
                  SKIP_OPEN_TABLE),
650
634
 
651
635
#define IDX_BLOCKING_LOCK_ID    3
652
 
        {STRUCT_FLD(field_name,         "blocking_lock_id"),
653
 
         STRUCT_FLD(field_length,       TRX_I_S_LOCK_ID_MAX_LEN + 1),
654
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_VARCHAR),
655
 
         STRUCT_FLD(value,              0),
656
 
         STRUCT_FLD(field_flags,        0),
657
 
         STRUCT_FLD(old_name,           ""),
658
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
 
636
        ColumnInfo("blocking_lock_id",
 
637
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
 
638
                  DRIZZLE_TYPE_VARCHAR,
 
639
                  0,
 
640
                  0,
 
641
                  "",
 
642
                  SKIP_OPEN_TABLE),
659
643
 
660
 
        END_OF_ST_FIELD_INFO
 
644
        ColumnInfo()
661
645
};
662
646
 
663
647
/***********************************************************************
742
726
                return(1);
743
727
        memset(innodb_lock_waits_schema_table, 0, sizeof(InfoSchemaTable));
744
728
 
745
 
        innodb_lock_waits_schema_table->fields_info = innodb_lock_waits_fields_info;
746
 
        innodb_lock_waits_schema_table->fill_table = trx_i_s_common_fill_table;
747
 
        innodb_lock_waits_schema_table->table_name= "INNODB_LOCK_WAITS";
 
729
        innodb_lock_waits_schema_table->setColumnInfo(innodb_lock_waits_fields_info);
 
730
        innodb_lock_waits_schema_table->setInfoSchemaMethods(&trx_methods);
 
731
        innodb_lock_waits_schema_table->setTableName("INNODB_LOCK_WAITS");
748
732
 
749
733
 
750
734
        return(0);
756
740
INFORMATION_SCHEMA.innodb_trx
757
741
INFORMATION_SCHEMA.innodb_locks
758
742
INFORMATION_SCHEMA.innodb_lock_waits */
759
 
static
760
743
int
761
 
trx_i_s_common_fill_table(
 
744
TrxISMethods::fillTable(
762
745
/*======================*/
763
746
                                /* out: 0 on success */
764
747
        Session*                session,        /* in: thread */
847
830
}
848
831
 
849
832
/* Fields of the dynamic table information_schema.innodb_cmp. */
850
 
static ST_FIELD_INFO    i_s_cmp_fields_info[] =
 
833
static ColumnInfo       i_s_cmp_fields_info[] =
851
834
{
852
 
        {STRUCT_FLD(field_name,         "page_size"),
853
 
         STRUCT_FLD(field_length,       5),
854
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
855
 
         STRUCT_FLD(value,              0),
856
 
         STRUCT_FLD(field_flags,        0),
857
 
         STRUCT_FLD(old_name,           "Compressed Page Size"),
858
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
859
 
 
860
 
        {STRUCT_FLD(field_name,         "compress_ops"),
861
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
862
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
863
 
         STRUCT_FLD(value,              0),
864
 
         STRUCT_FLD(field_flags,        0),
865
 
         STRUCT_FLD(old_name,           "Total Number of Compressions"),
866
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
867
 
 
868
 
        {STRUCT_FLD(field_name,         "compress_ops_ok"),
869
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
870
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
871
 
         STRUCT_FLD(value,              0),
872
 
         STRUCT_FLD(field_flags,        0),
873
 
         STRUCT_FLD(old_name,           "Total Number of"
874
 
                                        " Successful Compressions"),
875
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
876
 
 
877
 
        {STRUCT_FLD(field_name,         "compress_time"),
878
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
879
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
880
 
         STRUCT_FLD(value,              0),
881
 
         STRUCT_FLD(field_flags,        0),
882
 
         STRUCT_FLD(old_name,           "Total Duration of Compressions,"
883
 
                    " in Seconds"),
884
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
885
 
 
886
 
        {STRUCT_FLD(field_name,         "uncompress_ops"),
887
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
888
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
889
 
         STRUCT_FLD(value,              0),
890
 
         STRUCT_FLD(field_flags,        0),
891
 
         STRUCT_FLD(old_name,           "Total Number of Decompressions"),
892
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
893
 
 
894
 
        {STRUCT_FLD(field_name,         "uncompress_time"),
895
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
896
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
897
 
         STRUCT_FLD(value,              0),
898
 
         STRUCT_FLD(field_flags,        0),
899
 
         STRUCT_FLD(old_name,           "Total Duration of Decompressions,"
900
 
                    " in Seconds"),
901
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
902
 
 
903
 
        END_OF_ST_FIELD_INFO
 
835
        ColumnInfo("page_size",
 
836
                  5,
 
837
                  DRIZZLE_TYPE_LONG,
 
838
                  0,
 
839
                  0,
 
840
                  "Compressed Page Size",
 
841
                  SKIP_OPEN_TABLE),
 
842
 
 
843
        ColumnInfo("compress_ops",
 
844
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
845
                  DRIZZLE_TYPE_LONG,
 
846
                  0,
 
847
                  0,
 
848
                  "Total Number of Compressions",
 
849
                  SKIP_OPEN_TABLE),
 
850
 
 
851
        ColumnInfo("compress_ops_ok",
 
852
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
853
                  DRIZZLE_TYPE_LONG,
 
854
                  0,
 
855
                  0,
 
856
                  "Total Number of Successful Compressions",
 
857
                  SKIP_OPEN_TABLE),
 
858
 
 
859
        ColumnInfo("compress_time",
 
860
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
861
                  DRIZZLE_TYPE_LONG,
 
862
                  0,
 
863
                  0,
 
864
                  "Total Duration of Compressions in Seconds",
 
865
                  SKIP_OPEN_TABLE),
 
866
 
 
867
        ColumnInfo("uncompress_ops",
 
868
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
869
                  DRIZZLE_TYPE_LONG,
 
870
                  0,
 
871
                  0,
 
872
                  "Total Number of Decompressions",
 
873
                  SKIP_OPEN_TABLE),
 
874
 
 
875
        ColumnInfo("uncompress_time",
 
876
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
877
                  DRIZZLE_TYPE_LONG,
 
878
                  0,
 
879
                  0,
 
880
                  "Total Duration of Decompressions in Seconds",
 
881
                  SKIP_OPEN_TABLE),
 
882
 
 
883
        ColumnInfo()
904
884
};
905
885
 
906
886
 
957
937
 
958
938
/***********************************************************************
959
939
Fill the dynamic table information_schema.innodb_cmp. */
960
 
static
961
940
int
962
 
i_s_cmp_fill(
 
941
CmpISMethods::fillTable(
963
942
/*=========*/
964
943
                                /* out: 0 on success, 1 on failure */
965
944
        Session*                session,        /* in: thread */
971
950
 
972
951
/***********************************************************************
973
952
Fill the dynamic table information_schema.innodb_cmp_reset. */
974
 
static
975
953
int
976
 
i_s_cmp_reset_fill(
 
954
CmpResetISMethods::fillTable(
977
955
/*===============*/
978
956
                                /* out: 0 on success, 1 on failure */
979
957
        Session*                session,        /* in: thread */
998
976
        memset(innodb_cmp_schema_table, 0, sizeof(InfoSchemaTable));
999
977
 
1000
978
 
1001
 
        innodb_cmp_schema_table->fields_info = i_s_cmp_fields_info;
1002
 
        innodb_cmp_schema_table->fill_table = i_s_cmp_fill;
1003
 
        innodb_cmp_schema_table->table_name= "INNODB_CMP";
 
979
        innodb_cmp_schema_table->setColumnInfo(i_s_cmp_fields_info);
 
980
        innodb_cmp_schema_table->setInfoSchemaMethods(&cmp_methods);
 
981
        innodb_cmp_schema_table->setTableName("INNODB_CMP");
1004
982
 
1005
983
        return(0);
1006
984
}
1018
996
                return(1);
1019
997
        memset(innodb_cmp_reset_schema_table, 0, sizeof(InfoSchemaTable));
1020
998
 
1021
 
        innodb_cmp_reset_schema_table->fields_info = i_s_cmp_fields_info;
1022
 
        innodb_cmp_reset_schema_table->fill_table = i_s_cmp_reset_fill;
1023
 
        innodb_cmp_reset_schema_table->table_name= "INNODB_CMP_RESET";
 
999
        innodb_cmp_reset_schema_table->setColumnInfo(i_s_cmp_fields_info);
 
1000
        innodb_cmp_reset_schema_table->setInfoSchemaMethods(&cmp_reset_methods);
 
1001
        innodb_cmp_reset_schema_table->setTableName("INNODB_CMP_RESET");
1024
1002
 
1025
1003
        return(0);
1026
1004
}
1028
1006
 
1029
1007
 
1030
1008
/* Fields of the dynamic table information_schema.innodb_cmpmem. */
1031
 
static ST_FIELD_INFO    i_s_cmpmem_fields_info[] =
 
1009
static ColumnInfo       i_s_cmpmem_fields_info[] =
1032
1010
{
1033
 
        {STRUCT_FLD(field_name,         "page_size"),
1034
 
         STRUCT_FLD(field_length,       5),
1035
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
1036
 
         STRUCT_FLD(value,              0),
1037
 
         STRUCT_FLD(field_flags,        0),
1038
 
         STRUCT_FLD(old_name,           "Buddy Block Size"),
1039
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
1040
 
 
1041
 
        {STRUCT_FLD(field_name,         "pages_used"),
1042
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
1043
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
1044
 
         STRUCT_FLD(value,              0),
1045
 
         STRUCT_FLD(field_flags,        0),
1046
 
         STRUCT_FLD(old_name,           "Currently in Use"),
1047
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
1048
 
 
1049
 
        {STRUCT_FLD(field_name,         "pages_free"),
1050
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
1051
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
1052
 
         STRUCT_FLD(value,              0),
1053
 
         STRUCT_FLD(field_flags,        0),
1054
 
         STRUCT_FLD(old_name,           "Currently Available"),
1055
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
1056
 
 
1057
 
        {STRUCT_FLD(field_name,         "relocation_ops"),
1058
 
         STRUCT_FLD(field_length,       MY_INT64_NUM_DECIMAL_DIGITS),
1059
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONGLONG),
1060
 
         STRUCT_FLD(value,              0),
1061
 
         STRUCT_FLD(field_flags,        0),
1062
 
         STRUCT_FLD(old_name,           "Total Number of Relocations"),
1063
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
1064
 
 
1065
 
        {STRUCT_FLD(field_name,         "relocation_time"),
1066
 
         STRUCT_FLD(field_length,       MY_INT32_NUM_DECIMAL_DIGITS),
1067
 
         STRUCT_FLD(field_type,         DRIZZLE_TYPE_LONG),
1068
 
         STRUCT_FLD(value,              0),
1069
 
         STRUCT_FLD(field_flags,        0),
1070
 
         STRUCT_FLD(old_name,           "Total Duration of Relocations,"
1071
 
                    " in Seconds"),
1072
 
         STRUCT_FLD(open_method,        SKIP_OPEN_TABLE)},
1073
 
 
1074
 
        END_OF_ST_FIELD_INFO
 
1011
        ColumnInfo("page_size",
 
1012
                  5,
 
1013
                  DRIZZLE_TYPE_LONG,
 
1014
                  0,
 
1015
                  0,
 
1016
                  "Buddy Block Size",
 
1017
                  SKIP_OPEN_TABLE),
 
1018
 
 
1019
        ColumnInfo("pages_used",
 
1020
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
1021
                  DRIZZLE_TYPE_LONG,
 
1022
                  0,
 
1023
                  0,
 
1024
                  "Currently in Use",
 
1025
                  SKIP_OPEN_TABLE),
 
1026
 
 
1027
        ColumnInfo("pages_free",
 
1028
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
1029
                  DRIZZLE_TYPE_LONG,
 
1030
                  0,
 
1031
                  0,
 
1032
                  "Currently Available",
 
1033
                  SKIP_OPEN_TABLE),
 
1034
 
 
1035
        ColumnInfo("relocation_ops",
 
1036
                  MY_INT64_NUM_DECIMAL_DIGITS,
 
1037
                  DRIZZLE_TYPE_LONGLONG,
 
1038
                  0,
 
1039
                  0,
 
1040
                  "Total Number of Relocations",
 
1041
                  SKIP_OPEN_TABLE),
 
1042
 
 
1043
        ColumnInfo("relocation_time",
 
1044
                  MY_INT32_NUM_DECIMAL_DIGITS,
 
1045
                  DRIZZLE_TYPE_LONG,
 
1046
                  0,
 
1047
                  0,
 
1048
                  "Total Duration of Relocations, in Seconds",
 
1049
                  SKIP_OPEN_TABLE),
 
1050
 
 
1051
        ColumnInfo()
1075
1052
};
1076
1053
 
1077
1054
/***********************************************************************
1124
1101
 
1125
1102
/***********************************************************************
1126
1103
Fill the dynamic table information_schema.innodb_cmpmem. */
1127
 
static
1128
1104
int
1129
 
i_s_cmpmem_fill(
 
1105
CmpmemISMethods::fillTable(
1130
1106
/*============*/
1131
1107
                                /* out: 0 on success, 1 on failure */
1132
1108
        Session*                session,        /* in: thread */
1138
1114
 
1139
1115
/***********************************************************************
1140
1116
Fill the dynamic table information_schema.innodb_cmpmem_reset. */
1141
 
static
1142
1117
int
1143
 
i_s_cmpmem_reset_fill(
 
1118
CmpmemResetISMethods::fillTable(
1144
1119
/*==================*/
1145
1120
                                /* out: 0 on success, 1 on failure */
1146
1121
        Session*                session,        /* in: thread */
1163
1138
                return(1);
1164
1139
        memset(innodb_cmpmem_schema_table, 0, sizeof(InfoSchemaTable));
1165
1140
 
1166
 
        innodb_cmpmem_schema_table->fields_info = i_s_cmpmem_fields_info;
1167
 
        innodb_cmpmem_schema_table->fill_table = i_s_cmpmem_fill;
1168
 
        innodb_cmpmem_schema_table->table_name= "INNODB_CMPMEM";
 
1141
        innodb_cmpmem_schema_table->setColumnInfo(i_s_cmpmem_fields_info);
 
1142
        innodb_cmpmem_schema_table->setInfoSchemaMethods(&cmpmem_methods);
 
1143
        innodb_cmpmem_schema_table->setTableName("INNODB_CMPMEM");
1169
1144
 
1170
1145
        return(0);
1171
1146
}
1182
1157
                return(1);
1183
1158
        memset(innodb_cmpmem_reset_schema_table, 0, sizeof(InfoSchemaTable));
1184
1159
 
1185
 
        innodb_cmpmem_reset_schema_table->fields_info = i_s_cmpmem_fields_info;
1186
 
        innodb_cmpmem_reset_schema_table->fill_table = i_s_cmpmem_reset_fill;
1187
 
        innodb_cmpmem_reset_schema_table->table_name= "INNODB_CMPMEM_RESET";
 
1160
        innodb_cmpmem_reset_schema_table->setColumnInfo(i_s_cmpmem_fields_info);
 
1161
        innodb_cmpmem_reset_schema_table->setInfoSchemaMethods(&cmpmem_reset_methods);
 
1162
        innodb_cmpmem_reset_schema_table->setTableName("INNODB_CMPMEM_RESET");
1188
1163
 
1189
1164
        return(0);
1190
1165
}