null+****@clear*****
null+****@clear*****
2012年 3月 19日 (月) 18:34:58 JST
Kouhei Sutou 2012-03-19 18:34:58 +0900 (Mon, 19 Mar 2012)
New Revision: 94aeaca3824709ec8fbb00c36e10e2fa0a7629df
Log:
Add PathMapper::mysql_table_name()
Modified files:
lib/mrn_path_mapper.cpp
lib/mrn_path_mapper.hpp
test/unit/test_mrn_path_mapper.cpp
Modified: lib/mrn_path_mapper.cpp (+19 -0)
===================================================================
--- lib/mrn_path_mapper.cpp 2012-03-19 18:34:32 +0900 (8cc047c)
+++ lib/mrn_path_mapper.cpp 2012-03-19 18:34:58 +0900 (3fdf619)
@@ -33,6 +33,7 @@ namespace mrn {
db_path_[0] = '\0';
db_name_[0] = '\0';
table_name_[0] = '\0';
+ mysql_table_name_[0] = '\0';
}
/**
@@ -109,4 +110,22 @@ namespace mrn {
table_name_[j] = '\0';
return table_name_;
}
+
+ /**
+ * "./${db}/${table}" ==> "${table}" (without encoding first '_')
+ */
+ const char* PathMapper::mysql_table_name() {
+ if (mysql_table_name_[0] != '\0') {
+ return mysql_table_name_;
+ }
+
+ int len = strlen(mysql_path_);
+ int i = len, j = 0;
+ for (; mysql_path_[--i] != '/' ;) {}
+ for (; i < len ;) {
+ mysql_table_name_[j++] = mysql_path_[++i];
+ }
+ mysql_table_name_[j] = '\0';
+ return mysql_table_name_;
+ }
}
Modified: lib/mrn_path_mapper.hpp (+2 -0)
===================================================================
--- lib/mrn_path_mapper.hpp 2012-03-19 18:34:32 +0900 (2a492de)
+++ lib/mrn_path_mapper.hpp 2012-03-19 18:34:58 +0900 (f821df5)
@@ -31,11 +31,13 @@ namespace mrn {
const char* db_path();
const char* db_name();
const char* table_name();
+ const char* mysql_table_name();
private:
const char* mysql_path_;
char db_path_[MRN_MAX_PATH_SIZE];
char db_name_[MRN_MAX_PATH_SIZE];
char table_name_[MRN_MAX_PATH_SIZE];
+ char mysql_table_name_[MRN_MAX_PATH_SIZE];
};
}
Modified: test/unit/test_mrn_path_mapper.cpp (+17 -0)
===================================================================
--- test/unit/test_mrn_path_mapper.cpp 2012-03-19 18:34:32 +0900 (007f988)
+++ test/unit/test_mrn_path_mapper.cpp 2012-03-19 18:34:58 +0900 (7287602)
@@ -75,5 +75,22 @@ namespace test_mrn_path_mapper {
cppcut_assert_equal("@005ftable", mapper.table_name());
}
}
+
+ namespace mysql_table_name {
+ void test_normal_table() {
+ mrn::PathMapper mapper("./db/table");
+ cppcut_assert_equal("table", mapper.mysql_table_name());
+ }
+
+ void test_temporary_table() {
+ mrn::PathMapper mapper("/tmp/mysqld.1/#sql27c5_1_0");
+ cppcut_assert_equal("#sql27c5_1_0", mapper.mysql_table_name());
+ }
+
+ void test_underscore_start_table() {
+ mrn::PathMapper mapper("./db/_table");
+ cppcut_assert_equal("_table", mapper.mysql_table_name());
+ }
+ }
}