Commit 85a590a2 authored by unknown's avatar unknown
Browse files

Added --debug-info to most clients to detect memory leaks in mysql-test-run

Moved .progress files into the log directory
Moved 'cluster' database tables into the MySQL database, to not have 'cluster' beeing a reserved database name
Fixed bug where mysqld got a core dump when trying to use a table created by MySQL 3.23
Fixed some compiler warnings
Fixed small memory leak in libmysql
Note that this doesn't changeset doesn't include the new mysqldump.c code required to run some tests. This will be added when I merge 5.0 to 5.1


client/client_priv.h:
  Added OPT_DEBUG_INFO and OPT_COLUMN_TYPES
client/mysql.cc:
  Split --debug-info into --debug-info and --column-type-info
client/mysql_upgrade.c:
  Give only error info at end if using --debug-info
client/mysqladmin.cc:
  Added --debug-info to detect memory leaks in mysqltest
client/mysqlbinlog.cc:
  Added --debug-info to detect memory leaks in mysqltest
client/mysqlcheck.c:
  Added --debug-info to detect memory leaks in mysqltest
client/mysqlimport.c:
  Added --debug-info to detect memory leaks in mysqltest
client/mysqlshow.c:
  Added --debug-info to detect memory leaks in mysqltest
client/mysqltest.c:
  Added --debug-info to detect memory leaks in mysqltest
  Added option --logdir to force .progress files in a specific directory
libmysql/libmysql.c:
  Fixed memory leak
mysql-test/include/ndb_setup_slave.inc:
  Moved cluster tables under 'mysql'
mysql-test/include/query_cache.inc:
  Added more tests for query cache
mysql-test/lib/init_db.sql:
  Move cluster.binlog_index -> mysql.binlog_index
mysql-test/lib/mtr_report.pl:
  Find memory leaks
mysql-test/mysql-test-run-shell.sh:
  Added --debug-info to programs to detect memory leaks
mysql-test/mysql-test-run.pl:
  Added --debug-info to programs to detect memory leaks
  Force log files to var/log
  cluster tables moved under 'mysql'
mysql-test/r/cache_innodb.result:
  New query cache test with innodb
mysql-test/r/connect.result:
  binlog_index is now in mysql
mysql-test/r/drop.result:
  Removed 'cluster' database
mysql-test/r/information_schema.result:
  Removed 'cluster' database
mysql-test/r/mysqlcheck.result:
  cluster.binlog_index -> mysql.binlog_index
mysql-test/r/ndb_binlog_basic.result:
  cluster.binlog_index -> mysql.binlog_index
mysql-test/r/ndb_binlog_ddl_multi.result:
  cluster -> mysql
mysql-test/r/ndb_binlog_discover.result:
  cluster -> mysql
mysql-test/r/ndb_binlog_multi.result:
  cluster -> mysql
mysql-test/r/ndb_restore_compat.result:
  cluster -> mysql
mysql-test/r/ps_1general.result:
  Removed cluster database
mysql-test/r/rpl_create_database.result:
  Removed cluster database
mysql-test/r/rpl_load_from_master.result:
  Removed cluster database
mysql-test/r/rpl_loaddata_m.result:
  Removed cluster database
mysql-test/r/rpl_ndb_bank.result:
  cluster -> mysql
mysql-test/r/rpl_ndb_dd_advance.result:
  cluster -> mysql
mysql-test/r/rpl_ndb_dd_basic.result:
  cluster -> mysql
mysql-test/r/rpl_ndb_idempotent.result:
  cluster -> mysql
mysql-test/r/rpl_ndb_log.result:
  cluster -> mysql
mysql-test/r/rpl_ndb_multi.result:
  cluster -> mysql
mysql-test/r/rpl_ndb_sync.result:
  cluster -> mysql
mysql-test/r/rpl_row_basic_11bugs.result:
  Removed cluster database
mysql-test/r/rpl_truncate_7ndb.result:
  Position have changed
mysql-test/r/rpl_truncate_7ndb_2.result:
  cluster -> mysql
mysql-test/r/schema.result:
  Removed cluster database
mysql-test/r/show_check.result:
  Removed cluster database
mysql-test/r/system_mysql_db.result:
  binlog_index moved under mysql
mysql-test/r/upgrade.result:
  More tests
mysql-test/t/information_schema.test:
  cluster -> mysql
mysql-test/t/mysqldump.test:
  More test to detect memory leaks
mysql-test/t/ndb_binlog_basic.test:
  cluster -> mysql
mysql-test/t/ndb_binlog_multi.test:
  cluster -> mysql
mysql-test/t/ndb_restore_compat.test:
  cluster -> mysql
mysql-test/t/rpl_ndb_bank.test:
  cluster -> mysql
mysql-test/t/rpl_ndb_dd_advance.test:
  cluster -> mysql
mysql-test/t/rpl_ndb_idempotent.test:
  cluster -> mysql
mysql-test/t/rpl_ndb_multi.test:
  cluster -> mysql
mysql-test/t/rpl_ndb_sync.test:
  cluster -> mysql
mysql-test/t/system_mysql_db_fix.test:
  Drop also binlog_index
mysql-test/t/upgrade.test:
  Check that tables created with 3.23 works
mysys/my_error.c:
  Remove all registered errors (to avoid memory leaks)
mysys/my_init.c:
  call my_error_unregister_all() to avoid some possible memory leaks
mysys/mysys_priv.h:
  Added prototype
scripts/mysql_create_system_tables.sh:
  cluster -> mysql
scripts/mysql_fix_privilege_tables.sql:
  Changed -- to #
  Create binlog_index table if it dosesn't exist
sql/field.cc:
  Made offset() inline
sql/field.h:
  Changed prototype of offset() to not make it depending on TABLE structure
sql/field_conv.cc:
  Removed some usage of current_thd
sql/ha_ndbcluster_tables.h:
  cluster -> mysql
sql/item_sum.cc:
  Usage of new 'offset' parameters
sql/key.cc:
  Changed 'find_ref_key' to not be dependent on field->table
  (This fixed a crash when using a table created in MySQL 3.23)
sql/mysql_priv.h:
  Changed find_ref_key() to not use field->table
sql/mysqld.cc:
  Fix that plugin_init() works properly on bootstrap
  (Previously we got warnings from plugin_init)
sql/sql_class.cc:
  new 'field->offset()'
sql/sql_select.cc:
  New field->offset()
sql/table.cc:
  We don't need field->table to be set in find_ref_key() or find_field() anymore.
storage/archive/ha_archive.cc:
  New field->offset()
storage/federated/ha_federated.cc:
  New field->offset()
storage/innobase/handler/ha_innodb.cc:
  Fixed compiler warnings
storage/myisam/ha_myisam.cc:
  Fixed compiler warnings (Wrong paramter to sprintf())
  New field->offset()
storage/myisam/ha_myisam.h:
  Fixed wrong type of table_flags
storage/ndb/tools/restore/Restore.cpp:
  Fixed compiler warning
mysql-test/r/1st.result:
  New BitKeeper file ``mysql-test/r/1st.result''
mysql-test/std_data/old_table-323.frm:
  New BitKeeper file ``mysql-test/std_data/old_table-323.frm''
mysql-test/t/1st.test:
  New BitKeeper file ``mysql-test/t/1st.test''
parent a316aebc
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -58,5 +58,6 @@ enum options_client
  OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE,
  OPT_TZ_UTC, OPT_AUTO_CLOSE, OPT_CREATE_SLAP_SCHEMA,
  OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
  OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT
  OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
  OPT_DEBUG_INFO, OPT_COLUMN_TYPES
};
+14 −9
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@
#include <locale.h>
#endif

const char *VER= "14.12";
const char *VER= "14.13";

/* Don't try to make a nice table if the data is too big */
#define MAX_COLUMN_LENGTH	     1024
@@ -140,6 +140,7 @@ static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
	       default_charset_used= 0, opt_secure_auth= 0,
               default_pager_set= 0, opt_sigint_ignore= 0,
               show_warnings= 0, executing_query= 0, interrupted_query= 0;
static my_bool column_types_flag;
static ulong opt_max_allowed_packet, opt_net_buffer_length;
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
static my_string opt_mysql_unix_port=0;
@@ -530,7 +531,7 @@ sig_handler mysql_end(int sig)
  my_free(current_prompt,MYF(MY_ALLOW_ZERO_PTR));
  mysql_server_end();
  free_defaults(defaults_argv);
  my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
  my_end(info_flag ? MY_CHECK_ERROR : 0);
  exit(status.exit_status);
}

