Class for handling create table information.
More...
#include <ha_innodb.h>
|
| create_table_info_t (THD *thd, TABLE *form, HA_CREATE_INFO *create_info, char *table_name, char *remote_path, char *tablespace, bool file_per_table, bool skip_strict, uint32_t old_flags, uint32_t old_flags2, bool is_partition) |
| Constructor. More...
|
|
int | initialize () |
| Initialize the object. More...
|
|
void | set_tablespace_type (bool table_being_altered_is_file_per_table) |
| Set m_tablespace_type. More...
|
|
int | create_table (const dd::Table *dd_table, const dd::Table *old_part_table) |
| Create the internal innodb table. More...
|
|
int | create_table_update_dict () |
| Update the internal data dictionary. More...
|
|
template<typename Table > |
int | create_table_update_global_dd (Table *dd_table) |
| Update the global data dictionary. More...
|
|
const char * | create_options_are_invalid () |
| Validates the create options. More...
|
|
bool | create_option_data_directory_is_valid (bool ignore=false) |
| Validate DATA DIRECTORY option. More...
|
|
bool | create_option_tablespace_is_valid () |
| Validate TABLESPACE option. More...
|
|
bool | create_option_compression_is_valid () |
| Validate COMPRESSION option. More...
|
|
int | prepare_create_table (const char *name) |
| Prepare to create a table. More...
|
|
bool | innobase_table_flags () |
| Determine InnoDB table flags. More...
|
|
void | set_remote_path_flags () |
| Set flags and append '/' to remote path if necessary. More...
|
|
uint32_t | flags () const |
| Get table flags. More...
|
|
uint32_t | flags2 () const |
| Get table flags2. More...
|
|
void | flags_reset () |
| Reset table flags. More...
|
|
void | flags2_reset () |
| Reset table flags2. More...
|
|
bool | skip_strict () const |
| whether to skip strict check. More...
|
|
const char * | table_name () const |
| Return table name. More...
|
|
THD * | thd () const |
|
bool | is_intrinsic_temp_table () const |
|
bool | is_temp_table () const |
|
void | detach () |
| Detach the just created table and its auxiliary tables if exist. More...
|
|
Class for handling create table information.
◆ create_table_info_t()
create_table_info_t::create_table_info_t |
( |
THD * |
thd, |
|
|
TABLE * |
form, |
|
|
HA_CREATE_INFO * |
create_info, |
|
|
char * |
table_name, |
|
|
char * |
remote_path, |
|
|
char * |
tablespace, |
|
|
bool |
file_per_table, |
|
|
bool |
skip_strict, |
|
|
uint32_t |
old_flags, |
|
|
uint32_t |
old_flags2, |
|
|
bool |
is_partition |
|
) |
| |
|
inline |
Constructor.
Used in two ways:
- all but file_per_table is used, when creating the table.
- all but name/path is used, when validating options and using flags.
◆ create_option_compression_is_valid()
bool create_table_info_t::create_option_compression_is_valid |
( |
| ) |
|
Validate COMPRESSION option.
Validate the COPMRESSION option.
- Returns
- true if valid, false if not.
◆ create_option_data_directory_is_valid()
bool create_table_info_t::create_option_data_directory_is_valid |
( |
bool |
ignore = false | ) |
|
Validate DATA DIRECTORY option.
◆ create_option_tablespace_is_valid()
bool create_table_info_t::create_option_tablespace_is_valid |
( |
| ) |
|
Validate TABLESPACE option.
- Returns
- true if valid, false if not.
◆ create_options_are_invalid()
const char * create_table_info_t::create_options_are_invalid |
( |
| ) |
|
Validates the create options.
Validate the create options.
Checks that the options KEY_BLOCK_SIZE, ROW_FORMAT, DATA DIRECTORY, TEMPORARY & TABLESPACE are compatible with each other and other settings. These CREATE OPTIONS are not validated here unless innodb_strict_mode is on. With strict mode, this function will report each problem it finds using a custom message with error code ER_ILLEGAL_HA_CREATE_OPTION, not its built-in message.
- Returns
- NULL if valid, string name of bad option if not.
Check that the options KEY_BLOCK_SIZE, ROW_FORMAT, DATA DIRECTORY, TEMPORARY & TABLESPACE are compatible with each other and other settings. These CREATE OPTIONS are not validated here unless innodb_strict_mode is on. With strict mode, this function will report each problem it finds using a custom message with error code ER_ILLEGAL_HA_CREATE_OPTION, not its built-in message.
- Returns
- NULL if valid, string name of bad option if not.
◆ create_table()
int create_table_info_t::create_table |
( |
const dd::Table * |
dd_table, |
|
|
const dd::Table * |
old_part_table |
|
) |
| |
Create the internal innodb table.
- Parameters
-
[in] | dd_table | dd::Table or nullptr for intrinsic table |
[in] | old_part_table | dd::Table from an old partition for partitioned table, NULL otherwise. |
- Returns
- 0 or error number
◆ create_table_def()
int create_table_info_t::create_table_def |
( |
const dd::Table * |
dd_table, |
|
|
const dd::Table * |
old_part_table |
|
) |
| |
|
inlineprivate |
Create a table definition to an InnoDB database.
- Parameters
-
[in] | dd_table | dd::Table or nullptr for intrinsic table |
[in] | old_part_table | dd::Table from an old partition for partitioned table, NULL otherwise. |
- Returns
- HA_* level error
Fill base columns for the stored column present in the list.
◆ create_table_update_dict()
int create_table_info_t::create_table_update_dict |
( |
| ) |
|
Update the internal data dictionary.
Update a new table in an InnoDB database.
- Returns
- error number
◆ create_table_update_global_dd()
template<typename Table >
int create_table_info_t::create_table_update_global_dd |
( |
Table * |
dd_table | ) |
|
Update the global data dictionary.
- Parameters
-
[in] | dd_table | dd::Table or dd::Partition |
- Return values
-
0 | On success |
error | number On failure |
◆ detach()
void create_table_info_t::detach |
( |
| ) |
|
Detach the just created table and its auxiliary tables if exist.
◆ flags()
uint32_t create_table_info_t::flags |
( |
| ) |
const |
|
inline |
◆ flags2()
uint32_t create_table_info_t::flags2 |
( |
| ) |
const |
|
inline |
◆ flags2_reset()
void create_table_info_t::flags2_reset |
( |
| ) |
|
|
inline |
◆ flags_reset()
void create_table_info_t::flags_reset |
( |
| ) |
|
|
inline |
◆ initialize()
int create_table_info_t::initialize |
( |
| ) |
|
Initialize the object.
Initialize the create_table_info_t object.
- Returns
- error number
◆ initialize_autoinc()
void create_table_info_t::initialize_autoinc |
( |
| ) |
|
|
private |
Initialize the autoinc of this table if necessary, which should be called before we flush logs, so autoinc counter can be persisted.
◆ innobase_table_flags()
bool create_table_info_t::innobase_table_flags |
( |
| ) |
|
Determine InnoDB table flags.
If strict_mode=OFF, this will adjust the flags to what should be assumed. However, if an existing general tablespace is being targeted, we will NOT assume anything or adjust these flags.
- Return values
-
true | if successful, false if error |
◆ is_intrinsic_temp_table()
bool create_table_info_t::is_intrinsic_temp_table |
( |
| ) |
const |
|
inline |
◆ is_temp_table()
bool create_table_info_t::is_temp_table |
( |
| ) |
const |
|
inline |
- Returns
- true only if table is temporary and not intrinsic
◆ log_error_invalid_location()
void create_table_info_t::log_error_invalid_location |
( |
std::string & |
msg, |
|
|
bool |
ignore |
|
) |
| |
|
private |
Put a warning or error message to the error log for the DATA DIRECTORY option.
- Parameters
-
[in] | msg | The reason that data directory is wrong. |
[in] | ignore | If true, append a message about ignoring the data directory location. |
◆ normalize_table_name()
bool create_table_info_t::normalize_table_name |
( |
char * |
norm_name, |
|
|
const char * |
name |
|
) |
| |
|
static |
Normalizes a table name string.
A normalized name consists of the database name catenated to '/' and table name. An example: test/mytable. On case insensitive file system normalization converts name to lower case.
- Parameters
-
[in,out] | norm_name | Buffer to return the normalized name in. |
[in] | name | Table name string. |
- Returns
- true if successful.
◆ parse_table_name()
int create_table_info_t::parse_table_name |
( |
const char * |
name | ) |
|
|
private |
Parses the table name into normal name and either temp path or remote path if needed.
Parse the table name into normal name and remote path if needed.
- Parameters
-
[in] | name | Table name (db/table or full path). |
- Returns
- 0 if successful, otherwise, error number
◆ prepare_create_table()
int create_table_info_t::prepare_create_table |
( |
const char * |
name | ) |
|
Prepare to create a table.
Prepare to create a new table to an InnoDB database.
- Parameters
-
- Returns
- error number
◆ set_remote_path_flags()
void create_table_info_t::set_remote_path_flags |
( |
| ) |
|
Set flags and append '/' to remote path if necessary.
◆ set_tablespace_type()
void create_table_info_t::set_tablespace_type |
( |
bool |
table_being_altered_is_file_per_table | ) |
|
Set m_tablespace_type.
Set m_use_* flags.
Allow file_per_table for this table either because: 1) the setting innodb_file_per_table=on, 2) the table being altered is currently file_per_table 3) explicitly requested by tablespace=innodb_file_per_table.
◆ skip_strict()
bool create_table_info_t::skip_strict |
( |
| ) |
const |
|
inline |
whether to skip strict check.
◆ table_name()
const char * create_table_info_t::table_name |
( |
| ) |
const |
|
inline |
◆ thd()
THD * create_table_info_t::thd |
( |
| ) |
const |
|
inline |
◆ m_allow_file_per_table
bool create_table_info_t::m_allow_file_per_table |
|
private |
Allow file_per_table for this table either because: 1) the setting innodb_file_per_table=on, 2) it was explicitly requested by tablespace=innodb_file_per_table.
3) the table being altered is currently file_per_table
◆ m_create_info
◆ m_flags
uint32_t create_table_info_t::m_flags |
|
private |
◆ m_flags2
uint32_t create_table_info_t::m_flags2 |
|
private |
◆ m_form
const TABLE* create_table_info_t::m_form |
|
private |
Information on table columns and indexes.
◆ m_innodb_file_per_table
bool create_table_info_t::m_innodb_file_per_table |
|
private |
Local copy of srv_file_per_table.
◆ m_partition
bool create_table_info_t::m_partition |
|
private |
True if this table is a partition.
◆ m_remote_path
char* create_table_info_t::m_remote_path |
|
private |
Remote path (DATA DIRECTORY) or zero length-string.
◆ m_skip_strict
bool create_table_info_t::m_skip_strict |
|
private |
◆ m_table
The newly created InnoDB table object.
This is currently only used in this class, since the new table is not evictable until final success/failure, it can be accessed directly.
◆ m_table_name
char* create_table_info_t::m_table_name |
|
private |
◆ m_tablespace
char* create_table_info_t::m_tablespace |
|
private |
Tablespace name or zero length-string.
◆ m_thd
THD* create_table_info_t::m_thd |
|
private |
Connection thread handle.
◆ m_trx
trx_t* create_table_info_t::m_trx |
|
private |
InnoDB transaction handle.
◆ m_use_data_dir
bool create_table_info_t::m_use_data_dir |
|
private |
◆ m_use_file_per_table
bool create_table_info_t::m_use_file_per_table |
|
private |
After all considerations, this shows whether we will actually create a table and tablespace using file-per-table.
◆ m_use_shared_space
bool create_table_info_t::m_use_shared_space |
|
private |
Using a Shared General Tablespace.
The documentation for this class was generated from the following files: