Commit bdf26a4f authored by heikki@hundin.mysql.fi's avatar heikki@hundin.mysql.fi

Merge hundin.mysql.fi:/home/heikki/mysql-4.1

into hundin.mysql.fi:/home/heikki/mysql-5.0
parents 83a57807 21666e42
...@@ -490,7 +490,7 @@ os_io_init_simple(void) ...@@ -490,7 +490,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. */
...@@ -498,7 +498,7 @@ int ...@@ -498,7 +498,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. */
...@@ -508,9 +508,12 @@ os_file_create_tmpfile(void) ...@@ -508,9 +508,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");
...@@ -519,15 +522,15 @@ os_file_create_tmpfile(void) ...@@ -519,15 +522,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;
} }
...@@ -538,22 +541,25 @@ os_file_create_tmpfile(void) ...@@ -538,22 +541,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);
......
...@@ -5704,7 +5704,9 @@ ha_innobase::store_lock( ...@@ -5704,7 +5704,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
...@@ -5712,7 +5714,10 @@ ha_innobase::store_lock( ...@@ -5712,7 +5714,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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment