Commit 517ac628 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/users/lthalmann/bkroot/mysql-5.1-new-rpl

into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.1-merge

parents e2bf3f03 2a9b8802
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -531,6 +531,7 @@ typedef int (*Process_option_func)(void *ctx, const char *group_name,

#include <my_alloc.h>


	/* Prototypes for mysys and my_func functions */

extern int my_copy(const char *from,const char *to,myf MyFlags);
@@ -604,6 +605,13 @@ extern File my_sopen(const char *path, int oflag, int shflag, int pmode);
extern int check_if_legal_filename(const char *path);
extern int check_if_legal_tablename(const char *path);

#if defined(__WIN__) && defined(__NT__)
extern int nt_share_delete(const char *name,myf MyFlags);
#define my_delete_allow_opened(fname,flags)  nt_share_delete((fname),(flags))
#else
#define my_delete_allow_opened(fname,flags)  my_delete((fname),(flags))
#endif

#ifndef TERMINATE
extern void TERMINATE(FILE *file);
#endif
+3 −1
Original line number Diff line number Diff line
@@ -1049,7 +1049,9 @@ sub executable_setup () {
                                           # New CMake locations.
                                           "$glob_basedir/client/release",
                                           "$glob_basedir/client/debug");
      $exe_mysqld=         mtr_exe_exists ("$path_client_bindir/mysqld-nt",
      $exe_mysqld=         mtr_exe_exists ("$path_client_bindir/mysqld-max-nt",
                                           "$path_client_bindir/mysqld-max",
                                           "$path_client_bindir/mysqld-nt",
                                           "$path_client_bindir/mysqld",
                                           "$path_client_bindir/mysqld-debug",
                                           "$path_client_bindir/mysqld-max",
+4 −0
Original line number Diff line number Diff line
# TODO: THIS TEST DOES NOT WORK ON WINDOWS
#       This should be fixed.
--source include/not_windows.inc

source include/have_openssl.inc;
source include/master-slave.inc;

+51 −0
Original line number Diff line number Diff line
@@ -32,3 +32,54 @@ int my_delete(const char *name, myf MyFlags)
  }
  DBUG_RETURN(err);
} /* my_delete */

#if defined(__WIN__) && defined(__NT__)
/*
  Delete file which is possibly not closed.

  This function is intended to be used exclusively as a temporal solution
  for Win NT in case when it is needed to delete a not closed file (note
  that the file must be opened everywhere with FILE_SHARE_DELETE mode).
  Deleting not-closed files can not be supported on Win 98|ME (and because
  of that is considered harmful).
  
  The function deletes the file with its preliminary renaming. This is
  because when not-closed share-delete file is deleted it still lives on
  a disk until it will not be closed everwhere. This may conflict with an
  attempt to create a new file with the same name. The deleted file is
  renamed to <name>.<num>.deleted where <name> - the initial name of the
  file, <num> - a hexadecimal number chosen to make the temporal name to
  be unique.
*/
int nt_share_delete(const char *name, myf MyFlags)
{
  char buf[MAX_PATH + 20];
  ulong cnt;
  DBUG_ENTER("nt_share_delete");
  DBUG_PRINT("my",("name %s MyFlags %d", name, MyFlags));
  
  for (cnt= GetTickCount(); cnt; cnt--)
  {
    sprintf(buf, "%s.%08X.deleted", name, cnt);
    if (MoveFile(name, buf))
      break;
      
    if ((errno= GetLastError()) == ERROR_ALREADY_EXISTS)
      continue;
      
    DBUG_PRINT("warning", ("Failed to rename %s to %s, errno: %d",
                           name, buf, errno));
    break;
  }

  if (DeleteFile(buf))
    DBUG_RETURN(0);

  my_errno= GetLastError();
  if (MyFlags & (MY_FAE+MY_WME))
    my_error(EE_DELETE, MYF(ME_BELL + ME_WAITTANG + (MyFlags & ME_NOINPUT)),
	       name, my_errno);

  DBUG_RETURN(-1);
}
#endif
+2 −2
Original line number Diff line number Diff line
@@ -2492,14 +2492,14 @@ bool MYSQL_BIN_LOG::reset_logs(THD* thd)

  for (;;)
  {
    my_delete(linfo.log_file_name, MYF(MY_WME));
    my_delete_allow_opened(linfo.log_file_name, MYF(MY_WME));
    if (find_next_log(&linfo, 0))
      break;
  }

  /* Start logging with a new file */
  close(LOG_CLOSE_INDEX);
  my_delete(index_file_name, MYF(MY_WME));	// Reset (open will update)
  my_delete_allow_opened(index_file_name, MYF(MY_WME));	// Reset (open will update)
  if (!thd->slave_thread)
    need_start_event=1;
  if (!open_index_file(index_file_name, 0))