~drizzle-trunk/drizzle/development

« back to all changes in this revision

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

Merged plugin-slot-reorg.

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
#include <drizzled/plugin/info_schema.h>
35
35
 
36
36
#include "i_s.h"
37
37
 
68
68
 
69
69
#define STRUCT_FLD(name, value) value
70
70
 
71
 
InfoSchemaTable *innodb_trx_schema_table= NULL;
72
 
InfoSchemaTable *innodb_locks_schema_table= NULL;
73
 
InfoSchemaTable *innodb_lock_waits_schema_table= NULL;
74
 
InfoSchemaTable *innodb_cmp_schema_table= NULL;
75
 
InfoSchemaTable *innodb_cmp_reset_schema_table= NULL;
76
 
InfoSchemaTable *innodb_cmpmem_schema_table= NULL;
77
 
InfoSchemaTable *innodb_cmpmem_reset_schema_table= NULL;
 
71
drizzled::plugin::InfoSchema *innodb_trx_schema_table= NULL;
 
72
drizzled::plugin::InfoSchema *innodb_locks_schema_table= NULL;
 
73
drizzled::plugin::InfoSchema *innodb_lock_waits_schema_table= NULL;
 
74
drizzled::plugin::InfoSchema *innodb_cmp_schema_table= NULL;
 
75
drizzled::plugin::InfoSchema *innodb_cmp_reset_schema_table= NULL;
 
76
drizzled::plugin::InfoSchema *innodb_cmpmem_schema_table= NULL;
 
77
drizzled::plugin::InfoSchema *innodb_cmpmem_reset_schema_table= NULL;
78
78
 
79
79
static TrxISMethods trx_methods;
80
80
static CmpISMethods cmp_methods;
199
199
}
200
200
 
201
201
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_trx */
202
 
static ColumnInfo       innodb_trx_fields_info[] =
 
