diff options
author | unknown <heikki@donna.mysql.fi> | 2001-07-19 22:46:41 +0300 |
---|---|---|
committer | unknown <heikki@donna.mysql.fi> | 2001-07-19 22:46:41 +0300 |
commit | 1116aced39592ff1813d0fb0345dd8e177deef5f (patch) | |
tree | 371e412a14e8b6b61123eff561729e2b78f26d15 /sql | |
parent | dece009c8b84f6ee60cf43e32931debc361b932c (diff) | |
download | mariadb-git-1116aced39592ff1813d0fb0345dd8e177deef5f.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
sql/ha_innobase.cc:
Some error messages and support raw disk as a data file
innobase/srv/srv0srv.c:
Support raw disk as a data file
innobase/srv/srv0start.c:
Support raw disk as a data file
innobase/include/srv0srv.h:
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); } |