Commit 5f74f8d5 authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-4.1/

into serg.mylan:/usr/home/serg/Abk/mysql-4.1


sql/mysql_priv.h:
  Auto merged
parents adf4e7a8 c95b0115
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -154,6 +154,7 @@ ram@gw.udmsearch.izhnet.ru
ram@mysql.r18.ru
ram@ram.(none)
ranger@regul.home.lan
rburnett@build.mysql.com
root@home.(none)
root@x3.internalnet
salle@banica.(none)
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
C_MODE_START

extern ulonglong log_10_int[20];
extern uchar days_in_month[];

/*
  Portable time_t replacement.
+1 −2
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ DataMemory: CHOOSE_DataMemory
IndexMemory: CHOOSE_IndexMemory
Diskless: CHOOSE_Diskless
TimeBetweenWatchDogCheck: 30000
FileSystemPath: CHOOSE_FILESYSTEM

[COMPUTER]
Id: 1
@@ -16,11 +17,9 @@ HostName: CHOOSE_HOSTNAME_2

[DB]
ExecuteOnComputer: 1
FileSystemPath: CHOOSE_FILESYSTEM_NODE_1

[DB]
ExecuteOnComputer: 2
FileSystemPath: CHOOSE_FILESYSTEM_NODE_2

[MGM]
PortNumber: CHOOSE_PORT_MGM
+27 −32
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ while test $# -gt 0; do
     stop_ndb=1
     ;;
    --initial)
     flags_ndb=$flags_ndb" -i"
     flags_ndb="$flags_ndb -i"
     initial_ndb=1
     ;;
    --status)
@@ -81,20 +81,18 @@ while test $# -gt 0; do
  shift
done

fs_ndb=$fsdir/ndbcluster-$port_base
fs_name_1=$fs_ndb/node-1-fs
fs_name_2=$fs_ndb/node-2-fs
fs_ndb="$fsdir/ndbcluster-$port_base"

NDB_HOME=
if [ ! -x $fsdir ]; then
if [ ! -x "$fsdir" ]; then
  echo "$fsdir missing"
  exit 1
fi
if [ ! -x $exec_ndb ]; then
if [ ! -x "$exec_ndb" ]; then
  echo "$exec_ndb missing"
  exit 1
fi
if [ ! -x $exec_mgmtsrvr ]; then
if [ ! -x "$exec_mgmtsrvr" ]; then
  echo "$exec_mgmtsrvr missing"
  exit 1
fi
@@ -108,12 +106,10 @@ start_default_ndbcluster() {

# do some checks

if [ $initial_ndb ] ; then
  [ -d $fs_ndb ] || mkdir $fs_ndb
  [ -d $fs_name_1 ] || mkdir $fs_name_1
  [ -d $fs_name_2 ] || mkdir $fs_name_2
if [ "$initial_ndb" ] ; then
  [ -d "$fs_ndb" ] || mkdir "$fs_ndb"
fi
if [ -d "$fs_ndb" -a -d "$fs_name_1" -a -d "$fs_name_2" ]; then :; else
if [ -d "$fs_ndb" ]; then :; else
  echo "$fs_ndb filesystem directory does not exist"
  exit 1
fi
@@ -128,42 +124,41 @@ port_transporter=`expr $ndb_mgmd_port + 2`

if [ $initial_ndb ] ; then
sed \
    -e s,"CHOOSE_MaxNoOfConcurrentOperations",$ndb_con_op,g \
    -e s,"CHOOSE_DataMemory",$ndb_dmem,g \
    -e s,"CHOOSE_IndexMemory",$ndb_imem,g \
    -e s,"CHOOSE_Diskless",$ndb_diskless,g \
    -e s,"CHOOSE_MaxNoOfConcurrentOperations","$ndb_con_op",g \
    -e s,"CHOOSE_DataMemory","$ndb_dmem",g \
    -e s,"CHOOSE_IndexMemory","$ndb_imem",g \
    -e s,"CHOOSE_Diskless","$ndb_diskless",g \
    -e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \
    -e s,"CHOOSE_FILESYSTEM_NODE_1","$fs_name_1",g \
    -e s,"CHOOSE_FILESYSTEM_NODE_2","$fs_name_2",g \
    -e s,"CHOOSE_PORT_MGM",$ndb_mgmd_port,g \
    -e s,"CHOOSE_PORT_TRANSPORTER",$port_transporter,g \
    -e s,"CHOOSE_FILESYSTEM","$fs_ndb",g \
    -e s,"CHOOSE_PORT_MGM","$ndb_mgmd_port",g \
    -e s,"CHOOSE_PORT_TRANSPORTER","$port_transporter",g \
    < ndb/ndb_config_2_node.ini \
    > "$fs_ndb/config.ini"
fi

rm -f $cfgfile 2>&1 | cat > /dev/null
rm -f $fs_ndb/$cfgfile 2>&1 | cat > /dev/null
rm -f "$cfgfile" 2>&1 | cat > /dev/null
rm -f "$fs_ndb/$cfgfile" 2>&1 | cat > /dev/null

if ( cd $fs_ndb ; $exec_mgmtsrvr -d -c config.ini ) ; then :; else
if ( cd "$fs_ndb" ; $exec_mgmtsrvr -d -c config.ini ) ; then :; else
  echo "Unable to start $exec_mgmtsrvr from `pwd`"
  exit 1
fi

cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"

# Start database node 

echo "Starting ndbd"
( cd $fs_ndb ; $exec_ndb -d $flags_ndb & )
( cd "$fs_ndb" ; $exec_ndb -d $flags_ndb & )

cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"

# Start database node 

echo "Starting ndbd"
( cd $fs_ndb ; $exec_ndb -d $flags_ndb & )
( cd "$fs_ndb" ; $exec_ndb -d $flags_ndb & )

cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
cat `find "$fs_ndb" -name 'ndb_*.pid'` > "$fs_ndb/$pidfile"

# test if Ndb Cluster starts properly

@@ -173,7 +168,7 @@ if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK"; then :; else
  exit 1
fi

cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
cat `find "$fs_ndb" -name 'ndb_*.pid'` > $fs_ndb/$pidfile

status_ndbcluster
}
@@ -200,9 +195,9 @@ exec_mgmtclient="$exec_mgmtclient --try-reconnect=1"

echo "all stop" | $exec_mgmtclient 2>&1 | cat > /dev/null

if [ -f $fs_ndb/$pidfile ] ; then
  kill -9 `cat $fs_ndb/$pidfile` 2> /dev/null
  rm $fs_ndb/$pidfile
if [ -f "$fs_ndb/$pidfile" ] ; then
  kill -9 `cat "$fs_ndb/$pidfile"` 2> /dev/null
  rm "$fs_ndb/$pidfile"
fi

}
+78 −50
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#include <NdbTCP.h>
#include "ConfigInfo.hpp"
#include <mgmapi_config_parameters.h>
#include <ndb_limits.h>
@@ -48,24 +49,25 @@ sizeof(m_sectionNames)/sizeof(char*);
/****************************************************************************
 * Section Rules declarations
 ****************************************************************************/
bool transformComputer(InitConfigFileParser::Context & ctx, const char *);
bool transformSystem(InitConfigFileParser::Context & ctx, const char *);
bool transformExternalSystem(InitConfigFileParser::Context & ctx, const char *);
bool transformNode(InitConfigFileParser::Context & ctx, const char *);
bool transformExtNode(InitConfigFileParser::Context & ctx, const char *);
bool transformConnection(InitConfigFileParser::Context & ctx, const char *);
bool applyDefaultValues(InitConfigFileParser::Context & ctx, const char *);
bool checkMandatory(InitConfigFileParser::Context & ctx, const char *);
bool fixPortNumber(InitConfigFileParser::Context & ctx, const char *);
bool fixShmkey(InitConfigFileParser::Context & ctx, const char *);
bool checkDbConstraints(InitConfigFileParser::Context & ctx, const char *);
bool checkConnectionConstraints(InitConfigFileParser::Context &, const char *);
bool fixNodeHostname(InitConfigFileParser::Context & ctx, const char * data);
bool fixHostname(InitConfigFileParser::Context & ctx, const char * data);
bool fixNodeId(InitConfigFileParser::Context & ctx, const char * data);
bool fixExtConnection(InitConfigFileParser::Context & ctx, const char * data);
bool fixDepricated(InitConfigFileParser::Context & ctx, const char *);
bool saveInConfigValues(InitConfigFileParser::Context & ctx, const char *);
static bool transformComputer(InitConfigFileParser::Context & ctx, const char *);
static bool transformSystem(InitConfigFileParser::Context & ctx, const char *);
static bool transformExternalSystem(InitConfigFileParser::Context & ctx, const char *);
static bool transformNode(InitConfigFileParser::Context & ctx, const char *);
static bool transformExtNode(InitConfigFileParser::Context & ctx, const char *);
static bool transformConnection(InitConfigFileParser::Context & ctx, const char *);
static bool applyDefaultValues(InitConfigFileParser::Context & ctx, const char *);
static bool checkMandatory(InitConfigFileParser::Context & ctx, const char *);
static bool fixPortNumber(InitConfigFileParser::Context & ctx, const char *);
static bool fixShmkey(InitConfigFileParser::Context & ctx, const char *);
static bool checkDbConstraints(InitConfigFileParser::Context & ctx, const char *);
static bool checkConnectionConstraints(InitConfigFileParser::Context &, const char *);
static bool checkTCPConstraints(InitConfigFileParser::Context &, const char *);
static bool fixNodeHostname(InitConfigFileParser::Context & ctx, const char * data);
static bool fixHostname(InitConfigFileParser::Context & ctx, const char * data);
static bool fixNodeId(InitConfigFileParser::Context & ctx, const char * data);
static bool fixExtConnection(InitConfigFileParser::Context & ctx, const char * data);
static bool fixDepricated(InitConfigFileParser::Context & ctx, const char *);
static bool saveInConfigValues(InitConfigFileParser::Context & ctx, const char *);