@@ -585,12 +586,13 @@ static struct my_option my_long_options[] =
  {"character-sets-dir", OPT_CHARSETS_DIR,
   "Directory where character sets are.", (gptr*) &charsets_dir,
   (gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"default-character-set", OPT_DEFAULT_CHARSET,
   "Set the default character set.", (gptr*) &default_charset,
   (gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"column-type-info", OPT_COLUMN_TYPES, "Display column type information.",
   (gptr*) &column_types_flag, (gptr*) &column_types_flag,
   0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
  {"compress", 'C', "Use compression in server/client protocol.",
   (gptr*) &opt_compress, (gptr*) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
   0, 0, 0},

#ifdef DBUG_OFF
  {"debug", '#', "This is a non-debug version. Catch this and exit",
   0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
@@ -598,8 +600,13 @@ static struct my_option my_long_options[] =
  {"debug", '#', "Output debug log", (gptr*) &default_dbug_option,
   (gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
  {"debug-info", 'T', "Print some debug info at exit.", (gptr*) &info_flag,
   (gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
  {"database", 'D', "Database to use.", (gptr*) &current_db,
   (gptr*) &current_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"default-character-set", OPT_DEFAULT_CHARSET,
   "Set the default character set.", (gptr*) &default_charset,
   (gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"delimiter", OPT_DELIMITER, "Delimiter to be used.", (gptr*) &delimiter_str,
   (gptr*) &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"execute", 'e', "Execute command and quit. (Disables --force and history file)", 0,
@@ -696,8 +703,6 @@ static struct my_option my_long_options[] =
#include "sslopt-longopts.h"
  {"table", 't', "Output in table format.", (gptr*) &output_tables,
   (gptr*) &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
  {"debug-info", 'T', "Print some debug info at exit.", (gptr*) &info_flag,
   (gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
  {"tee", OPT_TEE,
   "Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default.",
   0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@@ -2070,7 +2075,7 @@ com_go(String *buffer,char *line __attribute__((unused)))
      time_buff[0]=0;
    if (result)
    {
      if (!mysql_num_rows(result) && ! quick && !info_flag)
      if (!mysql_num_rows(result) && ! quick && !column_types_flag)
      {
	strmov(buff, "Empty set");
      }
@@ -2307,7 +2312,7 @@ print_table_data(MYSQL_RES *result)
  bool		*num_flag;

  num_flag=(bool*) my_alloca(sizeof(bool)*mysql_num_fields(result));
  if (info_flag)
  if (column_types_flag)
  {
    print_field_types(result);
    if (!mysql_num_rows(result))
+1 −1
Original line number Diff line number Diff line
@@ -418,6 +418,6 @@ int main(int argc, char **argv)
err_exit:
  if (upgrade_defaults_created)
    my_delete(upgrade_defaults_path, MYF(0));
  my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
  my_end(info_flag ? MY_CHECK_ERROR : 0);
  return error;
}                                               /* main */
+5 −3
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@
#include "../ndb/src/mgmclient/ndb_mgmclient.h"
#endif

#define ADMIN_VERSION "8.41"
#define ADMIN_VERSION "8.42"
#define MAX_MYSQL_VAR 256
#define SHUTDOWN_DEF_TIMEOUT 3600		/* Wait for shutdown */
#define MAX_TRUNC_LENGTH 3
@@ -41,7 +41,7 @@ ulonglong last_values[MAX_MYSQL_VAR];
static int interval=0;
static my_bool option_force=0,interrupted=0,new_line=0,
               opt_compress=0, opt_relative=0, opt_verbose=0, opt_vertical=0,
               tty_password=0;
               tty_password= 0, info_flag= 0;
static uint tcp_port = 0, option_wait = 0, option_silent=0, nr_iterations,
            opt_count_iterations= 0;
static ulong opt_connect_timeout, opt_shutdown_timeout;
@@ -136,6 +136,8 @@ static struct my_option my_long_options[] =
   REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
   0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
  {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
   (gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
  {"force", 'f',
   "Don't ask for confirmation on drop database; with multiple commands, continue even if an error occurs.",
   (gptr*) &option_force, (gptr*) &option_force, 0, GET_BOOL, NO_ARG, 0, 0,
@@ -412,7 +414,7 @@ int main(int argc,char *argv[])
  my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
#endif
  free_defaults(save_argv);
  my_end(0);
  my_end(info_flag ? MY_CHECK_ERROR : 0);
  exit(error ? 1 : 0);
  return 0;
}
+6 −4
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ static bool one_database=0, to_last_remote_log= 0, disable_log_bin= 0;
static bool opt_hexdump= 0;
static bool opt_base64_output= 0;
static const char* database= 0;
static my_bool force_opt= 0, short_form= 0, remote_opt= 0;
static my_bool force_opt= 0, short_form= 0, remote_opt= 0, info_flag;
static ulonglong offset = 0;
static const char* host = 0;
static int port= 0;
@@ -716,6 +716,8 @@ static struct my_option my_long_options[] =
  {"debug", '#', "Output debug log.", (gptr*) &default_dbug_option,
   (gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
  {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
   (gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
  {"disable-log-bin", 'D', "Disable binary log. This is useful, if you "
    "enabled --to-last-log and are sending the output to the same MySQL server. "
    "This way you could avoid an endless loop. You would also like to use it "
@@ -844,7 +846,7 @@ static void die(const char* fmt, ...)
  va_end(args);
  cleanup();
  /* We cannot free DBUG, it is used in global destructors after exit(). */
  my_end(MY_DONT_FREE_DBUG);
  my_end((info_flag ? MY_CHECK_ERROR : 0) | MY_DONT_FREE_DBUG);
  exit(1);
}

@@ -852,7 +854,7 @@ static void die(const char* fmt, ...)

static void print_version()
{
  printf("%s Ver 3.1 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
  printf("%s Ver 3.2 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
  NETWARE_SET_SCREEN_MODE(1);
}

@@ -1530,7 +1532,7 @@ int main(int argc, char** argv)
  free_defaults(defaults_argv);
  my_free_open_file_info();
  /* We cannot free DBUG, it is used in global destructors after exit(). */
  my_end(MY_DONT_FREE_DBUG);
  my_end((info_flag ? MY_CHECK_ERROR : 0) | MY_DONT_FREE_DBUG);
  exit(exit_value);
  DBUG_RETURN(exit_value);			// Keep compilers happy
}
Loading