202
static drizzled::plugin::ColumnInfo     innodb_trx_fields_info[] =
203
203
{
204
204
#define IDX_TRX_ID              0
205
 
        ColumnInfo("trx_id",
 
205
        drizzled::plugin::ColumnInfo("trx_id",
206
206
                  TRX_ID_MAX_LEN + 1,
207
207
                  DRIZZLE_TYPE_VARCHAR,
208
208
                  0,
211
211
                  SKIP_OPEN_TABLE),
212
212
 
213
213
#define IDX_TRX_STATE           1
214
 
        ColumnInfo("trx_state",
 
214
        drizzled::plugin::ColumnInfo("trx_state",
215
215
                  TRX_QUE_STATE_STR_MAX_LEN + 1,
216
216
                  DRIZZLE_TYPE_VARCHAR,
217
217
                  0,
220
220
                  SKIP_OPEN_TABLE),
221
221
 
222
222
#define IDX_TRX_STARTED         2
223
 
        ColumnInfo("trx_started",
 
223
        drizzled::plugin::ColumnInfo("trx_started",
224
224
                  0,
225
225
                  DRIZZLE_TYPE_DATETIME,
226
226
                  0,
229
229
                  SKIP_OPEN_TABLE),
230
230
 
231
231
#define IDX_TRX_REQUESTED_LOCK_ID       3
232
 
        ColumnInfo("trx_requested_lock_id",
 
232
        drizzled::plugin::ColumnInfo("trx_requested_lock_id",
233
233
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
234
234
                  DRIZZLE_TYPE_VARCHAR,
235
235
                  0,
238
238
                  SKIP_OPEN_TABLE),
239
239
 
240
240
#define IDX_TRX_WAIT_STARTED    4
241
 
        ColumnInfo("trx_wait_started",
 
241
        drizzled::plugin::ColumnInfo("trx_wait_started",
242
242
                  0,
243
243
                  DRIZZLE_TYPE_DATETIME,
244
244
                  0,
247
247
                  SKIP_OPEN_TABLE),
248
248
 
249
249
#define IDX_TRX_WEIGHT          5
250
 
        ColumnInfo("trx_weight",
 
250
        drizzled::plugin::ColumnInfo("trx_weight",
251
251
                  MY_INT64_NUM_DECIMAL_DIGITS,
252
252
                  DRIZZLE_TYPE_LONGLONG,
253
253
                  0,
256
256
                  SKIP_OPEN_TABLE),
257
257
 
258
258
#define IDX_TRX_DRIZZLE_THREAD_ID       6
259
 
        ColumnInfo("trx_mysql_thread_id",
 
259
        drizzled::plugin::ColumnInfo("trx_mysql_thread_id",
260
260
                  MY_INT64_NUM_DECIMAL_DIGITS,
261
261
                  DRIZZLE_TYPE_LONGLONG,
262
262
                  0,
265
265
                  SKIP_OPEN_TABLE),
266
266
 
267
267
#define IDX_TRX_QUERY           7
268
 
        ColumnInfo("trx_query",
 
268
        drizzled::plugin::ColumnInfo("trx_query",
269
269
                  TRX_I_S_TRX_QUERY_MAX_LEN,
270
270
                  DRIZZLE_TYPE_VARCHAR,
271
271
                  0,
273
273
                  "",
274
274
                  SKIP_OPEN_TABLE),
275
275
 
276
 
        ColumnInfo()
 
276
        drizzled::plugin::ColumnInfo()
277
277
};
278
278
 
279
279
/***********************************************************************
367
367
                        /* out: 0 on success */
368
368
        )       /* in/out: table schema object */
369
369
{
370
 
        if ((innodb_trx_schema_table= new InfoSchemaTable) == NULL)
 
370
        if ((innodb_trx_schema_table= new drizzled::plugin::InfoSchema) == NULL)
371
371
                return(1);
372
372
 
373
373
        innodb_trx_schema_table->setColumnInfo(innodb_trx_fields_info);
379
379
 
380
380
 
381
381
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_locks */
382
 
static ColumnInfo innodb_locks_fields_info[] =
 
382
static drizzled::plugin::ColumnInfo innodb_locks_fields_info[] =
383
383
{
384
384
#define IDX_LOCK_ID             0
385
 
        ColumnInfo("lock_id",
 
385
        drizzled::plugin::ColumnInfo("lock_id",
386
386
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
387
387
                  DRIZZLE_TYPE_VARCHAR,
388
388
                  0,
391
391
                  SKIP_OPEN_TABLE),
392
392
 
393
393
#define IDX_LOCK_TRX_ID         1
394
 
        ColumnInfo("lock_trx_id",
 
394
        drizzled::plugin::ColumnInfo("lock_trx_id",
395
395
                  TRX_ID_MAX_LEN + 1,
396
396
                  DRIZZLE_TYPE_VARCHAR,
397
397
                  0,
400
400
                  SKIP_OPEN_TABLE),
401
401
 
402
402
#define IDX_LOCK_MODE           2
403
 
        ColumnInfo("lock_mode",
 
403
        drizzled::plugin::ColumnInfo("lock_mode",
404
404
         /* S[,GAP] X[,GAP] IS[,GAP] IX[,GAP] AUTO_INC UNKNOWN */
405
405
                  32,
406
406
                  DRIZZLE_TYPE_VARCHAR,
410
410
                  SKIP_OPEN_TABLE),
411
411
 
412
412
#define IDX_LOCK_TYPE           3
413
 
        ColumnInfo("lock_type",
 
413
        drizzled::plugin::ColumnInfo("lock_type",
414
414
                  32, /* RECORD|TABLE|UNKNOWN */
415
415
                  DRIZZLE_TYPE_VARCHAR,
416
416
                  0,
419
419
                  SKIP_OPEN_TABLE),
420
420
 
421
421
#define IDX_LOCK_TABLE          4
422
 
        ColumnInfo("lock_table",
 
422
        drizzled::plugin::ColumnInfo("lock_table",
423
423
                  1024,
424
424
                  DRIZZLE_TYPE_VARCHAR,
425
425
                  0,
428
428
                  SKIP_OPEN_TABLE),
429
429
 
430
430
#define IDX_LOCK_INDEX          5
431
 
        ColumnInfo("lock_index",
 
431
        drizzled::plugin::ColumnInfo("lock_index",
432
432
                  1024,
433
433
                  DRIZZLE_TYPE_VARCHAR,
434
434
                  0,
437
437
                  SKIP_OPEN_TABLE),
438
438
 
439
439
#define IDX_LOCK_SPACE          6
440
 
        ColumnInfo("lock_space",
 
440
        drizzled::plugin::ColumnInfo("lock_space",
441
441
                  MY_INT64_NUM_DECIMAL_DIGITS,
442
442
                  DRIZZLE_TYPE_LONGLONG,
443
443
                  0,
446
446
                  SKIP_OPEN_TABLE),
447
447
 
448
448
#define IDX_LOCK_PAGE           7
449
 
        ColumnInfo("lock_page",
 
449
        drizzled::plugin::ColumnInfo("lock_page",
450
450
                  MY_INT64_NUM_DECIMAL_DIGITS,
451
451
                  DRIZZLE_TYPE_LONGLONG,
452
452
                  0,
455
455
                  SKIP_OPEN_TABLE),
456
456
 
457
457
#define IDX_LOCK_REC            8
458
 
        ColumnInfo("lock_rec",
 
458
        drizzled::plugin::ColumnInfo("lock_rec",
459
459
                  MY_INT64_NUM_DECIMAL_DIGITS,
460
460
                  DRIZZLE_TYPE_LONGLONG,
461
461
                  0,
464
464
                  SKIP_OPEN_TABLE),
465
465
 
466
466
#define IDX_LOCK_DATA           9
467
 
        ColumnInfo("lock_data",
 
467
        drizzled::plugin::ColumnInfo("lock_data",
468
468
                  TRX_I_S_LOCK_DATA_MAX_LEN,
469
469
                  DRIZZLE_TYPE_VARCHAR,
470
470
                  0,
472
472
                  "",
473
473
                  SKIP_OPEN_TABLE),
474
474
 
475
 
        ColumnInfo()
 
475
        drizzled::plugin::ColumnInfo()
476
476
};
477
477
 
478
478
/***********************************************************************
590
590
        )       /* in/out: table schema object */
591
591
{
592
592
 
593
 
        if ((innodb_locks_schema_table= new InfoSchemaTable) == NULL)
 
593
        if ((innodb_locks_schema_table= new drizzled::plugin::InfoSchema) == NULL)
594
594
                return(1);
595
595
 
596
596
        innodb_locks_schema_table->setColumnInfo(innodb_locks_fields_info);
601
601
 
602
602
 
603
603
/* Fields of the dynamic table INFORMATION_SCHEMA.innodb_lock_waits */
604
 
static ColumnInfo innodb_lock_waits_fields_info[] =
 
604
static drizzled::plugin::ColumnInfo innodb_lock_waits_fields_info[] =
605
605
{
606
606
#define IDX_REQUESTING_TRX_ID   0
607
 
        ColumnInfo("requesting_trx_id",
 
607
        drizzled::plugin::ColumnInfo("requesting_trx_id",
608
608
                  TRX_ID_MAX_LEN + 1,
609
609
                  DRIZZLE_TYPE_VARCHAR,
610
610
                  0,
613
613
                  SKIP_OPEN_TABLE),
614
614
 
615
615
#define IDX_REQUESTED_LOCK_ID   1
616
 
        ColumnInfo("requested_lock_id",
 
616
        drizzled::plugin::ColumnInfo("requested_lock_id",
617
617
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
618
618
                  DRIZZLE_TYPE_VARCHAR,
619
619
                  0,
622
622
                  SKIP_OPEN_TABLE),
623
623
 
624
624
#define IDX_BLOCKING_TRX_ID     2
625
 
        ColumnInfo("blocking_trx_id",
 
625
        drizzled::plugin::ColumnInfo("blocking_trx_id",
626
626
                  TRX_ID_MAX_LEN + 1,
627
627
                  DRIZZLE_TYPE_VARCHAR,
628
628
                  0,
631
631
                  SKIP_OPEN_TABLE),
632
632
 
633
633
#define IDX_BLOCKING_LOCK_ID    3
634
 
        ColumnInfo("blocking_lock_id",
 
634
        drizzled::plugin::ColumnInfo("blocking_lock_id",
635
635
                  TRX_I_S_LOCK_ID_MAX_LEN + 1,
636
636
                  DRIZZLE_TYPE_VARCHAR,
637
637
                  0,
639
639
                  "",
640
640
                  SKIP_OPEN_TABLE),
641
641
 
642
 
        ColumnInfo()
 
642
        drizzled::plugin::ColumnInfo()
643
643
};
644
644
 
645
645
/***********************************************************************
720
720
        )
721
721
{
722
722
 
723
 
        if ((innodb_lock_waits_schema_table= new InfoSchemaTable) == NULL)
 
723
        if ((innodb_lock_waits_schema_table= new drizzled::plugin::InfoSchema) == NULL)
724
724
                return(1);
725
725
 
726
726
        innodb_lock_waits_schema_table->setColumnInfo(innodb_lock_waits_fields_info);
827
827
}
828
828
 
829
829
/* Fields of the dynamic table information_schema.innodb_cmp. */
830
 
static ColumnInfo       i_s_cmp_fields_info[] =
 
830
static drizzled::plugin::ColumnInfo     i_s_cmp_fields_info[] =
831
831
{
832
 
        ColumnInfo("page_size",
 
832
        drizzled::plugin::ColumnInfo("page_size",
833
833
                  5,
834
834
                  DRIZZLE_TYPE_LONG,
835
835
                  0,
837
837
                  "Compressed Page Size",
838
838
                  SKIP_OPEN_TABLE),
839
839
 
840
 
        ColumnInfo("compress_ops",
 
840
        drizzled::plugin::ColumnInfo("compress_ops",
841
841
                  MY_INT32_NUM_DECIMAL_DIGITS,
842
842
                  DRIZZLE_TYPE_LONG,
843
843
                  0,
845
845
                  "Total Number of Compressions",
846
846
                  SKIP_OPEN_TABLE),
847
847
 
848
 
        ColumnInfo("compress_ops_ok",
 
848
        drizzled::plugin::ColumnInfo("compress_ops_ok",
849
849
                  MY_INT32_NUM_DECIMAL_DIGITS,
850
850
                  DRIZZLE_TYPE_LONG,
851
851
                  0,
853
853
                  "Total Number of Successful Compressions",
854
854
                  SKIP_OPEN_TABLE),
855
855
 
856
 
        ColumnInfo("compress_time",
 
856
        drizzled::plugin::ColumnInfo("compress_time",
857
857
                  MY_INT32_NUM_DECIMAL_DIGITS,
858
858
                  DRIZZLE_TYPE_LONG,
859
859
                  0,
861
861
                  "Total Duration of Compressions in Seconds",
862
862
                  SKIP_OPEN_TABLE),
863
863
 
864
 
        ColumnInfo("uncompress_ops",
 
864
        drizzled::plugin::ColumnInfo("uncompress_ops",
865
865
                  MY_INT32_NUM_DECIMAL_DIGITS,
866
866
                  DRIZZLE_TYPE_LONG,
867
867
                  0,
869
869
                  "Total Number of Decompressions",
870
870
                  SKIP_OPEN_TABLE),
871
871
 
872
 
        ColumnInfo("uncompress_time",
 
872
        drizzled::plugin::ColumnInfo("uncompress_time",
873
873
                  MY_INT32_NUM_DECIMAL_DIGITS,
874
874
                  DRIZZLE_TYPE_LONG,
875
875
                  0,
877
877
                  "Total Duration of Decompressions in Seconds",
878
878
                  SKIP_OPEN_TABLE),
879
879
 
880
 
        ColumnInfo()
 
880
        drizzled::plugin::ColumnInfo()
881
881
};
882
882
 
883
883
 
968
968
        )
969
969
{
970
970
 
971
 
        if ((innodb_cmp_schema_table= new InfoSchemaTable) == NULL)
 
971
        if ((innodb_cmp_schema_table= new drizzled::plugin::InfoSchema) == NULL)
972
972
                return(1);
973
973
 
974
974
        innodb_cmp_schema_table->setColumnInfo(i_s_cmp_fields_info);
987
987
        )       /* in/out: table schema object */
988
988
{
989
989
 
990
 
        if ((innodb_cmp_reset_schema_table= new InfoSchemaTable) == NULL)
 
990
        if ((innodb_cmp_reset_schema_table= new drizzled::plugin::InfoSchema) == NULL)
991
991
                return(1);
992
992
 
993
993
        innodb_cmp_reset_schema_table->setColumnInfo(i_s_cmp_fields_info);
1000
1000
 
1001
1001
 
1002
1002
/* Fields of the dynamic table information_schema.innodb_cmpmem. */
1003
 
static ColumnInfo       i_s_cmpmem_fields_info[] =
 
1003
static drizzled::plugin::ColumnInfo     i_s_cmpmem_fields_info[] =
1004
1004
{
1005
 
        ColumnInfo("page_size",
 
1005
        drizzled::plugin::ColumnInfo("page_size",
1006
1006
                  5,
1007
1007
                  DRIZZLE_TYPE_LONG,
1008
1008
                  0,
1010
1010
                  "Buddy Block Size",
1011
1011
                  SKIP_OPEN_TABLE),
1012
1012
 
1013
 
        ColumnInfo("pages_used",
 
1013
        drizzled::plugin::ColumnInfo("pages_used",
1014
1014
                  MY_INT32_NUM_DECIMAL_DIGITS,
1015
1015
                  DRIZZLE_TYPE_LONG,
1016
1016
                  0,
1018
1018
                  "Currently in Use",
1019
1019
                  SKIP_OPEN_TABLE),
1020
1020
 
1021
 
        ColumnInfo("pages_free",
 
1021
        drizzled::plugin::ColumnInfo("pages_free",
1022
1022
                  MY_INT32_NUM_DECIMAL_DIGITS,
1023
1023
                  DRIZZLE_TYPE_LONG,
1024
1024
                  0,
1026
1026
                  "Currently Available",
1027
1027
                  SKIP_OPEN_TABLE),
1028
1028
 
1029
 
        ColumnInfo("relocation_ops",
 
1029
        drizzled::plugin::ColumnInfo("relocation_ops",
1030
1030
                  MY_INT64_NUM_DECIMAL_DIGITS,
1031
1031
                  DRIZZLE_TYPE_LONGLONG,
1032
1032
                  0,
1034
1034
                  "Total Number of Relocations",
1035
1035
                  SKIP_OPEN_TABLE),
1036
1036
 
1037
 
        ColumnInfo("relocation_time",
 
1037
        drizzled::plugin::ColumnInfo("relocation_time",
1038
1038
                  MY_INT32_NUM_DECIMAL_DIGITS,
1039
1039
                  DRIZZLE_TYPE_LONG,
1040
1040
                  0,
1042
1042
                  "Total Duration of Relocations, in Seconds",
1043
1043
                  SKIP_OPEN_TABLE),
1044
1044
 
1045
 
        ColumnInfo()
 
1045
        drizzled::plugin::ColumnInfo()
1046
1046
};
1047
1047
 
1048
1048
/***********************************************************************
1128
1128
        )
1129
1129
{
1130
1130
 
1131
 
        if ((innodb_cmpmem_schema_table= new InfoSchemaTable) == NULL)
 
1131
        if ((innodb_cmpmem_schema_table= new drizzled::plugin::InfoSchema) == NULL)
1132
1132
                return(1);
1133
1133
 
1134
1134
        innodb_cmpmem_schema_table->setColumnInfo(i_s_cmpmem_fields_info);
1146
1146
                        /* out: 0 on success */
1147
1147
        )
1148
1148
{
1149
 
        if ((innodb_cmpmem_reset_schema_table= new InfoSchemaTable) == NULL)
 
1149
        if ((innodb_cmpmem_reset_schema_table= new drizzled::plugin::InfoSchema) == NULL)
1150
1150
                return(1);
1151
1151
 
1152
1152
        innodb_cmpmem_reset_schema_table->setColumnInfo(i_s_cmpmem_fields_info);
1165
1165
                        /* out: 0 on success */
1166
1166
        drizzled::plugin::Registry &registry)   /* in/out: table schema object */
1167
1167
{
1168
 
        registry.remove(innodb_trx_schema_table);
1169
 
        registry.remove(innodb_locks_schema_table);
1170
 
        registry.remove(innodb_lock_waits_schema_table);
1171
 
        registry.remove(innodb_cmp_schema_table);
1172
 
        registry.remove(innodb_cmp_reset_schema_table);
1173
 
        registry.remove(innodb_cmpmem_schema_table);
1174
 
        registry.remove(innodb_cmpmem_reset_schema_table);
 
1168
        registry.info_schema.remove(innodb_trx_schema_table);
 
1169
        registry.info_schema.remove(innodb_locks_schema_table);
 
1170
        registry.info_schema.remove(innodb_lock_waits_schema_table);
 
1171
        registry.info_schema.remove(innodb_cmp_schema_table);
 
1172
        registry.info_schema.remove(innodb_cmp_reset_schema_table);
 
1173
        registry.info_schema.remove(innodb_cmpmem_schema_table);
 
1174
        registry.info_schema.remove(innodb_cmpmem_reset_schema_table);
1175
1175
 
1176
1176
        delete innodb_trx_schema_table;
1177
1177
        delete innodb_locks_schema_table;