|
InnoDB Plugin
1.0
|
#include "my_dbug.h"#include "mysqld_error.h"#include "my_compare.h"#include "my_sys.h"#include "m_string.h"#include "debug_sync.h"#include "trx0types.h"#include "m_ctype.h"

Go to the source code of this file.
Enumerations | |
| enum | ib_log_level_t { IB_LOG_LEVEL_INFO, IB_LOG_LEVEL_WARN, IB_LOG_LEVEL_ERROR, IB_LOG_LEVEL_FATAL } |
Functions | |
| UNIV_INTERN ulint | innobase_convert_string (void *to, ulint to_length, CHARSET_INFO *to_cs, const void *from, ulint from_length, CHARSET_INFO *from_cs, uint *errors) |
| UNIV_INTERN ulint | innobase_raw_format (const char *data, ulint data_len, ulint charset_coll, char *buf, ulint buf_size) |
| UNIV_INTERN void | innobase_invalidate_query_cache (trx_t *trx, const char *full_name, ulint full_name_len) |
| UNIV_INTERN char * | innobase_convert_name (char *buf, ulint buflen, const char *id, ulint idlen, THD *thd, ibool table_id) |
| UNIV_INTERN ibool | thd_is_replication_slave_thread (THD *thd) |
| UNIV_INTERN enum durability_properties | thd_requested_durability (const THD *thd)) |
| UNIV_INTERN ibool | thd_has_edited_nontrans_tables (THD *thd) |
| UNIV_INTERN void | innobase_mysql_print_thd (FILE *f, THD *thd, uint max_query_len) |
| UNIV_INTERN int | innobase_mysql_cmp (int mysql_type, uint charset_number, const unsigned char *a, unsigned int a_length, const unsigned char *b, unsigned int b_length)) |
| UNIV_INTERN ulint | get_innobase_type_from_mysql_type (ulint *unsigned_flag, const void *field)) |
| UNIV_INTERN void | innobase_get_cset_width (ulint cset, ulint *mbminlen, ulint *mbmaxlen) |
| UNIV_INTERN int | innobase_strcasecmp (const char *a, const char *b) |
| UNIV_INTERN int | innobase_wildcasecmp (const char *a, const char *b) |
| UNIV_INTERN const char * | innobase_basename (const char *path_name) |
| UNIV_INTERN ibool | thd_is_select (const THD *thd) |
| UNIV_INTERN void | innobase_convert_from_table_id (struct charset_info_st *cs, char *to, const char *from, ulint len) |
| UNIV_INTERN void | innobase_convert_from_id (struct charset_info_st *cs, char *to, const char *from, ulint len) |
| UNIV_INTERN void | innobase_casedn_str (char *a) |
| UNIV_INTERN struct charset_info_st * | innobase_get_charset (THD *thd) |
| UNIV_INTERN const char * | innobase_get_stmt (THD *thd, size_t *length)) |
| UNIV_INTERN ulint | innobase_get_at_most_n_mbchars (ulint charset_id, ulint prefix_len, ulint data_len, const char *str) |
| UNIV_INTERN enum icp_result | innobase_index_cond (void *file)) |
| UNIV_INTERN ibool | thd_supports_xa (THD *thd) |
| UNIV_INTERN ulong | thd_lock_wait_timeout (THD *thd) |
| UNIV_INTERN void | thd_set_lock_wait_time (THD *thd, ulint value) |
| UNIV_INTERN ulint | innobase_get_table_cache_size (void) |
| UNIV_INTERN ulint | innobase_get_lower_case_table_names (void) |
| UNIV_INTERN int | innobase_close_thd (THD *thd) |
| UNIV_INTERN ulint | innobase_mysql_fts_get_token (CHARSET_INFO *charset, const byte *start, const byte *end, fts_string_t *token, ulint *offset) |
| UNIV_INTERN int | innobase_fts_text_case_cmp (const void *cs, const void *p1, const void *p2) |
| UNIV_INTERN CHARSET_INFO * | innobase_get_fts_charset (int mysql_type, uint charset_number) |
| UNIV_INTERN ibool | thd_trx_is_read_only (THD *thd) |
| UNIV_INTERN ibool | thd_trx_is_auto_commit (THD *thd) |
| UNIV_INTERN void | innobase_format_name (char *buf, ulint buflen, const char *name, ibool is_index_name)) |
| UNIV_INTERN void | ib_errf (THD *thd, ib_log_level_t level, ib_uint32_t code, const char *format,...))) |
| UNIV_INTERN void | ib_senderrf (THD *thd, ib_log_level_t level, ib_uint32_t code,...) |
| UNIV_INTERN void | ib_logf (ib_log_level_t level, const char *format,...))) |
| UNIV_INTERN const char * | server_get_hostname () |
| UNIV_INTERN const char * | innobase_get_err_msg (int error_code) |
| UNIV_INTERN ulonglong | innobase_next_autoinc (ulonglong current, ulonglong need, ulonglong step, ulonglong offset, ulonglong max_value)) |
| UNIV_INTERN ulonglong | innobase_get_int_col_max_value (const Field *field)) |
| UNIV_INTERN my_bool | innobase_check_identifier_length (const char *id) |
| uint | innobase_convert_to_system_charset (char *to, const char *from, ulint len, uint *errors) |
| uint | innobase_convert_to_filename_charset (char *to, const char *from, ulint len) |
Prototypes for global functions in ha_innodb.cc that are called by InnoDB C code
Created 5/11/2006 Osku Salerma
| enum ib_log_level_t |
Corresponds to Sql_condition:enum_warning_level.
| UNIV_INTERN ulint get_innobase_type_from_mysql_type | ( | ulint * | unsigned_flag, |
| const void * | field | ||
| ) |
Converts a MySQL type to an InnoDB type. Note that this function returns the 'mtype' of InnoDB. InnoDB differentiates between MySQL's old <= 4.1 VARCHAR and the new true VARCHAR in >= 5.0.3 by the 'prtype'.
| unsigned_flag | out: DATA_UNSIGNED if an 'unsigned type'; at least ENUM and SET, and unsigned integer types are 'unsigned types' |
| field | in: MySQL Field |
| UNIV_INTERN void ib_errf | ( | THD * | thd, |
| ib_log_level_t | level, | ||
| ib_uint32_t | code, | ||
| const char * | format, | ||
| ... | |||
| ) |
Use this when the args are first converted to a formatted string and then passed to the format string from errmsg-utf8.txt. The error message format must be: "Some string ... %s".
Push a warning message to the client, it is a wrapper around:
void push_warning_printf( THD *thd, Sql_condition::enum_warning_level level, uint code, const char *format, ...);
| thd | in/out: session |
| level | in: warning level |
| code | MySQL error code |
| format | printf format |
| UNIV_INTERN void ib_logf | ( | ib_log_level_t | level, |
| const char * | format, | ||
| ... | |||
| ) |
Write a message to the MySQL log, prefixed with "InnoDB: ". Wrapper around sql_print_information()
| level | in: warning level |
| format | printf format |
| UNIV_INTERN void ib_senderrf | ( | THD * | thd, |
| ib_log_level_t | level, | ||
| ib_uint32_t | code, | ||
| ... | |||
| ) |
Use this when the args are passed to the format string from errmsg-utf8.txt directly as is.
Push a warning message to the client, it is a wrapper around:
void push_warning_printf( THD *thd, Sql_condition::enum_warning_level level, uint code, const char *format, ...);Args
| thd | in/out: session |
| level | in: warning level |
| code | MySQL error code |
| UNIV_INTERN const char* innobase_basename | ( | const char * | path_name | ) |
Strip dir name from a full path name and return only its file name.
| UNIV_INTERN void innobase_casedn_str | ( | char * | a | ) |
Makes all characters in a NUL-terminated UTF-8 string lower case. in/out: string to put in lower case
| UNIV_INTERN int innobase_close_thd | ( | THD * | thd | ) |
Frees a possible InnoDB trx object associated with the current THD.
| UNIV_INTERN void innobase_convert_from_id | ( | struct charset_info_st * | cs, |
| char * | to, | ||
| const char * | from, | ||
| ulint | len | ||
| ) |
Converts an identifier to UTF-8. in: length of 'to', in bytes; should be at least 3 * strlen(to) + 1
| cs | in: the 'from' character set |
| to | out: converted identifier |
| from | in: identifier to convert |
| UNIV_INTERN void innobase_convert_from_table_id | ( | struct charset_info_st * | cs, |
| char * | to, | ||
| const char * | from, | ||
| ulint | len | ||
| ) |
Converts an identifier to a table name. in: length of 'to', in bytes; should be at least 5 * strlen(to) + 1
| cs | in: the 'from' character set |
| to | out: converted identifier |
| from | in: identifier to convert |
| UNIV_INTERN char* innobase_convert_name | ( | char * | buf, |
| ulint | buflen, | ||
| const char * | id, | ||
| ulint | idlen, | ||
| THD * | thd, | ||
| ibool | table_id | ||
| ) |
Convert a table or index name to the MySQL system_charset_info (UTF-8) and quote it if needed.
| buf | out: buffer for converted identifier |
| buflen | in: length of buf, in bytes |
| id | in: identifier to convert |
| idlen | in: length of id, in bytes |
| thd | in: MySQL connection thread, or NULL |
| UNIV_INTERN ulint innobase_convert_string | ( | void * | to, |
| ulint | to_length, | ||
| CHARSET_INFO * | to_cs, | ||
| const void * | from, | ||
| ulint | from_length, | ||
| CHARSET_INFO * | from_cs, | ||
| uint * | errors | ||
| ) |
Wrapper around MySQL's copy_and_convert function.
| to | out: converted string |
| to_length | in: number of bytes reserved for the converted string |
| to_cs | in: character set to convert to |
| from | in: string to convert |
| from_length | in: number of bytes to convert |
| from_cs | in: character set to convert from |
| UNIV_INTERN void innobase_format_name | ( | char * | buf, |
| ulint | buflen, | ||
| const char * | name, | ||
| ibool | is_index_name | ||
| ) |
A wrapper function of innobase_convert_name(), convert a table or index name to the MySQL system_charset_info (UTF-8) and quote it if needed.
| buf | out: buffer for converted identifier |
| buflen | in: length of buf, in bytes |
| name | in: index or table name to format |
| is_index_name | in: index name |
| UNIV_INTERN int innobase_fts_text_case_cmp | ( | const void * | cs, |
| const void * | p1, | ||
| const void * | p2 | ||
| ) |
compare two character string case insensitively according to their charset. in: node
| cs | in: Character set |
| p1 | in: key |
| UNIV_INTERN ulint innobase_get_at_most_n_mbchars | ( | ulint | charset_id, |
| ulint | prefix_len, | ||
| ulint | data_len, | ||
| const char * | str | ||
| ) |
This function is used to find the storage length in bytes of the first n characters for prefix indexes using a multibyte character set. The function finds charset information and returns length of prefix_len characters in the index field in bytes.
| charset_id | in: character set id |
| prefix_len | in: prefix length in bytes of the index (this has to be divided by mbmaxlen to get the number of CHARACTERS n in the prefix) |
| data_len | in: length of the string in bytes |
|
read |
Determines the connection character set.
| UNIV_INTERN void innobase_get_cset_width | ( | ulint | cset, |
| ulint * | mbminlen, | ||
| ulint * | mbmaxlen | ||
| ) |
Get the variable length bounds of the given character set. out: maximum length of a char (in bytes)
| cset | in: MySQL charset-collation code |
| mbminlen | out: minimum length of a char (in bytes) |
| UNIV_INTERN const char* innobase_get_err_msg | ( | int | error_code | ) |
Get the error message format string.
| UNIV_INTERN CHARSET_INFO* innobase_get_fts_charset | ( | int | mysql_type, |
| uint | charset_number | ||
| ) |
Get FTS field charset info from the field's prtype
| mysql_type | in: MySQL type |
| UNIV_INTERN ulonglong innobase_get_int_col_max_value | ( | const Field * | field | ) |
Get the upper limit of the MySQL integral and floating-point type.
| field | in: MySQL field |
| UNIV_INTERN ulint innobase_get_lower_case_table_names | ( | void | ) |
Get the current setting of the lower_case_table_names global parameter from mysqld.cc. We do a dirty read because for one there is no synchronization object and secondly there is little harm in doing so even if we get a torn read.
| UNIV_INTERN const char* innobase_get_stmt | ( | THD * | thd, |
| size_t * | length | ||
| ) |
Determines the current SQL statement.
| thd | in: MySQL thread handle |
| length | out: length of the SQL statement |
| UNIV_INTERN ulint innobase_get_table_cache_size | ( | void | ) |
Get the current setting of the table_cache_size global parameter. We do a dirty read because for one there is no synchronization object and secondly there is little harm in doing so even if we get a torn read.
| UNIV_INTERN enum icp_result innobase_index_cond | ( | void * | file | ) |
InnoDB index push-down condition check
| file | in/out: pointer to ha_innobase |
| UNIV_INTERN void innobase_invalidate_query_cache | ( | trx_t * | trx, |
| const char * | full_name, | ||
| ulint | full_name_len | ||
| ) |
Invalidates the MySQL query cache for the table. in: full name length where also the null chars count
| trx | in: transaction which modifies the table |
| full_name | in: concatenation of database name, null char NUL, table name, null char NUL; NOTE that in Windows this is always in LOWER CASE! |
| UNIV_INTERN int innobase_mysql_cmp | ( | int | mysql_type, |
| uint | charset_number, | ||
| const unsigned char * | a, | ||
| unsigned int | a_length, | ||
| const unsigned char * | b, | ||
| unsigned int | b_length | ||
| ) |
InnoDB uses this function to compare two data fields for which the data type is such that we must use MySQL code to compare them.
| mysql_type | in: MySQL type |
| charset_number | in: number of the charset |
| a | in: data field |
| a_length | in: data field length, not UNIV_SQL_NULL |
| b | in: data field |
| b_length | in: data field length, not UNIV_SQL_NULL |
| UNIV_INTERN ulint innobase_mysql_fts_get_token | ( | CHARSET_INFO * | charset, |
| const byte * | start, | ||
| const byte * | end, | ||
| fts_string_t * | token, | ||
| ulint * | offset | ||
| ) |
Get the next token from the given string and store it in *token. out: offset to token, measured as characters from 'start'
| charset | in: Character set |
| start | in: start of text |
| end | in: one character past end of text |
| token | out: token's text |
| UNIV_INTERN void innobase_mysql_print_thd | ( | FILE * | f, |
| THD * | thd, | ||
| uint | max_query_len | ||
| ) |
Prints info of a THD object (== user session thread) to the given file. in: max query length to print, or 0 to use the default max length
| f | in: output stream |
| thd | in: pointer to a MySQL THD object |
| UNIV_INTERN ulonglong innobase_next_autoinc | ( | ulonglong | current, |
| ulonglong | need, | ||
| ulonglong | step, | ||
| ulonglong | offset, | ||
| ulonglong | max_value | ||
| ) |
Compute the next autoinc value.
For MySQL replication the autoincrement values can be partitioned among the nodes. The offset is the start or origin of the autoincrement value for a particular node. For n nodes the increment will be n and the offset will be in the interval [1, n]. The formula tries to allocate the next value for a particular node.
Note: This function is also called with increment set to the number of values we want to reserve for multi-value inserts e.g.,
INSERT INTO T VALUES(), (), ();
innobase_next_autoinc() will be called with increment set to 3 where autoinc_lock_mode != TRADITIONAL because we want to reserve 3 values for the multi-value INSERT above.
| current | in: Current value |
| need | in: count of values needed |
| step | in: AUTOINC increment step |
| offset | in: AUTOINC offset |
| max_value | in: max value for type |
| UNIV_INTERN ulint innobase_raw_format | ( | const char * | data, |
| ulint | data_len, | ||
| ulint | charset_coll, | ||
| char * | buf, | ||
| ulint | buf_size | ||
| ) |
Formats the raw data in "data" (in InnoDB on-disk format) that is of type DATA_(CHAR|VARCHAR|MYSQL|VARMYSQL) using "charset_coll" and writes the result to "buf". The result is converted to "system_charset_info". Not more than "buf_size" bytes are written to "buf". The result is always NUL-terminated (provided buf_size > 0) and the number of bytes that were written to "buf" is returned (including the terminating NUL).
| data | in: raw data |
| data_len | in: raw data length in bytes |
| charset_coll | in: charset collation |
| buf | out: output buffer |
| UNIV_INTERN int innobase_strcasecmp | ( | const char * | a, |
| const char * | b | ||
| ) |
Compares NUL-terminated UTF-8 strings case insensitively.
| a | in: first string to compare |
| UNIV_INTERN int innobase_wildcasecmp | ( | const char * | a, |
| const char * | b | ||
| ) |
Compares NUL-terminated UTF-8 strings case insensitively. The second string contains wildcards.
| a | in: string to compare |
| UNIV_INTERN const char* server_get_hostname | ( | ) |
Returns the NUL terminated value of glob_hostname.
| UNIV_INTERN ibool thd_has_edited_nontrans_tables | ( | THD * | thd | ) |
Returns true if the transaction this thread is processing has edited non-transactional tables. Used by the deadlock detector when deciding which transaction to rollback in case of a deadlock - we try to avoid rolling back transactions that have edited non-transactional tables.
| UNIV_INTERN ibool thd_is_replication_slave_thread | ( | THD * | thd | ) |
Returns true if the thread is the replication thread on the slave server. Used in srv_conc_enter_innodb() to determine if the thread should be allowed to enter InnoDB - the replication thread is treated differently than other threads. Also used in srv_conc_force_exit_innodb().
| UNIV_INTERN ibool thd_is_select | ( | const THD * | thd | ) |
Returns true if the thread is executing a SELECT statement.
| UNIV_INTERN ulong thd_lock_wait_timeout | ( | THD * | thd | ) |
Returns the lock wait timeout for the current connection.
| UNIV_INTERN enum durability_properties thd_requested_durability | ( | const THD * | thd | ) |
Gets information on the durability property requested by thread. Used when writing either a prepare or commit record to the log buffer.
| thd | in: thread handle |
| UNIV_INTERN void thd_set_lock_wait_time | ( | THD * | thd, |
| ulint | value | ||
| ) |
Add up the time waited for the lock for the current query. in: time waited for the lock
| thd | in/out: thread handle |
| UNIV_INTERN ibool thd_supports_xa | ( | THD * | thd | ) |
Returns true if the thread supports XA, global value of innodb_supports_xa if thd is NULL.
| UNIV_INTERN ibool thd_trx_is_auto_commit | ( | THD * | thd | ) |
Check if the transaction is an auto-commit transaction. TRUE also implies that it is a SELECT (read-only) transaction.
| UNIV_INTERN ibool thd_trx_is_read_only | ( | THD * | thd | ) |
Returns true if transaction should be flagged as read-only.
1.8.1.2