#At file:///home/msvensson/mysql/bug44685/ based on revid:magnus.blaudd@strippedutud769riduxygd
2958 Magnus Blåudd 2009-05-18
BUG#44685 ndb_config --xml does not give all section variants
- part 1
- add primarykeys tag
- small reorg
modified:
storage/ndb/src/mgmsrv/ConfigInfo.cpp
storage/ndb/src/mgmsrv/ConfigInfo.hpp
=== modified file 'storage/ndb/src/mgmsrv/ConfigInfo.cpp'
--- a/storage/ndb/src/mgmsrv/ConfigInfo.cpp 2009-03-20 08:25:46 +0000
+++ b/storage/ndb/src/mgmsrv/ConfigInfo.cpp 2009-05-18 08:02:33 +0000
@@ -55,14 +55,62 @@ extern my_bool opt_core;
#define API_TOKEN "API"
#ifndef NDB_MGMAPI
-const ConfigInfo::AliasPair
-ConfigInfo::m_sectionNameAliases[]={
+
+struct AliasPair{
+ const char * name;
+ const char * alias;
+};
+
+const AliasPair
+sectionNameAliases[]={
{API_TOKEN, "MYSQLD"},
{DB_TOKEN, "NDBD"},
{MGM_TOKEN, "NDB_MGMD"},
{0, 0}
};
+static const char*
+nameToAlias(const char * name) {
+ for (int i = 0; sectionNameAliases[i].name != 0; i++)
+ if(!strcasecmp(name, sectionNameAliases[i].name))
+ return sectionNameAliases[i].alias;
+ return 0;
+}
+
+static const char*
+getAlias(const char * section) {
+ for (int i = 0; sectionNameAliases[i].name != 0; i++)
+ if(!strcasecmp(section, sectionNameAliases[i].alias))
+ return sectionNameAliases[i].name;
+ return 0;
+}
+
+const char*
+ConfigInfo::getAlias(const char * section) {
+ return getAlias(section);
+}
+
+
+const AliasPair
+section2PrimaryKeys[]={
+ {API_TOKEN, "NodeId"},
+ {DB_TOKEN, "NodeId"},
+ {MGM_TOKEN, "NodeId"},
+ {"TCP", "NodeId1,NodeId2"},
+ {"SCI", "NodeId1,NodeId2"},
+ {"SHM", "NodeId1,NodeId2"},
+ {0, 0}
+};
+
+static const char*
+sectionPrimaryKeys(const char * name) {
+ for (int i = 0; section2PrimaryKeys[i].name != 0; i++)
+ if(!strcasecmp(name, section2PrimaryKeys[i].name))
+ return section2PrimaryKeys[i].alias;
+ return 0;
+}
+
+
const char*
ConfigInfo::m_sectionNames[]={
"SYSTEM",
@@ -2839,22 +2887,6 @@ ConfigInfo::isSection(const char * secti
return false;
}
-const char*
-ConfigInfo::nameToAlias(const char * name) {
- for (int i = 0; m_sectionNameAliases[i].name != 0; i++)
- if(!strcasecmp(name, m_sectionNameAliases[i].name))
- return m_sectionNameAliases[i].alias;
- return 0;
-}
-
-const char*
-ConfigInfo::getAlias(const char * section) {
- for (int i = 0; m_sectionNameAliases[i].name != 0; i++)
- if(!strcasecmp(section, m_sectionNameAliases[i].alias))
- return m_sectionNameAliases[i].name;
- return 0;
-}
-
bool
ConfigInfo::verify(const Properties * section, const char* fname,
Uint64 value) const {
@@ -2897,7 +2929,8 @@ public:
virtual void start() {}
virtual void end() {}
- virtual void section_start(const char* name, const char* alias) {}
+ virtual void section_start(const char* name, const char* alias,
+ const char* primarykeys = NULL) {}
virtual void section_end(const char* name) {}
virtual void parameter(const char* section_name,
@@ -2912,7 +2945,8 @@ public:
PrettyPrinter(FILE* out = stdout) : ConfigPrinter(out) {}
virtual ~PrettyPrinter() {}
- virtual void section_start(const char* name, const char* alias) {
+ virtual void section_start(const char* name, const char* alias,
+ const char* primarykeys = NULL) {
fprintf(m_out, "****** %s ******\n\n", name);
}
@@ -3021,9 +3055,12 @@ public:
print_xml("/configvariables", pairs, false);
}
- virtual void section_start(const char* name, const char* alias) {
+ virtual void section_start(const char* name, const char* alias,
+ const char* primarykeys = NULL) {
Properties pairs;
pairs.put("name", alias ? alias : name);
+ if (primarykeys)
+ pairs.put("primarykeys", primarykeys);
print_xml("section", pairs, false);
m_indent++;
}
@@ -3129,7 +3166,7 @@ void ConfigInfo::print_impl(const char*
if (is_internal_section(sec))
continue; // Skip whole section
- printer.section_start(s, nameToAlias(s));
+ printer.section_start(s, nameToAlias(s), sectionPrimaryKeys(s));
/* Iterate through all parameters in section */
Properties::Iterator it(sec);
@@ -4058,7 +4095,7 @@ saveInConfigValues(InitConfigFileParser:
if (g_print_full_config)
{
- const char *alias= ConfigInfo::nameToAlias(ctx.fname);
+ const char *alias= nameToAlias(ctx.fname);
printf("[%s]\n", alias ? alias : ctx.fname);
}
=== modified file 'storage/ndb/src/mgmsrv/ConfigInfo.hpp'
--- a/storage/ndb/src/mgmsrv/ConfigInfo.hpp 2009-03-20 08:25:46 +0000
+++ b/storage/ndb/src/mgmsrv/ConfigInfo.hpp 2009-05-18 08:02:33 +0000
@@ -66,11 +66,6 @@ public:
};
#ifndef NDB_MGMAPI
- struct AliasPair{
- const char * name;
- const char * alias;
- };
-
/**
* Entry for one section rule
*/
@@ -110,7 +105,6 @@ public:
* @note Result is not defined if section/name are wrong!
*/
bool verify(const Properties* secti, const char* fname, Uint64 value) const;
- static const char* nameToAlias(const char*);
static const char* getAlias(const char*);
bool isSection(const char*) const;
@@ -138,7 +132,6 @@ private:
Properties m_info;
Properties m_systemDefaults;
- static const AliasPair m_sectionNameAliases[];
static const char* m_sectionNames[];
static const int m_noOfSectionNames;
#endif /* NDB_MGMAPI */
Attachment: [text/bzr-bundle] bzr/magnus.blaudd@sun.com-20090518080233-idy7srejcd00mfnw.bundle
| Thread |
|---|
| • bzr commit into mysql-5.1-telco-6.3 branch (magnus.blaudd:2958)Bug#44685 | Magnus Blåudd | 18 May |