mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
branches/zip: Merge 2437:2485 from branches/5.1:
(r2478 was skipped for the obvious reason) ------------------------------------------------------------------------ r2464 | vasil | 2008-05-19 17:59:42 +0300 (Mon, 19 May 2008) | 9 lines branches/5.1: Fix Bug#36600 SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number by removing the Innodb_buffer_pool_pages_latched variable from SHOW STATUS output in non-UNIV_DEBUG compilation. Approved by: Heikki ------------------------------------------------------------------------ r2466 | calvin | 2008-05-20 01:37:14 +0300 (Tue, 20 May 2008) | 12 lines branches/5.1: Fix Bug#11894 innodb_file_per_table crashes w/ Windows .sym symbolic link hack The crash was due to un-handled error 3 (path not found). In the case of file per table, change the call to os_file_handle_error_no_exit() from os_file_handle_error(). Also, checks for full path pattern during table create (Windows only), which is used in symbolic link and temp table creation. Approved by: Heikki ------------------------------------------------------------------------ r2478 | sunny | 2008-05-23 08:29:08 +0300 (Fri, 23 May 2008) | 3 lines branches/5.1: Fix for bug# 36793. This is a back port from branches/zip. This code has been tested on a big-endian machine too. ------------------------------------------------------------------------ r2480 | vasil | 2008-05-27 11:40:07 +0300 (Tue, 27 May 2008) | 11 lines branches/5.1: Fix Bug#36819 ut_usectime does not handle errors from gettimeofday by retrying gettimeofday() several times if it fails in ut_usectime(). If it fails on all calls then return error to the caller to be handled at higher level. Update the variable innodb_row_lock_time_max in SHOW STATUS output only if ut_usectime() was successful. ------------------------------------------------------------------------ r2482 | sunny | 2008-05-28 12:18:35 +0300 (Wed, 28 May 2008) | 5 lines branches/5.1: Fix for Bug#35602, "Failed to read auto-increment value from storage engine". The test for REPLACE was an error of ommission since it's classified as a simple INSERT. For REPLACE statements we don't acquire the special AUTOINC lock for AUTOINC_NEW_STYLE_LOCKING with this fix. ------------------------------------------------------------------------ r2485 | vasil | 2008-05-28 16:01:14 +0300 (Wed, 28 May 2008) | 9 lines branches/5.1: Fix Bug#36149 Read buffer overflow in srv0start.c found during "make test" Use strncmp(3) instead of memcmp(3) to avoid reading past end of the string if it is empty (*str == '\0'). This bug is _not_ a buffer overflow. Discussed with: Sunny (via IM) ------------------------------------------------------------------------
This commit is contained in:
@@ -468,8 +468,10 @@ static SHOW_VAR innodb_status_variables[]= {
|
||||
(char*) &export_vars.innodb_buffer_pool_pages_flushed, SHOW_LONG},
|
||||
{"buffer_pool_pages_free",
|
||||
(char*) &export_vars.innodb_buffer_pool_pages_free, SHOW_LONG},
|
||||
#ifdef UNIV_DEBUG
|
||||
{"buffer_pool_pages_latched",
|
||||
(char*) &export_vars.innodb_buffer_pool_pages_latched, SHOW_LONG},
|
||||
#endif /* UNIV_DEBUG */
|
||||
{"buffer_pool_pages_misc",
|
||||
(char*) &export_vars.innodb_buffer_pool_pages_misc, SHOW_LONG},
|
||||
{"buffer_pool_pages_total",
|
||||
@@ -3709,7 +3711,8 @@ ha_innobase::innobase_autoinc_lock(void)
|
||||
old style only if another transaction has already acquired
|
||||
the AUTOINC lock on behalf of a LOAD FILE or INSERT ... SELECT
|
||||
etc. type of statement. */
|
||||
if (thd_sql_command(user_thd) == SQLCOM_INSERT) {
|
||||
if (thd_sql_command(user_thd) == SQLCOM_INSERT
|
||||
|| thd_sql_command(user_thd) == SQLCOM_REPLACE) {
|
||||
dict_table_t* table = prebuilt->table;
|
||||
|
||||
/* Acquire the AUTOINC mutex. */
|
||||
@@ -5614,6 +5617,29 @@ ha_innobase::create(
|
||||
DBUG_ENTER("ha_innobase::create");
|
||||
|
||||
DBUG_ASSERT(thd != NULL);
|
||||
DBUG_ASSERT(create_info != NULL);
|
||||
|
||||
#ifdef __WIN__
|
||||
/* Names passed in from server are in two formats:
|
||||
1. <database_name>/<table_name>: for normal table creation
|
||||
2. full path: for temp table creation, or sym link
|
||||
|
||||
When srv_file_per_table is on, check for full path pattern, i.e.
|
||||
X:\dir\..., X is a driver letter, or
|
||||
\\dir1\dir2\..., UNC path
|
||||
returns error if it is in full path format, but not creating a temp.
|
||||
table. Currently InnoDB does not support symbolic link on Windows. */
|
||||
|
||||
if (srv_file_per_table
|
||||
&& (!create_info->options & HA_LEX_CREATE_TMP_TABLE)) {
|
||||
|
||||
if ((name[1] == ':')
|
||||
|| (name[0] == '\\' && name[1] == '\\')) {
|
||||
sql_print_error("Cannot create table %s\n", name);
|
||||
DBUG_RETURN(HA_ERR_GENERIC);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (form->s->fields > 1000) {
|
||||
/* The limit probably should be REC_MAX_N_FIELDS - 3 = 1020,
|
||||
|
||||
Reference in New Issue
Block a user