List:Commits« Previous MessageNext Message »
From:Magnus Blåudd Date:May 18 2009 8:02am
Subject:bzr commit into mysql-5.1-telco-6.3 branch (magnus.blaudd:2958)
Bug#44685
View as plain text  
#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#44685Magnus Blåudd18 May