Merge lp:~stewart/drizzle/embedded-innodb-configuration-file-format into lp:~drizzle-trunk/drizzle/development

Proposed by Stewart Smith
Status: Merged
Merged at revision: 1536
Proposed branch: lp:~stewart/drizzle/embedded-innodb-configuration-file-format
Merge into: lp:~drizzle-trunk/drizzle/development
Prerequisite: lp:~stewart/drizzle/embedded-innodb-configuration-file-per-table
Diff against target: 154 lines (+100/-1)
4 files modified
plugin/embedded_innodb/embedded_innodb_engine.cc (+58/-1)
plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/r/config_file_format.result (+28/-0)
plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format-master.opt (+1/-0)
plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format.test (+13/-0)
To merge this branch: bzr merge lp:~stewart/drizzle/embedded-innodb-configuration-file-format
Reviewer Review Type Date Requested Status
Jay Pipes (community) Approve
Brian Aker Pending
Review via email: mp+24805@code.launchpad.net

Description of the change

support innodb_file_format option

To post a comment you must log in.
1438. By Stewart Smith

remove mem leak as well as properly show the default innodb_file_format.

Revision history for this message
Jay Pipes (jaypipes) wrote :

++broccolini

review: Approve
1439. By Stewart Smith

Merged embedded-innodb-configuration-file-per-table into embedded-innodb-configuration-file-format.

1440. By Stewart Smith

Merged embedded-innodb-configuration-file-per-table into embedded-innodb-configuration-file-format.

1441. By Stewart Smith

merge trunk

1442. By Stewart Smith

Merged embedded-innodb-configuration-file-per-table into embedded-innodb-configuration-file-format.

1443. By Stewart Smith

Merged embedded-innodb-configuration-file-per-table into embedded-innodb-configuration-file-format.

1444. By Stewart Smith

