Loading innobase/os/os0file.c +15 −9 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -498,7 +498,7 @@ int innobase_mysql_tmpfile(void); /*========================*/ /* out: temporary file descriptor, or < 0 on error */ #endif /* !UNIV_HOTBACKUP */ #endif /* !UNIV_HOTBACKUP && !__NETWARE__ */ /*************************************************************************** Creates a temporary file. */ Loading @@ -508,6 +508,9 @@ os_file_create_tmpfile(void) /*========================*/ /* out: temporary file handle, or NULL on error */ { #ifdef __NETWARE__ FILE* file = tmpfile(); #else /* __NETWARE__ */ FILE* file = NULL; int fd = -1; # ifdef UNIV_HOTBACKUP Loading Loading @@ -545,15 +548,18 @@ os_file_create_tmpfile(void) if (fd >= 0) { file = fdopen(fd, "w+b"); } #endif /* __NETWARE__ */ if (!file) { ut_print_timestamp(stderr); fprintf(stderr, " InnoDB: Error: unable to create temporary file;" " errno: %d\n", errno); #ifndef __NETWARE__ if (fd >= 0) { close(fd); } #endif /* !__NETWARE__ */ } return(file); Loading sql/ha_innodb.cc +12 −2 Original line number Diff line number Diff line Loading @@ -5704,7 +5704,9 @@ ha_innobase::store_lock( if ((lock_type == TL_READ && 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_NO_INSERT) { lock_type == TL_READ_NO_INSERT || thd->lex->sql_command != SQLCOM_SELECT) { /* The OR cases above are in this order: 1) MySQL is doing LOCK TABLES ... READ LOCAL, or 2) (we do not know when TL_READ_HIGH_PRIORITY is used), or Loading @@ -5712,7 +5714,15 @@ ha_innobase::store_lock( 4) we are doing a complex SQL statement like INSERT INTO ... SELECT ... and the logical logging (MySQL 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. Note that we MUST use a locking read in all data modifying SQL statements, because otherwise the execution would not be serializable, and also the results from the update could be unexpected if an obsolete consistent read view would be used. */ prebuilt->select_lock_type = LOCK_S; prebuilt->stored_select_lock_type = LOCK_S; Loading Loading
innobase/os/os0file.c +15 −9 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -498,7 +498,7 @@ int innobase_mysql_tmpfile(void); /*========================*/ /* out: temporary file descriptor, or < 0 on error */ #endif /* !UNIV_HOTBACKUP */ #endif /* !UNIV_HOTBACKUP && !__NETWARE__ */ /*************************************************************************** Creates a temporary file. */ Loading @@ -508,6 +508,9 @@ os_file_create_tmpfile(void) /*========================*/ /* out: temporary file handle, or NULL on error */ { #ifdef __NETWARE__ FILE* file = tmpfile(); #else /* __NETWARE__ */ FILE* file = NULL; int fd = -1; # ifdef UNIV_HOTBACKUP Loading Loading @@ -545,15 +548,18 @@ os_file_create_tmpfile(void) if (fd >= 0) { file = fdopen(fd, "w+b"); } #endif /* __NETWARE__ */ if (!file) { ut_print_timestamp(stderr); fprintf(stderr, " InnoDB: Error: unable to create temporary file;" " errno: %d\n", errno); #ifndef __NETWARE__ if (fd >= 0) { close(fd); } #endif /* !__NETWARE__ */ } return(file); Loading
sql/ha_innodb.cc +12 −2 Original line number Diff line number Diff line Loading @@ -5704,7 +5704,9 @@ ha_innobase::store_lock( if ((lock_type == TL_READ && 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_NO_INSERT) { lock_type == TL_READ_NO_INSERT || thd->lex->sql_command != SQLCOM_SELECT) { /* The OR cases above are in this order: 1) MySQL is doing LOCK TABLES ... READ LOCAL, or 2) (we do not know when TL_READ_HIGH_PRIORITY is used), or Loading @@ -5712,7 +5714,15 @@ ha_innobase::store_lock( 4) we are doing a complex SQL statement like INSERT INTO ... SELECT ... and the logical logging (MySQL 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. Note that we MUST use a locking read in all data modifying SQL statements, because otherwise the execution would not be serializable, and also the results from the update could be unexpected if an obsolete consistent read view would be used. */ prebuilt->select_lock_type = LOCK_S; prebuilt->stored_select_lock_type = LOCK_S; Loading