summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <heikki@donna.mysql.fi>2001-07-19 22:46:41 +0300
committerunknown <heikki@donna.mysql.fi>2001-07-19 22:46:41 +0300
commit1116aced39592ff1813d0fb0345dd8e177deef5f (patch)
tree371e412a14e8b6b61123eff561729e2b78f26d15 /sql
parentdece009c8b84f6ee60cf43e32931debc361b932c (diff)
downloadmariadb-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.cc45
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);
}