InnoDB Plugin  1.0
api0api.h
Go to the documentation of this file.
1 /*****************************************************************************
2 
3 Copyright (c) 2011, 2013, Oracle and/or its affiliates. All Rights Reserved.
4 
5 This program is free software; you can redistribute it and/or modify it under
6 the terms of the GNU General Public License as published by the Free Software
7 Foundation; version 2 of the License.
8 
9 This program is distributed in the hope that it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 
13 You should have received a copy of the GNU General Public License along with
14 this program; if not, write to the Free Software Foundation, Inc.,
15 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
16 
17 *****************************************************************************/
18 
19 /**************************************************/
27 #ifndef api0api_h
28 #define api0api_h
29 
30 #include "db0err.h"
31 #include <stdio.h>
32 
33 #ifdef _MSC_VER
34 #define strncasecmp _strnicmp
35 #define strcasecmp _stricmp
36 #endif
37 
38 #if defined(__GNUC__) && (__GNUC__ > 2) && ! defined(__INTEL_COMPILER)
39 #define UNIV_NO_IGNORE __attribute__ ((warn_unused_result))
40 #else
41 #define UNIV_NO_IGNORE
42 #endif /* __GNUC__ && __GNUC__ > 2 && !__INTEL_COMPILER */
43 
44 /* See comment about ib_bool_t as to why the two macros are unsigned long. */
46 #define IB_TRUE 0x1UL
47 
48 #define IB_FALSE 0x0UL
49 
50 /* Basic types used by the InnoDB API. */
52 typedef enum dberr_t ib_err_t;
54 typedef unsigned char ib_byte_t;
56 typedef unsigned long int ib_ulint_t;
57 
58 /* We assume C99 support except when using VisualStudio. */
59 #if !defined(_MSC_VER)
60 #include <stdint.h>
61 #endif /* _MSC_VER */
62 
63 /* Integer types used by the API. Microsft VS defines its own types
64 and we use the Microsoft types when building with Visual Studio. */
65 #if defined(_MSC_VER)
66 
67 typedef __int8 ib_i8_t;
68 #else
69 
70 typedef int8_t ib_i8_t;
71 #endif
72 
73 #if defined(_MSC_VER)
74 
75 typedef unsigned __int8 ib_u8_t;
76 #else
77 
78 typedef uint8_t ib_u8_t;
79 #endif
80 
81 #if defined(_MSC_VER)
82 
83 typedef __int16 ib_i16_t;
84 #else
85 
86 typedef int16_t ib_i16_t;
87 #endif
88 
89 #if defined(_MSC_VER)
90 
91 typedef unsigned __int16 ib_u16_t;
92 #else
93 
94 typedef uint16_t ib_u16_t;
95 #endif
96 
97 #if defined(_MSC_VER)
98 
99 typedef __int32 ib_i32_t;
100 #else
101 
102 typedef int32_t ib_i32_t;
103 #endif
104 
105 #if defined(_MSC_VER)
106 
107 typedef unsigned __int32 ib_u32_t;
108 #else
109 
110 typedef uint32_t ib_u32_t;
111 #endif
112 
113 #if defined(_MSC_VER)
114 
115 typedef __int64 ib_i64_t;
116 #else
117 
118 typedef int64_t ib_i64_t;
119 #endif
120 
121 #if defined(_MSC_VER)
122 
123 typedef unsigned __int64 ib_u64_t;
124 #else
125 
126 typedef uint64_t ib_u64_t;
127 #endif
128 
129 typedef void* ib_opaque_t;
130 typedef ib_opaque_t ib_charset_t;
131 typedef ib_ulint_t ib_bool_t;
132 typedef ib_u64_t ib_id_u64_t;
133 
135 typedef enum {
139  /* XXX Can we avoid having different types for ulint and ulong?
140  - On Win64 "unsigned long" is 32 bits
141  - ulong is always defined as "unsigned long"
142  - On Win64 ulint is defined as 64 bit integer
143  => On Win64 ulint != ulong.
144  If we typecast all ulong and ulint variables to the smaller type
145  ulong, then we will cut the range of the ulint variables.
146  This is not a problem for most ulint variables because their max
147  allowed values do not exceed 2^32-1 (e.g. log_groups is ulint
148  but its max allowed value is 10). BUT buffer_pool_size and
149  log_file_size allow up to 2^64-1. */
150 
162 } ib_cfg_type_t;
163 
165 typedef enum {
169  IB_CHAR = 2,
172  IB_BINARY = 3,
178  IB_BLOB = 5,
181  IB_INT = 6,
189  IB_SYS = 8,
193  IB_FLOAT = 9,
195  IB_DOUBLE = 10,
197  IB_DECIMAL = 11,
204 } ib_col_type_t;
205 
207 typedef enum {
224 } ib_tbl_fmt_t;
225 
227 typedef enum {
247 } ib_col_attr_t;
248 
249 /* Note: must match lock0types.h */
251 typedef enum {
270 } ib_lck_mode_t;
271 
272 typedef enum {
276 
279 typedef enum {
280  IB_CUR_G = 1,
284  IB_CUR_GE = 2,
289  IB_CUR_L = 3,
298 
300 typedef enum {
312 
314 typedef struct {
321  ib_u16_t client_type;
324  ib_charset_t* charset;
325 } ib_col_meta_t;
326 
327 /* Note: Must be in sync with trx0trx.h */
333 typedef enum {
345 
346 /* Note: Must be in sync with trx0trx.h */
348 typedef enum {
374 
376 typedef void (*ib_cb_t)(void);
377 
378 #define IB_CFG_BINLOG_ENABLED 0x1
379 #define IB_CFG_MDL_ENABLED 0x2
380 #define IB_CFG_DISABLE_ROWLOCK 0x4
381 
385 typedef FILE* ib_msg_stream_t;
386 
389 typedef int (*ib_msg_log_t)(ib_msg_stream_t, const char*, ...);
390 
391 /* Note: This is to make it easy for API users to have type
392 checking for arguments to our functions. Making it ib_opaque_t
393 by itself will result in pointer decay resulting in subverting
394 of the compiler's type checking. */
395 
401 typedef struct ib_tuple_t* ib_tpl_t;
402 
410 typedef struct trx_t* ib_trx_t;
411 
413 typedef struct ib_cursor_t* ib_crsr_t;
414 
415 /*************************************************************/
426 typedef int (*ib_client_cmp_t)(
427  const ib_col_meta_t* col_meta,
428  const ib_byte_t* p1,
429  ib_ulint_t p1_len,
430  const ib_byte_t* p2,
431  ib_ulint_t p2_len);
432 
433 /* This should be the same as univ.i */
435 #define IB_SQL_NULL 0xFFFFFFFF
436 
437 #define IB_N_SYS_COLS 3
438 
440 #define MAX_TEXT_LEN 4096
441 
442 /* MySQL uses 3 byte UTF-8 encoding. */
444 #define IB_MAX_COL_NAME_LEN (64 * 3)
445 
447 #define IB_MAX_TABLE_NAME_LEN (64 * 3) * 2
448 
449 /*****************************************************************/
458 ib_err_t
460 /*=========*/
461  ib_trx_t ib_trx,
462  ib_trx_level_t ib_trx_level,
463  ib_bool_t read_write,
465  ib_bool_t auto_commit,
467  void* thd);
469 /*****************************************************************/
474 ib_trx_t
476 /*=========*/
477  ib_trx_level_t ib_trx_level,
478  ib_bool_t read_write,
480  ib_bool_t auto_commit);
483 /*****************************************************************/
494 /*=========*/
495  ib_trx_t ib_trx);
497 /*****************************************************************/
503 ib_err_t
505 /*===========*/
506  ib_trx_t ib_trx);
508 /*****************************************************************/
513 ib_err_t
515 /*==========*/
516  ib_trx_t ib_trx);
518 /*****************************************************************/
523 ib_err_t
525 /*============*/
526  ib_trx_t ib_trx);
528 /*****************************************************************/
532 ib_err_t
534 /*==========================*/
535  ib_id_u64_t table_id,
536  ib_trx_t ib_trx,
538  ib_crsr_t* ib_crsr);
540 /*****************************************************************/
544 ib_err_t
546 /*==========================*/
547  ib_id_u64_t index_id,
548  ib_trx_t ib_trx,
550  ib_crsr_t* ib_crsr);
552 /*****************************************************************/
556 ib_err_t
558 /*============================*/
559  ib_crsr_t ib_open_crsr,
560  const char* index_name,
561  ib_crsr_t* ib_crsr,
562  int* idx_type,
563  ib_id_u64_t* idx_id);
565 /*****************************************************************/
569 ib_err_t
571 /*=================*/
572  const char* name,
573  ib_trx_t ib_trx,
575  ib_crsr_t* ib_crsr);
577 /*****************************************************************/
581 ib_err_t
583 /*============*/
584  ib_crsr_t ib_crsr);
587 /*****************************************************************/
590 void
592 /*================*/
593  ib_crsr_t ib_crsr);
595 /*****************************************************************/
599 ib_err_t
601 /*============*/
602  ib_crsr_t ib_crsr);
604 /*****************************************************************/
608 ib_err_t
610 /*==================*/
611  ib_crsr_t ib_crsr);
613 /*****************************************************************/
617 ib_err_t
619 /*==============*/
620  ib_crsr_t ib_crsr,
621  ib_trx_t ib_trx);
623 /*****************************************************************/
627 ib_err_t
629 /*=================*/
630  ib_crsr_t ib_crsr,
631  ib_trx_t ib_trx);
633 /********************************************************************/
637 void*
639 /*==================*/
640  const char* name);
642 /*****************************************************************/
646 ib_err_t
648 /*=================*/
649  ib_crsr_t ib_crsr,
650  const ib_tpl_t ib_tpl);
652 /*****************************************************************/
656 ib_err_t
658 /*=================*/
659  ib_crsr_t ib_crsr,
660  const ib_tpl_t ib_old_tpl,
661  const ib_tpl_t ib_new_tpl);
663 /*****************************************************************/
667 ib_err_t
669 /*=================*/
670  ib_crsr_t ib_crsr);
672 /*****************************************************************/
676 ib_err_t
678 /*===============*/
679  ib_crsr_t ib_crsr,
680  ib_tpl_t ib_tpl,
681  void** row_buf,
682  ib_ulint_t* row_len);
684 /*****************************************************************/
688 ib_err_t
690 /*============*/
691  ib_crsr_t ib_crsr);
693 /*****************************************************************/
697 ib_err_t
699 /*===========*/
700  ib_crsr_t ib_crsr);
702 /*****************************************************************/
706 ib_err_t
708 /*===========*/
709  ib_crsr_t ib_crsr);
711 /*****************************************************************/
715 ib_err_t
717 /*=============*/
718  ib_crsr_t ib_crsr,
719  ib_tpl_t ib_tpl,
720  ib_srch_mode_t ib_srch_mode);
722 /*****************************************************************/
725 void
727 /*=====================*/
728  ib_crsr_t ib_crsr,
729  ib_match_mode_t match_mode);
731 /*****************************************************************/
735 ib_err_t
737 /*=============*/
738  ib_tpl_t ib_tpl,
739  ib_ulint_t col_no,
740  const void* src,
741  ib_ulint_t len,
742  ib_bool_t need_cpy);
745 /*****************************************************************/
751 /*===========*/
752  ib_tpl_t ib_tpl,
753  ib_ulint_t i);
755 /*****************************************************************/
761 /*==============*/
762  ib_tpl_t ib_tpl,
763  ib_ulint_t i,
764  void* dst,
765  ib_ulint_t len);
767 /*************************************************************/
771 ib_err_t
773 /*=============*/
774  ib_tpl_t ib_tpl,
775  ib_ulint_t i,
776  ib_i8_t* ival);
778 /*************************************************************/
782 ib_err_t
784 /*=============*/
785  ib_tpl_t ib_tpl,
786  ib_ulint_t i,
787  ib_u8_t* ival);
789 /*************************************************************/
793 ib_err_t
795 /*==============*/
796  ib_tpl_t ib_tpl,
797  ib_ulint_t i,
798  ib_i16_t* ival);
800 /*************************************************************/
804 ib_err_t
806 /*==============*/
807  ib_tpl_t ib_tpl,
808  ib_ulint_t i,
809  ib_u16_t* ival);
811 /*************************************************************/
815 ib_err_t
817 /*==============*/
818  ib_tpl_t ib_tpl,
819  ib_ulint_t i,
820  ib_i32_t* ival);
822 /*************************************************************/
826 ib_err_t
828 /*==============*/
829  ib_tpl_t ib_tpl,
830  ib_ulint_t i,
831  ib_u32_t* ival);
833 /*************************************************************/
837 ib_err_t
839 /*==============*/
840  ib_tpl_t ib_tpl,
841  ib_ulint_t i,
842  ib_i64_t* ival);
844 /*************************************************************/
848 ib_err_t
850 /*==============*/
851  ib_tpl_t ib_tpl,
852  ib_ulint_t i,
853  ib_u64_t* ival);
855 /*****************************************************************/
859 const void*
861 /*=============*/
862  ib_tpl_t ib_tpl,
863  ib_ulint_t i);
865 /*****************************************************************/
871 /*============*/
872  ib_tpl_t ib_tpl,
873  ib_ulint_t i,
874  ib_col_meta_t* ib_col_meta);
876 /*****************************************************************/
880 ib_tpl_t
882 /*============*/
883  ib_tpl_t ib_tpl);
885 /*****************************************************************/
891 ib_err_t
893 /*=====================*/
894  ib_crsr_t ib_crsr,
895  ib_tpl_t* ib_dst_tpl,
896  const ib_tpl_t ib_src_tpl);
898 /*****************************************************************/
903 ib_err_t
905 /*==========*/
906  ib_tpl_t ib_dst_tpl,
907  const ib_tpl_t ib_src_tpl);
909 /*****************************************************************/
913 ib_tpl_t
915 /*=======================*/
916  ib_crsr_t ib_crsr);
918 /*****************************************************************/
922 ib_tpl_t
924 /*=====================*/
925  ib_crsr_t ib_crsr);
927 /*****************************************************************/
931 ib_tpl_t
933 /*=========================*/
934  ib_crsr_t ib_crsr);
936 /*****************************************************************/
940 ib_tpl_t
942 /*=======================*/
943  ib_crsr_t ib_crsr);
945 /*****************************************************************/
951 /*=====================*/
952  const ib_tpl_t ib_tpl);
954 /*****************************************************************/
960 /*================*/
961  const ib_tpl_t ib_tpl);
963 /*****************************************************************/
966 void
968 /*============*/
969  ib_tpl_t ib_tpl);
971 /*****************************************************************/
976 ib_err_t
978 /*===============*/
979  ib_crsr_t* ib_crsr,
981  ib_id_u64_t* table_id);
983 /*****************************************************************/
987 ib_err_t
989 /*============*/
990  const char* table_name,
991  ib_id_u64_t* table_id);
993 /*****************************************************************/
997 ib_err_t
999 /*============*/
1000  const char* table_name,
1001  const char* index_name,
1002  ib_id_u64_t* index_id);
1004 /*****************************************************************/
1008 ib_bool_t
1010 /*====================*/
1011  const ib_crsr_t ib_crsr);
1013 /*****************************************************************/
1018 ib_bool_t
1020 /*========================*/
1021  const ib_trx_t ib_trx);
1023 /*****************************************************************/
1027 ib_err_t
1029 /*===========*/
1030  ib_crsr_t ib_crsr,
1031  ib_lck_mode_t ib_lck_mode);
1033 /*****************************************************************/
1037 ib_err_t
1039 /*===========*/
1040  ib_trx_t ib_trx,
1041  ib_id_u64_t table_id,
1042  ib_lck_mode_t ib_lck_mode);
1044 /*****************************************************************/
1048 ib_err_t
1050 /*====================*/
1051  ib_crsr_t ib_crsr,
1052  ib_lck_mode_t ib_lck_mode);
1054 /*****************************************************************/
1057 void
1059 /*=========================*/
1060  ib_crsr_t ib_crsr);
1062 /*****************************************************************/
1067 ib_err_t
1069 /*==============*/
1070  ib_tpl_t ib_tpl,
1071  int col_no,
1072  ib_i8_t val);
1074 /*****************************************************************/
1079 ib_err_t
1081 /*=================*/
1082  ib_tpl_t ib_tpl,
1083  int col_no,
1084  ib_i16_t val);
1086 /*****************************************************************/
1091 ib_err_t
1093 /*===============*/
1094  ib_tpl_t ib_tpl,
1095  int col_no,
1096  ib_i32_t val);
1098 /*****************************************************************/
1103 ib_err_t
1105 /*===============*/
1106  ib_tpl_t ib_tpl,
1107  int col_no,
1108  ib_i64_t val);
1110 /*****************************************************************/
1115 ib_err_t
1117 /*==============*/
1118  ib_tpl_t ib_tpl,
1119  int col_no,
1120  ib_u8_t val);
1122 /*****************************************************************/
1127 ib_err_t
1129 /*===============*/
1130  ib_tpl_t ib_tpl,
1131  int col_no,
1132  ib_u16_t val);
1134 /*****************************************************************/
1139 ib_err_t
1141 /*=================*/
1142  ib_tpl_t ib_tpl,
1143  int col_no,
1144  ib_u32_t val);
1146 /*****************************************************************/
1151 ib_err_t
1153 /*===============*/
1154  ib_tpl_t ib_tpl,
1155  int col_no,
1156  ib_u64_t val);
1158 /*****************************************************************/
1161 void
1163 /*=================*/
1164  ib_crsr_t ib_crsr);
1166 /*****************************************************************/
1170 ib_err_t
1172 /*==================*/
1173  ib_tpl_t ib_tpl,
1174  int col_no,
1175  double val);
1177 /*************************************************************/
1181 ib_err_t
1183 /*=================*/
1184  ib_tpl_t ib_tpl,
1185  ib_ulint_t col_no,
1186  double* dval);
1188 /*****************************************************************/
1192 ib_err_t
1194 /*=================*/
1195  ib_tpl_t ib_tpl,
1196  int col_no,
1197  float val);
1199 /*************************************************************/
1203 ib_err_t
1205 /*================*/
1206  ib_tpl_t ib_tpl,
1207  ib_ulint_t col_no,
1208  float* fval);
1210 /*****************************************************************/
1214 const char*
1216 /*============*/
1217  ib_crsr_t ib_crsr,
1218  ib_ulint_t i);
1220 /*****************************************************************/
1224 const char*
1226 /*==================*/
1227  ib_crsr_t ib_crsr,
1228  ib_ulint_t i);
1230 /*****************************************************************/
1234 ib_err_t
1236 /*==============*/
1237  const char* table_name,
1238  ib_id_u64_t* table_id);
1240 /*****************************************************************/
1244 ib_err_t
1245 ib_close_thd(
1246 /*=========*/
1247  void* thd);
1251 /*****************************************************************/
1255 int
1256 ib_cfg_get_cfg();
1257 /*============*/
1258 
1259 /*****************************************************************/
1263 ib_err_t
1265 /*=========================*/
1266  ib_crsr_t ib_crsr,
1267  ib_bool_t flag);
1269 /*****************************************************************/
1274 ib_err_t
1276 /*================*/
1277  const char* name);
1279 /*****************************************************************/
1285 /*==============*/
1286 
1287 /*****************************************************************/
1291 ib_ulint_t
1293 /*=======================*/
1294 
1295 /*****************************************************************/
1299 ib_u64_t
1301 /*==================*/
1302  ib_trx_t ib_trx);
1304 #endif /* api0api_h */