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: