Commit db15b919 authored by unknown's avatar unknown
Browse files

Code style fixes.

Initialize LOG_error_log before get_options to not use an uninitalized mutex in case of an error from handle_options()


mysql-test/r/lowercase_table.result:
  Changed foo database -> mysqltest
  More test cases
mysql-test/t/lowercase_table.test:
  Changed foo database -> mysqltest
  More test cases
mysys/my_getopt.c:
  Fix new code to use MySQL indentation style
sql/log.cc:
  Change to use MySQL indentation style and naming conventions
  Remove usage of strlen() and strcat()
sql/mysqld.cc:
  Initialize LOG_error_log before get_options to not use an uninitalized mutex in case of an error from handle_options()
sql/sql_base.cc:
  Added comment
sql/table.cc:
  Added #if MYSQL_VERSION_ID < 40100 to ensure code is merged correctly
parent 434d385a
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
drop table if exists t1,t2,t3,t4,T1;
drop database if exists mysqltest;
create table T1 (id int primary key, Word varchar(40) not null, Index(Word));
create table t4 (id int primary key, Word varchar(40) not null);
INSERT INTO T1 VALUES (1, 'a'), (2, 'b'), (3, 'c');
@@ -39,12 +40,22 @@ Unknown table 'T1' in field list
select count(bags.a) from t1 as Bags;
Unknown table 'bags' in field list
drop table t1;
create database foo;
use foo;
create database mysqltest;
use MYSQLTEST;
create table t1 (a int);
select FOO.t1.* from FOO.t1;
select T1.a from MYSQLTEST.T1;
a
select t1.a from MYSQLTEST.T1;
Unknown table 't1' in field list
select mysqltest.t1.* from MYSQLTEST.t1;
a
select MYSQLTEST.t1.* from MYSQLTEST.t1;
a
select MYSQLTEST.T1.* from MYSQLTEST.T1;
a
select MYSQLTEST.T1.* from T1;
a
alter table t1 rename to T1;
select FOO.t1.* from FOO.t1;
select MYSQLTEST.t1.* from MYSQLTEST.t1;
a
drop database FOO;
drop database mysqltest;
+12 −5
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
#

drop table if exists t1,t2,t3,t4,T1;
drop database if exists mysqltest;
create table T1 (id int primary key, Word varchar(40) not null, Index(Word));
create table t4 (id int primary key, Word varchar(40) not null);
INSERT INTO T1 VALUES (1, 'a'), (2, 'b'), (3, 'c');
@@ -34,10 +35,16 @@ drop table t1;
#
# Test all caps database name
#
create database foo;
use foo;
create database mysqltest;
use MYSQLTEST;
create table t1 (a int);
select FOO.t1.* from FOO.t1;
select T1.a from MYSQLTEST.T1;
--error 1109
select t1.a from MYSQLTEST.T1;
select mysqltest.t1.* from MYSQLTEST.t1;
select MYSQLTEST.t1.* from MYSQLTEST.t1;
select MYSQLTEST.T1.* from MYSQLTEST.T1;
select MYSQLTEST.T1.* from T1;
alter table t1 rename to T1;
select FOO.t1.* from FOO.t1;
drop database FOO;
select MYSQLTEST.t1.* from MYSQLTEST.t1;
drop database mysqltest;
+48 −39
Original line number Diff line number Diff line
@@ -75,7 +75,8 @@ void default_reporter( enum loglevel level, const char *format, ... )
*/

int handle_options(int *argc, char ***argv, 
		   const struct my_option *longopts, my_get_one_option get_one_option, 
		   const struct my_option *longopts,
                   my_get_one_option get_one_option, 
                   my_error_reporter reporter) 
{
  uint opt_found, argvpos= 0, length, i;
@@ -90,7 +91,8 @@ int handle_options(int *argc, char ***argv,
  (*argv)++; /*      --- || ----      */
  init_variables(longopts);

  if (! reporter) reporter = &default_reporter;
  if (! reporter)
    reporter= &default_reporter;

  for (pos= *argv, pos_end=pos+ *argc; pos != pos_end ; pos++)
  {
@@ -116,7 +118,8 @@ int handle_options(int *argc, char ***argv,
	    if (!*++pos)
	    {
	      if (my_getopt_print_errors)
		reporter( ERROR_LEVEL, "%s: Option '-O' requires an argument\n", progname );
		reporter(ERROR_LEVEL,
                         "%s: Option '-O' requires an argument\n", progname);
	      return EXIT_ARGUMENT_REQUIRED;
	    }
	    cur_arg= *pos;
@@ -132,7 +135,9 @@ int handle_options(int *argc, char ***argv,
	    if (!*cur_arg)
	    {
	      if (my_getopt_print_errors)
		reporter( ERROR_LEVEL, "%s: Option '--set-variable' requires an argument\n", progname );
		reporter(ERROR_LEVEL,
                         "%s: Option '--set-variable' requires an argument\n",
                         progname);
	      return EXIT_ARGUMENT_REQUIRED;
	    }
	  }
@@ -144,7 +149,9 @@ int handle_options(int *argc, char ***argv,
	    if (!*++pos)
	    {
	      if (my_getopt_print_errors)
	        reporter( ERROR_LEVEL, "%s: Option '--set-variable' requires an argument\n", progname );
	        reporter(ERROR_LEVEL,
                         "%s: Option '--set-variable' requires an argument\n",
                         progname);
	      return EXIT_ARGUMENT_REQUIRED;
	    }
	    cur_arg= *pos;
@@ -287,7 +294,8 @@ int handle_options(int *argc, char ***argv,
	  if (optend && optp->var_type != GET_BOOL)
	  {
	    if (my_getopt_print_errors)
	      reporter( ERROR_LEVEL, "%s: option '--%s' cannot take an argument\n",
	      reporter(ERROR_LEVEL,
                       "%s: option '--%s' cannot take an argument\n",
                       progname, optp->name);
	    return EXIT_NO_ARGUMENT_ALLOWED;
	  }
@@ -325,7 +333,8 @@ int handle_options(int *argc, char ***argv,
	  if (!*++pos)
	  {
	    if (my_getopt_print_errors)
	      reporter( ERROR_LEVEL, "%s: option '--%s' requires an argument\n",
	      reporter(ERROR_LEVEL,
                       "%s: option '--%s' requires an argument\n",
                       progname, optp->name);
	    return EXIT_ARGUMENT_REQUIRED;
	  }
+89 −82
Original line number Diff line number Diff line
@@ -43,37 +43,41 @@ static bool test_if_number(const char *str,

#ifdef __NT__
static int eventSource = 0;
void setupWindowsEventSource() 
{
	if (eventSource) return;

	eventSource = 1;
void setup_windows_event_source() 
{
  HKEY    hRegKey= NULL; 
  DWORD   dwError= 0;
  TCHAR   szPath[MAX_PATH];
  DWORD dwTypes;
    
  if (eventSource)               // Ensure that we are only called once
    return;
  eventSource= 1;

  // Create the event source registry key
  dwError= RegCreateKey(HKEY_LOCAL_MACHINE, 
                          "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\MySQL", 
                          &hRegKey);

    // Name of the PE module that contains the message resource
  /* Name of the PE module that contains the message resource */
  GetModuleFileName(NULL, szPath, MAX_PATH);

    // Register EventMessageFile
  / Register EventMessageFile */
  dwError = RegSetValueEx(hRegKey, "EventMessageFile", 0, REG_EXPAND_SZ, 
                          (PBYTE) szPath, strlen(szPath)+1);
    

    // Register supported event types
    DWORD dwTypes = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE; 
  /* Register supported event types */
  dwTypes= (EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
            EVENTLOG_INFORMATION_TYPE);
  dwError= RegSetValueEx(hRegKey, "TypesSupported", 0, REG_DWORD,
                         (LPBYTE) &dwTypes, sizeof dwTypes);

  RegCloseKey(hRegKey);
}

#endif
#endif /* __NT__ */


/****************************************************************************
@@ -1737,8 +1741,8 @@ void print_buffer_to_file( enum loglevel level, const char *buffer )
  time_t skr;
  struct tm tm_tmp;
  struct tm *start;

  DBUG_ENTER("print_buffer_to_log");
  DBUG_ENTER("print_buffer_to_file");
  DBUG_PRINT("enter",("buffer: %s", buffer));

  VOID(pthread_mutex_lock(&LOCK_error_log));

@@ -1752,13 +1756,13 @@ void print_buffer_to_file( enum loglevel level, const char *buffer )
	  start->tm_hour,
	  start->tm_min,
	  start->tm_sec,
          level == ERROR_LEVEL ? "ERROR" : level == WARNING_LEVEL ? "WARNING" : "INFORMATION",
          (level == ERROR_LEVEL ? "ERROR" : level == WARNING_LEVEL ?
           "WARNING" : "INFORMATION"),
          buffer);

  fflush(stderr);

  VOID(pthread_mutex_unlock(&LOCK_error_log));

  DBUG_VOID_RETURN;
}

@@ -1772,6 +1776,7 @@ void sql_perror(const char *message)
#endif
}


bool flush_error_log()
{
  bool result=0;
@@ -1820,52 +1825,56 @@ bool flush_error_log()


#ifdef __NT__
void print_buffer_to_nt_eventlog( enum loglevel level, char *buff, int buffLen )
void print_buffer_to_nt_eventlog(enum loglevel level, char *buff,
                                 uint length, int buffLen)
{
  HANDLE event;
  char   *buffptr;
  LPCSTR *buffmsgptr;

  DBUG_ENTER("print_buffer_to_nt_eventlog");

  buffptr= buff;
  if (strlen(buff) > (uint)(buffLen-4))
  if (length > (uint)(buffLen-4))
  {
    char *newBuff = new char[ strlen(buff) + 4 ];
    char *newBuff= new char[length + 4];
    strcpy(newBuff, buff);
    buffptr= newBuff;
  }
  strcat( buffptr, "\r\n\r\n" );
  buffmsgptr = (LPCSTR*)&buffptr;
  strmov(buffptr+length, "\r\n\r\n");
  buffmsgptr= (LPCSTR*) &buffptr;               // Keep windows happy

  setupWindowsEventSource();
  if (event = RegisterEventSource(NULL,"MySQL"))
  setup_windows_event_source();
  if ((event= RegisterEventSource(NULL,"MySQL")))
  {
    switch (level) {
      case ERROR_LEVEL:
        ReportEvent(event, EVENTLOG_ERROR_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, buffmsgptr, NULL);
        ReportEvent(event, EVENTLOG_ERROR_TYPE, 0, MSG_DEFAULT, NULL, 1, 0,
                    buffmsgptr, NULL);
        break;
      case WARNING_LEVEL:
        ReportEvent(event, EVENTLOG_WARNING_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, buffmsgptr, NULL);
        ReportEvent(event, EVENTLOG_WARNING_TYPE, 0, MSG_DEFAULT, NULL, 1, 0,
                    buffmsgptr, NULL);
        break;
      case INFORMATION_LEVEL:
        ReportEvent(event, EVENTLOG_INFORMATION_TYPE, 0, MSG_DEFAULT, NULL, 1, 0, buffmsgptr, NULL);
        ReportEvent(event, EVENTLOG_INFORMATION_TYPE, 0, MSG_DEFAULT, NULL, 1,
                    0, buffmsgptr, NULL);
        break;
    }
    DeregisterEventSource(event);
  }

  // if we created a string buffer, then delete it
  /* if we created a string buffer, then delete it */
  if (buffptr != buff)
    delete[] buffptr;


  DBUG_VOID_RETURN;
}
#endif
#endif /* __NT__ */


/*
  Prints a printf style message to the error log and, under NT, to the Windows event log.
  Prints a printf style message to the error log and, under NT, to the
  Windows event log.

  SYNOPSIS
    vprint_msg_to_log()
@@ -1876,28 +1885,24 @@ void print_buffer_to_nt_eventlog( enum loglevel level, char *buff, int buffLen )
  NOTE

  IMPLEMENTATION
    This function prints the message into a buffer and then sends that buffer to other
    functions to write that message to other logging sources.
    This function prints the message into a buffer and then sends that buffer
    to other functions to write that message to other logging sources.

  RETURN VALUES
    void
*/

void vprint_msg_to_log(enum loglevel level, const char *format, va_list args)
{
  char   buff[1024];

  uint length;
  DBUG_ENTER("vprint_msg_to_log");

  my_vsnprintf( buff, sizeof(buff)-5, format, args );

  length= my_vsnprintf(buff, sizeof(buff)-5, format, args);
  print_buffer_to_file(level, buff);

#ifndef DBUG_OFF
    DBUG_PRINT("error",("%s",buff));
#endif

#ifdef __NT__
  print_buffer_to_nt_eventlog( level, buff, sizeof(buff) );
  print_buffer_to_nt_eventlog(level, buff, length, sizeof(buff));
#endif

  DBUG_VOID_RETURN;
@@ -1906,9 +1911,9 @@ void vprint_msg_to_log(enum loglevel level, const char *format, va_list args)

void sql_print_error(const char *format, ...) 
{
  va_list args;
  DBUG_ENTER("sql_print_error");

  va_list args;
  va_start(args, format);
  vprint_msg_to_log(ERROR_LEVEL, format, args);
  va_end(args);
@@ -1916,11 +1921,12 @@ void sql_print_error( const char *format, ... )
  DBUG_VOID_RETURN;
}


void sql_print_warning(const char *format, ...) 
{
  va_list args;
  DBUG_ENTER("sql_print_warning");

  va_list args;
  va_start(args, format);
  vprint_msg_to_log(WARNING_LEVEL, format, args);
  va_end(args);
@@ -1928,11 +1934,12 @@ void sql_print_warning( const char *format, ... )
  DBUG_VOID_RETURN;
}


void sql_print_information(const char *format, ...) 
{
  va_list args;
  DBUG_ENTER("sql_print_information");

  va_list args;
  va_start(args, format);
  vprint_msg_to_log(INFORMATION_LEVEL, format, args);
  va_end(args);
+13 −7
Original line number Diff line number Diff line
@@ -2247,6 +2247,10 @@ int main(int argc, char **argv)
  if (!opt_mysql_tmpdir || !opt_mysql_tmpdir[0])
    opt_mysql_tmpdir=(char*) P_tmpdir;		/* purecov: inspected */

  /* needed by get_options */

  (void) pthread_mutex_init(&LOCK_error_log,MY_MUTEX_INIT_FAST);

  set_options();
  get_options(argc,argv);
  set_server_version();
@@ -2263,7 +2267,6 @@ int main(int argc, char **argv)
  (void) pthread_mutex_init(&LOCK_thread_count,MY_MUTEX_INIT_FAST);
  (void) pthread_mutex_init(&LOCK_mapped_file,MY_MUTEX_INIT_SLOW);
  (void) pthread_mutex_init(&LOCK_status,MY_MUTEX_INIT_FAST);
  (void) pthread_mutex_init(&LOCK_error_log,MY_MUTEX_INIT_FAST);
  (void) pthread_mutex_init(&LOCK_delayed_insert,MY_MUTEX_INIT_FAST);
  (void) pthread_mutex_init(&LOCK_delayed_status,MY_MUTEX_INIT_FAST);
  (void) pthread_mutex_init(&LOCK_delayed_create,MY_MUTEX_INIT_SLOW);
@@ -5100,7 +5103,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
  }
  return 0;
}
	/* Initiates DEBUG - but no debugging here ! */


void option_error_reporter(enum loglevel level, const char *format, ...)
{
@@ -5110,11 +5113,14 @@ void option_error_reporter( enum loglevel level, const char *format, ... )
  va_end(args);
}

	/* Initiates DEBUG - but no debugging here ! */

static void get_options(int argc,char **argv)
{
  int ho_error;

  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option, option_error_reporter )))
  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option,
                               option_error_reporter)))
    exit(ho_error);

#if defined(HAVE_BROKEN_REALPATH)
Loading