mirror of
https://github.com/MariaDB/server.git
synced 2025-01-26 00:34:18 +01:00
branches/5.1:
Merge a part of r2911.5.5 from MySQL: (the other part of this was merged in c5700) ------------------------------------------------------------ revno: 2911.5.5 committer: Vladislav Vaintroub <vvaintroub@mysql.com> branch nick: 5.1-innodb_plugin timestamp: Wed 2009-06-10 10:59:49 +0200 message: Backport WL#3653 to 5.1 to enable bundled innodb plugin. Remove custom DLL loader code from innodb plugin code, use symbols exported from mysqld. removed: storage/innodb_plugin/handler/handler0vars.h storage/innodb_plugin/handler/win_delay_loader.cc added: storage/mysql_storage_engine.cmake win/create_def_file.js modified: CMakeLists.txt include/m_ctype.h include/my_global.h include/my_sys.h include/mysql/plugin.h libmysqld/CMakeLists.txt mysql-test/mysql-test-run.pl mysql-test/t/plugin.test mysql-test/t/plugin_load-master.opt mysys/charset.c sql/CMakeLists.txt sql/handler.h sql/mysql_priv.h sql/mysqld.cc sql/sql_class.cc sql/sql_class.h sql/sql_list.h sql/sql_profile.h storage/Makefile.am storage/archive/CMakeLists.txt storage/blackhole/CMakeLists.txt storage/csv/CMakeLists.txt storage/example/CMakeLists.txt storage/federated/CMakeLists.txt storage/heap/CMakeLists.txt storage/innobase/CMakeLists.txt storage/innobase/handler/ha_innodb.cc storage/innodb_plugin/CMakeLists.txt storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/handler0alter.cc storage/innodb_plugin/handler/i_s.cc storage/innodb_plugin/plug.in storage/myisam/CMakeLists.txt storage/myisammrg/CMakeLists.txt win/Makefile.am win/configure.js
This commit is contained in:
parent
b8a2d8f247
commit
2c140ed3ed
1 changed files with 95 additions and 0 deletions
|
@ -941,6 +941,100 @@ innobase_get_charset(
|
||||||
return(thd_charset((THD*) mysql_thd));
|
return(thd_charset((THD*) mysql_thd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined (__WIN__) && defined (MYSQL_DYNAMIC_PLUGIN)
|
||||||
|
extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list;
|
||||||
|
/*******************************************************************//**
|
||||||
|
Map an OS error to an errno value. The OS error number is stored in
|
||||||
|
_doserrno and the mapped value is stored in errno) */
|
||||||
|
extern "C"
|
||||||
|
void __cdecl
|
||||||
|
_dosmaperr(
|
||||||
|
unsigned long); /*!< in: OS error value */
|
||||||
|
|
||||||
|
/*********************************************************************//**
|
||||||
|
Creates a temporary file.
|
||||||
|
@return temporary file descriptor, or < 0 on error */
|
||||||
|
extern "C"
|
||||||
|
int
|
||||||
|
innobase_mysql_tmpfile(void)
|
||||||
|
/*========================*/
|
||||||
|
{
|
||||||
|
int fd; /* handle of opened file */
|
||||||
|
HANDLE osfh; /* OS handle of opened file */
|
||||||
|
char* tmpdir; /* point to the directory
|
||||||
|
where to create file */
|
||||||
|
TCHAR path_buf[MAX_PATH - 14]; /* buffer for tmp file path.
|
||||||
|
The length cannot be longer
|
||||||
|
than MAX_PATH - 14, or
|
||||||
|
GetTempFileName will fail. */
|
||||||
|
char filename[MAX_PATH]; /* name of the tmpfile */
|
||||||
|
DWORD fileaccess = GENERIC_READ /* OS file access */
|
||||||
|
| GENERIC_WRITE
|
||||||
|
| DELETE;
|
||||||
|
DWORD fileshare = FILE_SHARE_READ /* OS file sharing mode */
|
||||||
|
| FILE_SHARE_WRITE
|
||||||
|
| FILE_SHARE_DELETE;
|
||||||
|
DWORD filecreate = CREATE_ALWAYS; /* OS method of open/create */
|
||||||
|
DWORD fileattrib = /* OS file attribute flags */
|
||||||
|
FILE_ATTRIBUTE_NORMAL
|
||||||
|
| FILE_FLAG_DELETE_ON_CLOSE
|
||||||
|
| FILE_ATTRIBUTE_TEMPORARY
|
||||||
|
| FILE_FLAG_SEQUENTIAL_SCAN;
|
||||||
|
|
||||||
|
DBUG_ENTER("innobase_mysql_tmpfile");
|
||||||
|
|
||||||
|
tmpdir = my_tmpdir(&mysql_tmpdir_list);
|
||||||
|
|
||||||
|
/* The tmpdir parameter can not be NULL for GetTempFileName. */
|
||||||
|
if (!tmpdir) {
|
||||||
|
uint ret;
|
||||||
|
|
||||||
|
/* Use GetTempPath to determine path for temporary files. */
|
||||||
|
ret = GetTempPath(sizeof(path_buf), path_buf);
|
||||||
|
if (ret > sizeof(path_buf) || (ret == 0)) {
|
||||||
|
|
||||||
|
_dosmaperr(GetLastError()); /* map error */
|
||||||
|
DBUG_RETURN(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpdir = path_buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Use GetTempFileName to generate a unique filename. */
|
||||||
|
if (!GetTempFileName(tmpdir, "ib", 0, filename)) {
|
||||||
|
|
||||||
|
_dosmaperr(GetLastError()); /* map error */
|
||||||
|
DBUG_RETURN(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
DBUG_PRINT("info", ("filename: %s", filename));
|
||||||
|
|
||||||
|
/* Open/Create the file. */
|
||||||
|
osfh = CreateFile(filename, fileaccess, fileshare, NULL,
|
||||||
|
filecreate, fileattrib, NULL);
|
||||||
|
if (osfh == INVALID_HANDLE_VALUE) {
|
||||||
|
|
||||||
|
/* open/create file failed! */
|
||||||
|
_dosmaperr(GetLastError()); /* map error */
|
||||||
|
DBUG_RETURN(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
/* Associates a CRT file descriptor with the OS file handle. */
|
||||||
|
fd = _open_osfhandle((intptr_t) osfh, 0);
|
||||||
|
} while (fd == -1 && errno == EINTR);
|
||||||
|
|
||||||
|
if (fd == -1) {
|
||||||
|
/* Open failed, close the file handle. */
|
||||||
|
|
||||||
|
_dosmaperr(GetLastError()); /* map error */
|
||||||
|
CloseHandle(osfh); /* no need to check if
|
||||||
|
CloseHandle fails */
|
||||||
|
}
|
||||||
|
|
||||||
|
DBUG_RETURN(fd);
|
||||||
|
}
|
||||||
|
#else
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Creates a temporary file. */
|
Creates a temporary file. */
|
||||||
extern "C"
|
extern "C"
|
||||||
|
@ -972,6 +1066,7 @@ innobase_mysql_tmpfile(void)
|
||||||
}
|
}
|
||||||
return(fd2);
|
return(fd2);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Wrapper around MySQL's copy_and_convert function, see it for
|
Wrapper around MySQL's copy_and_convert function, see it for
|
||||||
|
|
Loading…
Add table
Reference in a new issue