diff options
author | heikki@donna.mysql.fi <> | 2001-07-19 22:46:41 +0300 |
---|---|---|
committer | heikki@donna.mysql.fi <> | 2001-07-19 22:46:41 +0300 |
commit | be05b70c0d6b7a0b229ce93efcc73ac8da8d56ed (patch) | |
tree | 371e412a14e8b6b61123eff561729e2b78f26d15 /sql | |
parent | 40aa7c6d2949e3ebf0a726de929cc01830e430b9 (diff) | |
download | mariadb-git-be05b70c0d6b7a0b229ce93efcc73ac8da8d56ed.tar.gz |
srv0srv.h Support raw disk as a data file
srv0start.c Support raw disk as a data file
srv0srv.c Support raw disk as a data file
ha_innobase.cc Some error messages and support raw disk as a data file
Diffstat (limited to 'sql')
-rw-r--r-- | sql/ha_innobase.cc | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/sql/ha_innobase.cc b/sql/ha_innobase.cc index bab5dc582e7..8ea700de789 100644 --- a/sql/ha_innobase.cc +++ b/sql/ha_innobase.cc @@ -287,6 +287,26 @@ innobase_parse_data_file_paths_and_sizes(void) str++; } + if (size >= 4096) { + fprintf(stderr, + "InnoDB: error: data file size must not be >= 4096M\n"); + return(FALSE); + } + + if (strlen(str) >= 6 + && *str == 'n' + && *(str + 1) == 'e' + && *(str + 2) == 'w') { + str += 3; + } + + if (strlen(str) >= 3 + && *str == 'r' + && *(str + 1) == 'a' + && *(str + 2) == 'w') { + str += 3; + } + if (size == 0) { return(FALSE); } @@ -301,8 +321,9 @@ innobase_parse_data_file_paths_and_sizes(void) } } - srv_data_file_names = (char**) ut_malloc(i * sizeof(void*)); + srv_data_file_names = (char**)ut_malloc(i * sizeof(void*)); srv_data_file_sizes = (ulint*)ut_malloc(i * sizeof(ulint)); + srv_data_file_is_raw_partition = (ulint*)ut_malloc(i * sizeof(ulint)); srv_n_data_files = i; @@ -337,6 +358,27 @@ innobase_parse_data_file_paths_and_sizes(void) str++; } + srv_data_file_is_raw_partition[i] = 0; + + if (strlen(str) >= 6 + && *str == 'n' + && *(str + 1) == 'e' + && *(str + 2) == 'w') { + str += 3; + srv_data_file_is_raw_partition[i] = SRV_NEW_RAW; + } + + if (strlen(str) >= 3 + && *str == 'r' + && *(str + 1) == 'a' + && *(str + 2) == 'w') { + str += 3; + + if (srv_data_file_is_raw_partition[i] == 0) { + srv_data_file_is_raw_partition[i] = SRV_OLD_RAW; + } + } + srv_data_file_names[i] = path; srv_data_file_sizes[i] = size; @@ -464,6 +506,7 @@ innobase_init(void) ret = innobase_parse_data_file_paths_and_sizes(); if (ret == FALSE) { + fprintf(stderr, "InnoDB: syntax error in innodb_data_file_path\n"); DBUG_RETURN(TRUE); } |