const ConfigInfo::SectionRule 
ConfigInfo::m_SectionRules[] = {
@@ -130,6 +132,8 @@ ConfigInfo::m_SectionRules[] = {
  { "SCI",  checkConnectionConstraints, 0 },
  { "OSE",  checkConnectionConstraints, 0 },

  { "TCP",  checkTCPConstraints, "HostName1" },
  { "TCP",  checkTCPConstraints, "HostName2" },
  
  { "*",    checkMandatory, 0 },
  
@@ -148,13 +152,13 @@ const int ConfigInfo::m_NoOfRules = sizeof(m_SectionRules)/sizeof(SectionRule);
/****************************************************************************
 * Config Rules declarations
 ****************************************************************************/
bool add_node_connections(Vector<ConfigInfo::ConfigRuleSection>&sections, 
static bool add_node_connections(Vector<ConfigInfo::ConfigRuleSection>&sections, 
			  struct InitConfigFileParser::Context &ctx, 
			  const char * rule_data);
bool add_server_ports(Vector<ConfigInfo::ConfigRuleSection>&sections, 
static bool add_server_ports(Vector<ConfigInfo::ConfigRuleSection>&sections, 
		      struct InitConfigFileParser::Context &ctx, 
		      const char * rule_data);
bool check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>&sections, 
static bool check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>&sections, 
			    struct InitConfigFileParser::Context &ctx, 
			    const char * rule_data);

@@ -812,7 +816,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
    1},

  {
    CFG_DB_DISCLESS,
    KEY_INTERNAL,
    "Discless",
    "DB",
    "Diskless",
@@ -2219,22 +2223,13 @@ fixNodeHostname(InitConfigFileParser::Context & ctx, const char * data){
    require(ctx.m_currentSection->put("HostName", ""));

    const char * type;
    if(ctx.m_currentSection->get("Type", &type) &&
       strcmp(type,"DB") == 0) 
    {
    if(ctx.m_currentSection->get("Type", &type) && strcmp(type,"DB") == 0) {
      ctx.reportError("Parameter \"ExecuteOnComputer\" missing from DB section"
		      " [%s] starting at line: %d",
		      ctx.fname, ctx.m_sectionLineno);
      return false;
    }

    return true;
#if 0
    ctx.reportError("Parameter \"ExecuteOnComputer\" missing from section "
		    "[%s] starting at line: %d",
		    ctx.fname, ctx.m_sectionLineno);
    return false;
#endif
  }
  
  const Properties * computer;
@@ -2362,6 +2357,22 @@ transformComputer(InitConfigFileParser::Context & ctx, const char * data){
  ctx.m_userProperties.get("NoOfComputers", &computers);
  ctx.m_userProperties.put("NoOfComputers", ++computers, true);
  
  const char * hostname = 0;
  ctx.m_currentSection->get("HostName", &hostname);
  if(!hostname){
    return true;
  }
  
  if(!strcmp(hostname, "localhost") || !strcmp(hostname, "127.0.0.1")){
    if(ctx.m_userProperties.get("$computer-localhost", &hostname)){
      ctx.reportError("Mixing of localhost with other hostname(%s) is illegal",
		      hostname);
      return false;
    }
  } else {
    ctx.m_userProperties.put("$computer-localhost", hostname);
  }
  
  return true;
}

@@ -2449,7 +2460,7 @@ checkMandatory(InitConfigFileParser::Context & ctx, const char * data){
 * Transform a string "NodeidX" (e.g. "uppsala.32") 
 * into a Uint32 "NodeIdX" (e.g. 32) and a string "SystemX" (e.g. "uppsala").
 */
bool fixNodeId(InitConfigFileParser::Context & ctx, const char * data)
static bool fixNodeId(InitConfigFileParser::Context & ctx, const char * data)
{
  char buf[] = "NodeIdX";  buf[6] = data[sizeof("NodeI")];
  char sysbuf[] = "SystemX";  sysbuf[6] = data[sizeof("NodeI")];
@@ -2485,7 +2496,7 @@ bool fixNodeId(InitConfigFileParser::Context & ctx, const char * data)
 * - name of external system in parameter extSystemName, and 
 * - nodeId of external node in parameter extSystemNodeId.
 */
bool 
static bool 
isExtConnection(InitConfigFileParser::Context & ctx, 
		const char **extSystemName, Uint32 * extSystemNodeId){

@@ -2513,7 +2524,7 @@ isExtConnection(InitConfigFileParser::Context & ctx,
 * If connection is to an external system, then move connection into
 * external system configuration (i.e. a sub-property).
 */
bool
static bool
fixExtConnection(InitConfigFileParser::Context & ctx, const char * data){

  const char * extSystemName;
@@ -2568,7 +2579,7 @@ fixExtConnection(InitConfigFileParser::Context & ctx, const char * data){
 * -# Via Node's ExecuteOnComputer lookup Hostname
 * -# Add HostName to Connection
 */
bool
static bool
fixHostname(InitConfigFileParser::Context & ctx, const char * data){
  
  char buf[] = "NodeIdX"; buf[6] = data[sizeof("HostNam")];
@@ -2591,7 +2602,7 @@ fixHostname(InitConfigFileParser::Context & ctx, const char * data){
/**
 * Connection rule: Fix port number (using a port number adder)
 */
bool
static bool
fixPortNumber(InitConfigFileParser::Context & ctx, const char * data){

  Uint32 id1= 0, id2= 0;
@@ -2645,7 +2656,7 @@ fixPortNumber(InitConfigFileParser::Context & ctx, const char * data){
/**
 * DB Node rule: Check various constraints
 */
bool
static bool
checkDbConstraints(InitConfigFileParser::Context & ctx, const char *){

  Uint32 t1 = 0, t2 = 0;
@@ -2678,7 +2689,7 @@ checkDbConstraints(InitConfigFileParser::Context & ctx, const char *){
/**
 * Connection rule: Check varius constraints
 */
bool
static bool
checkConnectionConstraints(InitConfigFileParser::Context & ctx, const char *){

  Uint32 id1 = 0, id2 = 0;
@@ -2734,6 +2745,22 @@ checkConnectionConstraints(InitConfigFileParser::Context & ctx, const char *){
		    ctx.fname, ctx.m_sectionLineno);
    return false;
  }

  return true;
}

static bool
checkTCPConstraints(InitConfigFileParser::Context & ctx, const char * data){
  
  const char * host;
  struct in_addr addr;
  if(ctx.m_currentSection->get(data, &host) && strlen(host) && 
     Ndb_getInAddr(&addr, host)){
    ctx.reportError("Unable to lookup/illegal hostname %s"
		    " - [%s] starting at line: %d",
		    host, ctx.fname, ctx.m_sectionLineno);
    return false;
  }
  return true;
}

@@ -2777,15 +2804,15 @@ transform(InitConfigFileParser::Context & ctx,
    return false;
  }

  if(newType == ConfigInfo::INT){
  if(newType == ConfigInfo::INT || newType == ConfigInfo::BOOL){
    require(dst.put(newName, (Uint32)newVal));
  } else {
  } else if(newType == ConfigInfo::INT64) {
    require(dst.put64(newName, newVal));    
  }
  return true;
}

bool
static bool
fixDepricated(InitConfigFileParser::Context & ctx, const char * data){
  const char * name;
  /**
@@ -2845,7 +2872,7 @@ fixDepricated(InitConfigFileParser::Context & ctx, const char * data){
  return true;
}

bool
static bool
saveInConfigValues(InitConfigFileParser::Context & ctx, const char * data){
  const Properties * sec;
  if(!ctx.m_currentInfo->get(ctx.fname, &sec)){
@@ -2910,13 +2937,14 @@ saveInConfigValues(InitConfigFileParser::Context & ctx, const char * data){
      default:
	abort();
      }
      require(ok);
    }
    ctx.m_configValues.closeSection();
  } while(0);
  return true;
}

bool
static bool
add_node_connections(Vector<ConfigInfo::ConfigRuleSection>&sections, 
		   struct InitConfigFileParser::Context &ctx, 
		   const char * rule_data)
@@ -3003,7 +3031,7 @@ add_node_connections(Vector<ConfigInfo::ConfigRuleSection>&sections,
}


bool add_server_ports(Vector<ConfigInfo::ConfigRuleSection>&sections, 
static bool add_server_ports(Vector<ConfigInfo::ConfigRuleSection>&sections, 
		      struct InitConfigFileParser::Context &ctx, 
		      const char * rule_data)
{
@@ -3042,7 +3070,7 @@ bool add_server_ports(Vector<ConfigInfo::ConfigRuleSection>&sections,
  return true;
}

bool
static bool
check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>&sections, 
		       struct InitConfigFileParser::Context &ctx, 
		       const char * rule_data)
Loading