Description:
The idea is to configure flexibility of CREATE and ALTER commands and let DBA choose default global and per database specifications .
Implementation of this FR should cover many current and future FRs
How to repeat:
FR
Suggested fix:
Idea of structure may be:
create table default_specification
{
db varchar comment '* means global scope',
object varchar comment 'object for which CREATE or ALTER command is used. For tables may be ENGINE',
specification varchar,
value varchar,
primary key (db, engine, specification)
};
Whenever corresponding SQL command is executed, MySQL automatically chooses default configuration as specified in the table (if any).
example uses:
1. Let innodb tables in 'test' database to be created in individual tablespaces and have Compact ROW_FORMAT (Bug #8674):
'test' 'INNODB' 'tablespace' 'innodb_file_per_table'
'test' 'INNODB' 'ROW_FORMAT' 'Compact'
2. Let all DATABASES be latin1 default:
* 'DATABASE' 'character set' 'latin1'
3. Let procedures to have definer= INVOKER by default
* 'PROCEDURE' 'definer' 'invoker'
4. Let global default engine be InnoDB and myisam in 'test' database:
'*' 'TABLE' 'engine' 'innodb'
'test' 'TABLE' 'engine' 'myisam'
5. Let default engine for temporary tables be InnoDB :
'*' 'TEMPORARY TABLE' 'engine' 'innodb'
Presence of such universal feature will deprecate variables (which are read during CREATE / ALTER):
innodb_file_per_table
default_storage_engine
default_tmp_storage_engine
delay_key_write
max_heap_table_size
myisam_data_pointer_size
Description: The idea is to configure flexibility of CREATE and ALTER commands and let DBA choose default global and per database specifications . Implementation of this FR should cover many current and future FRs How to repeat: FR Suggested fix: Idea of structure may be: create table default_specification { db varchar comment '* means global scope', object varchar comment 'object for which CREATE or ALTER command is used. For tables may be ENGINE', specification varchar, value varchar, primary key (db, engine, specification) }; Whenever corresponding SQL command is executed, MySQL automatically chooses default configuration as specified in the table (if any). example uses: 1. Let innodb tables in 'test' database to be created in individual tablespaces and have Compact ROW_FORMAT (Bug #8674): 'test' 'INNODB' 'tablespace' 'innodb_file_per_table' 'test' 'INNODB' 'ROW_FORMAT' 'Compact' 2. Let all DATABASES be latin1 default: * 'DATABASE' 'character set' 'latin1' 3. Let procedures to have definer= INVOKER by default * 'PROCEDURE' 'definer' 'invoker' 4. Let global default engine be InnoDB and myisam in 'test' database: '*' 'TABLE' 'engine' 'innodb' 'test' 'TABLE' 'engine' 'myisam' 5. Let default engine for temporary tables be InnoDB : '*' 'TEMPORARY TABLE' 'engine' 'innodb' Presence of such universal feature will deprecate variables (which are read during CREATE / ALTER): innodb_file_per_table default_storage_engine default_tmp_storage_engine delay_key_write max_heap_table_size myisam_data_pointer_size