Merged embedded-innodb-configuration-file-per-table into embedded-innodb-configuration-file-format.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'plugin/embedded_innodb/embedded_innodb_engine.cc'
--- plugin/embedded_innodb/embedded_innodb_engine.cc 2010-05-17 13:07:35 +0000
+++ plugin/embedded_innodb/embedded_innodb_engine.cc 2010-05-17 13:07:36 +0000
@@ -2179,6 +2179,7 @@
2179static unsigned long srv_io_capacity= 200;2179static unsigned long srv_io_capacity= 200;
2180static unsigned long innobase_fast_shutdown= 1;2180static unsigned long innobase_fast_shutdown= 1;
2181static bool srv_file_per_table= false;2181static bool srv_file_per_table= false;
2182static char* innobase_file_format_name = NULL;
2182static char default_innodb_data_file_path[]= "ibdata1:10M:autoextend";2183static char default_innodb_data_file_path[]= "ibdata1:10M:autoextend";
2183static char* innodb_data_file_path= NULL;2184static char* innodb_data_file_path= NULL;
21842185
@@ -2239,7 +2240,7 @@
2239 if (err != DB_SUCCESS)2240 if (err != DB_SUCCESS)
2240 goto innodb_error;2241 goto innodb_error;
22412242
2242 err= ib_startup("barracuda");2243 err= ib_startup(innobase_file_format_name);
2243 if (err != DB_SUCCESS)2244 if (err != DB_SUCCESS)
2244 goto innodb_error;2245 goto innodb_error;
22452246
@@ -2279,6 +2280,55 @@
2279 }2280 }
2280}2281}
22812282
2283static char innodb_file_format_name_storage[100];
2284
2285static int innodb_file_format_name_validate(Session*, drizzle_sys_var*,
2286 void *save,
2287 drizzle_value *value)
2288{
2289 ib_err_t err;
2290 char buff[100];
2291 int len= sizeof(buff);
2292 const char *format= value->val_str(value, buff, &len);
2293
2294 *static_cast<const char**>(save)= NULL;
2295
2296 if (format == NULL)
2297 return 1;
2298
2299 err= ib_cfg_set_text("file_format", format);
2300
2301 if (err == DB_SUCCESS)
2302 {
2303 strncpy(innodb_file_format_name_storage, format, sizeof(innodb_file_format_name_storage));;
2304 innodb_file_format_name_storage[sizeof(innodb_file_format_name_storage)-1]= 0;
2305
2306 *static_cast<const char**>(save)= innodb_file_format_name_storage;
2307 return 0;
2308 }
2309 else
2310 return 1;
2311}
2312
2313static void innodb_file_format_name_update(Session*, drizzle_sys_var*,
2314 void *var_ptr,
2315 const void *save)
2316
2317{
2318 const char* format;
2319
2320 assert(var_ptr != NULL);
2321 assert(save != NULL);
2322
2323 format= *static_cast<const char*const*>(save);
2324
2325 /* Format is already set in validate */
2326 strncpy(innodb_file_format_name_storage, format, sizeof(innodb_file_format_name_storage));;
2327 innodb_file_format_name_storage[sizeof(innodb_file_format_name_storage)-1]= 0;
2328
2329 *static_cast<const char**>(var_ptr)= innodb_file_format_name_storage;
2330}
2331
2282static DRIZZLE_SYSVAR_BOOL(checksums, innobase_use_checksums,2332static DRIZZLE_SYSVAR_BOOL(checksums, innobase_use_checksums,
2283 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,2333 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
2284 "Enable InnoDB checksums validation (enabled by default). "2334 "Enable InnoDB checksums validation (enabled by default). "
@@ -2314,6 +2364,12 @@
2314 "Stores each InnoDB table to an .ibd file in the database dir.",2364 "Stores each InnoDB table to an .ibd file in the database dir.",
2315 NULL, NULL, false);2365 NULL, NULL, false);
23162366
2367static DRIZZLE_SYSVAR_STR(file_format, innobase_file_format_name,
2368 PLUGIN_VAR_RQCMDARG,
2369 "File format to use for new tables in .ibd files.",
2370 innodb_file_format_name_validate,
2371 innodb_file_format_name_update, "Barracuda");
2372
2317static DRIZZLE_SYSVAR_STR(data_file_path, innodb_data_file_path,2373static DRIZZLE_SYSVAR_STR(data_file_path, innodb_data_file_path,
2318 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,2374 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
2319 "Path to individual files and their sizes.",2375 "Path to individual files and their sizes.",
@@ -2341,6 +2397,7 @@
2341 DRIZZLE_SYSVAR(io_capacity),2397 DRIZZLE_SYSVAR(io_capacity),
2342 DRIZZLE_SYSVAR(fast_shutdown),2398 DRIZZLE_SYSVAR(fast_shutdown),
2343 DRIZZLE_SYSVAR(file_per_table),2399 DRIZZLE_SYSVAR(file_per_table),
2400 DRIZZLE_SYSVAR(file_format),
2344 DRIZZLE_SYSVAR(data_file_path),2401 DRIZZLE_SYSVAR(data_file_path),
2345 DRIZZLE_SYSVAR(lock_wait_timeout),2402 DRIZZLE_SYSVAR(lock_wait_timeout),
2346 DRIZZLE_SYSVAR(log_file_size),2403 DRIZZLE_SYSVAR(log_file_size),
23472404
=== added file 'plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/r/config_file_format.result'
--- plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/r/config_file_format.result 1970-01-01 00:00:00 +0000
+++ plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/r/config_file_format.result 2010-05-17 13:07:36 +0000
@@ -0,0 +1,28 @@
1SHOW VARIABLES LIKE 'innodb_file_format';
2Variable_name Value
3innodb_file_format Barracuda
4SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
5NAME TYPE VALUE
6file_format TEXT Barracuda
7SET GLOBAL innodb_file_format='antelope';
8SHOW VARIABLES LIKE 'innodb_file_format';
9Variable_name Value
10innodb_file_format antelope
11SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
12NAME TYPE VALUE
13file_format TEXT Antelope
14SET GLOBAL innodb_file_format='barracuda';
15SHOW VARIABLES LIKE 'innodb_file_format';
16Variable_name Value
17innodb_file_format barracuda
18SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
19NAME TYPE VALUE
20file_format TEXT Barracuda
21SET GLOBAL innodb_file_format='broccolini';
22ERROR HY000: Incorrect arguments to SET
23SHOW VARIABLES LIKE 'innodb_file_format';
24Variable_name Value
25innodb_file_format barracuda
26SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
27NAME TYPE VALUE
28file_format TEXT Barracuda
029
=== added file 'plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format-master.opt'
--- plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format-master.opt 1970-01-01 00:00:00 +0000
+++ plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format-master.opt 2010-05-17 13:07:36 +0000
@@ -0,0 +1,1 @@
1--plugin_add=embedded_innodb --plugin_remove=innobase
02
=== added file 'plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format.test'
--- plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format.test 1970-01-01 00:00:00 +0000
+++ plugin/embedded_innodb/test-suite-dir/embedded_innodb/tests/t/config_file_format.test 2010-05-17 13:07:36 +0000
@@ -0,0 +1,13 @@
1SHOW VARIABLES LIKE 'innodb_file_format';
2SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
3SET GLOBAL innodb_file_format='antelope';
4SHOW VARIABLES LIKE 'innodb_file_format';
5SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
6SET GLOBAL innodb_file_format='barracuda';
7SHOW VARIABLES LIKE 'innodb_file_format';
8SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
9--error 1210
10SET GLOBAL innodb_file_format='broccolini';
11SHOW VARIABLES LIKE 'innodb_file_format';
12SELECT * FROM DATA_DICTIONARY.INNODB_CONFIGURATION WHERE NAME='file_format';
13