mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
Merge bk-internal:/home/bk/mysql-4.1
into mysql.com:/home/jimw/my/mysql-4.1-clean
This commit is contained in:
commit
13b380e665
2 changed files with 22 additions and 11 deletions
|
|
@ -486,7 +486,7 @@ os_io_init_simple(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef UNIV_HOTBACKUP
|
#if !defined(UNIV_HOTBACKUP) && !defined(__NETWARE__)
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Creates a temporary file. This function is defined in ha_innodb.cc. */
|
Creates a temporary file. This function is defined in ha_innodb.cc. */
|
||||||
|
|
||||||
|
|
@ -494,7 +494,7 @@ int
|
||||||
innobase_mysql_tmpfile(void);
|
innobase_mysql_tmpfile(void);
|
||||||
/*========================*/
|
/*========================*/
|
||||||
/* out: temporary file descriptor, or < 0 on error */
|
/* out: temporary file descriptor, or < 0 on error */
|
||||||
#endif /* !UNIV_HOTBACKUP */
|
#endif /* !UNIV_HOTBACKUP && !__NETWARE__ */
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Creates a temporary file. */
|
Creates a temporary file. */
|
||||||
|
|
@ -504,9 +504,12 @@ os_file_create_tmpfile(void)
|
||||||
/*========================*/
|
/*========================*/
|
||||||
/* out: temporary file handle, or NULL on error */
|
/* out: temporary file handle, or NULL on error */
|
||||||
{
|
{
|
||||||
|
#ifdef __NETWARE__
|
||||||
|
FILE* file = tmpfile();
|
||||||
|
#else /* __NETWARE__ */
|
||||||
FILE* file = NULL;
|
FILE* file = NULL;
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
#ifdef UNIV_HOTBACKUP
|
# ifdef UNIV_HOTBACKUP
|
||||||
int tries;
|
int tries;
|
||||||
for (tries = 10; tries--; ) {
|
for (tries = 10; tries--; ) {
|
||||||
char* name = tempnam(fil_path_to_mysql_datadir, "ib");
|
char* name = tempnam(fil_path_to_mysql_datadir, "ib");
|
||||||
|
|
@ -515,15 +518,15 @@ os_file_create_tmpfile(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open(name,
|
fd = open(name,
|
||||||
# ifdef __WIN__
|
# ifdef __WIN__
|
||||||
O_SEQUENTIAL | O_SHORT_LIVED | O_TEMPORARY |
|
O_SEQUENTIAL | O_SHORT_LIVED | O_TEMPORARY |
|
||||||
# endif /* __WIN__ */
|
# endif /* __WIN__ */
|
||||||
O_CREAT | O_EXCL | O_RDWR,
|
O_CREAT | O_EXCL | O_RDWR,
|
||||||
S_IREAD | S_IWRITE);
|
S_IREAD | S_IWRITE);
|
||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
# ifndef __WIN__
|
# ifndef __WIN__
|
||||||
unlink(name);
|
unlink(name);
|
||||||
# endif /* !__WIN__ */
|
# endif /* !__WIN__ */
|
||||||
free(name);
|
free(name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -534,22 +537,25 @@ os_file_create_tmpfile(void)
|
||||||
name);
|
name);
|
||||||
free(name);
|
free(name);
|
||||||
}
|
}
|
||||||
#else /* UNIV_HOTBACKUP */
|
# else /* UNIV_HOTBACKUP */
|
||||||
fd = innobase_mysql_tmpfile();
|
fd = innobase_mysql_tmpfile();
|
||||||
#endif /* UNIV_HOTBACKUP */
|
# endif /* UNIV_HOTBACKUP */
|
||||||
|
|
||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
file = fdopen(fd, "w+b");
|
file = fdopen(fd, "w+b");
|
||||||
}
|
}
|
||||||
|
#endif /* __NETWARE__ */
|
||||||
|
|
||||||
if (!file) {
|
if (!file) {
|
||||||
ut_print_timestamp(stderr);
|
ut_print_timestamp(stderr);
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
" InnoDB: Error: unable to create temporary file;"
|
" InnoDB: Error: unable to create temporary file;"
|
||||||
" errno: %d\n", errno);
|
" errno: %d\n", errno);
|
||||||
|
#ifndef __NETWARE__
|
||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
|
#endif /* !__NETWARE__ */
|
||||||
}
|
}
|
||||||
|
|
||||||
return(file);
|
return(file);
|
||||||
|
|
|
||||||
|
|
@ -5265,7 +5265,9 @@ ha_innobase::store_lock(
|
||||||
if ((lock_type == TL_READ && thd->in_lock_tables) ||
|
if ((lock_type == TL_READ && thd->in_lock_tables) ||
|
||||||
(lock_type == TL_READ_HIGH_PRIORITY && thd->in_lock_tables) ||
|
(lock_type == TL_READ_HIGH_PRIORITY && thd->in_lock_tables) ||
|
||||||
lock_type == TL_READ_WITH_SHARED_LOCKS ||
|
lock_type == TL_READ_WITH_SHARED_LOCKS ||
|
||||||
lock_type == TL_READ_NO_INSERT) {
|
lock_type == TL_READ_NO_INSERT ||
|
||||||
|
thd->lex->sql_command != SQLCOM_SELECT) {
|
||||||
|
|
||||||
/* The OR cases above are in this order:
|
/* The OR cases above are in this order:
|
||||||
1) MySQL is doing LOCK TABLES ... READ LOCAL, or
|
1) MySQL is doing LOCK TABLES ... READ LOCAL, or
|
||||||
2) (we do not know when TL_READ_HIGH_PRIORITY is used), or
|
2) (we do not know when TL_READ_HIGH_PRIORITY is used), or
|
||||||
|
|
@ -5273,7 +5275,10 @@ ha_innobase::store_lock(
|
||||||
4) we are doing a complex SQL statement like
|
4) we are doing a complex SQL statement like
|
||||||
INSERT INTO ... SELECT ... and the logical logging (MySQL
|
INSERT INTO ... SELECT ... and the logical logging (MySQL
|
||||||
binlog) requires the use of a locking read, or
|
binlog) requires the use of a locking read, or
|
||||||
MySQL is doing LOCK TABLES ... READ. */
|
MySQL is doing LOCK TABLES ... READ.
|
||||||
|
5) we let InnoDB do locking reads for all SQL statements that
|
||||||
|
are not simple SELECTs; note that select_lock_type in this
|
||||||
|
case may get strengthened in ::external_lock() to LOCK_X. */
|
||||||
|
|
||||||
prebuilt->select_lock_type = LOCK_S;
|
prebuilt->select_lock_type = LOCK_S;
|
||||||
prebuilt->stored_select_lock_type = LOCK_S;
|
prebuilt->stored_select_lock_type = LOCK_S;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue