mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
branches/innodb+: Merge revisions 6238:6293 from branches/plugin-1.1
which was cloned from branches/zip revision 6237 as branches/plugin-2.0, in order to work with MySQL 5.5. Skip revision 6240: update the version number to 2.0.0 ------------------------------------------------------------------------ r6290 | calvin | 2009-12-10 02:26:45 -0600 (Thu, 10 Dec 2009) | 26 lines branches/plugin-2.0: merge of r2877 from MySQL This is r2877 in mysql-next-mr tree, backported from 6.0. ------------------------------------------------------------- Bug#24509 - 2048 file descriptor limit on windows needs increasing, also WL#3049 - improved Windows I/O The patch replaces the use of the POSIX I/O interfaces in mysys on Windows with the Win32 API calls (CreateFile, WriteFile, etc). The Windows HANDLE for the open file is stored in the my_file_info struct, along with a flag for append mode because the Windows API does not support opening files in append mode in all cases) The default max open files has been increased to 16384 and can be increased further by setting --max-open-files=<value> during the server start. Another major change in this patch that almost all Windows specific file IO code has been moved to a new file my_winfile.c, greatly reducing the amount of code in #ifdef blocks within mysys, thus improving readability. Minor enhancements: - my_(f)stat() is changed to use __stati64 structure with 64 file size and timestamps. It will return correct file size now (C runtime implementation used to report outdated information) - my_lock on Windows is prepared to handle additional timeout parameter - after review : changed __WIN__ to _WIN32 in the new and changed code. ------------------------------------------------------------------------ r6291 | calvin | 2009-12-10 02:31:27 -0600 (Thu, 10 Dec 2009) | 14 lines branches/plugin-2.0: merge of r2887.3.31 from MySQL This is r2887.3.31 in mysql-next-mr tree, backported from 6.0. Backport of: ---------------------------------------------------------- revno: 2630.22.8 committer: Konstantin Osipov <konstantin@mysql.com> branch nick: mysql-6.0-runtime timestamp: Sun 2008-08-10 18:49:52 +0400 message: Get rid of typedef struct for the most commonly used types: TABLE, TABLE_SHARE, LEX. This simplifies use of tags and forward declarations. ------------------------------------------------------------------------ r6292 | calvin | 2009-12-10 02:40:55 -0600 (Thu, 10 Dec 2009) | 41 lines branches/plugin-2.0: merge of r2936 from MySQL This is r2936 in mysql-next-mr tree, backported from 6.0. Backport of: ------------------------------------------------------------- revno: 2877 committer: Davi Arnaut <Davi.Arnaut@Sun.COM> branch nick: 35164-6.0 timestamp: Wed 2008-10-15 19:53:18 -0300 message: Bug#35164: Large number of invalid pthread_attr_setschedparam calls Bug#37536: Thread scheduling causes performance degradation at low thread count Bug#12702: Long queries take 100% of CPU and freeze other applications under Windows The problem is that although having threads with different priorities yields marginal improvements [1] in some platforms [2], relying on some statically defined priorities (QUERY_PRIOR and WAIT_PRIOR) to play well (or to work at all) with different scheduling practices and disciplines is, at best, a shot in the dark as the meaning of priority values may change depending on the scheduling policy set for the process. Another problem is that increasing priorities can hurt other concurrent (running on the same hardware) applications (such as AMP) by causing starvation problems as MySQL threads will successively preempt lower priority processes. This can be evidenced by Bug#12702. The solution is to not change the threads priorities and rely on the system scheduler to perform its job. This also enables a system admin to increase or decrease the scheduling priority of the MySQL process, if intended. Furthermore, the internal wrappers and code for changing the priority of threads is being removed as they are now unused and ancient. 1. Due to unintentional side effects. On Solaris this could artificially help benchmarks as calling the priority changing syscall millions of times is more beneficial than the actual setting of the priority. 2. Where it actually works. It has never worked on Linux as the default scheduling policy SCHED_OTHER only accepts the static priority 0. ------------------------------------------------------------------------ r6293 | calvin | 2009-12-10 02:45:27 -0600 (Thu, 10 Dec 2009) | 13 lines branches/plugin-2.0: merge of r2938 from MySQL This is r2938 in mysql-next-mr tree, backported from 6.0. Backport of: ---------------------------------------------------------------------- ChangeSet@1.2571, 2008-04-08 12:30:06+02:00, vvaintroub@wva. +122 -0 Bug#32082 : definition of VOID in my_global.h conflicts with Windows SDK headers VOID macro is now removed. Its usage is replaced with void cast. In some cases, where cast does not make much sense (pthread_*, printf, hash_delete, my_seek), cast is ommited. ------------------------------------------------------------------------
This commit is contained in:
parent
4a8e2c1496
commit
cd9fddd8e1
8 changed files with 33 additions and 38 deletions
|
@ -1121,7 +1121,29 @@ innobase_mysql_tmpfile(void)
|
|||
will be passed to fdopen(), it will be closed by invoking
|
||||
fclose(), which in turn will invoke close() instead of
|
||||
my_close(). */
|
||||
|
||||
#ifdef _WIN32
|
||||
/* Note that on Windows, the integer returned by mysql_tmpfile
|
||||
has no relation to C runtime file descriptor. Here, we need
|
||||
to call my_get_osfhandle to get the HANDLE and then convert it
|
||||
to C runtime filedescriptor. */
|
||||
{
|
||||
HANDLE hFile = my_get_osfhandle(fd);
|
||||
HANDLE hDup;
|
||||
BOOL bOK =
|
||||
DuplicateHandle(GetCurrentProcess(), hFile, GetCurrentProcess(),
|
||||
&hDup, 0, FALSE, DUPLICATE_SAME_ACCESS);
|
||||
if(bOK) {
|
||||
fd2 = _open_osfhandle((intptr_t)hDup,0);
|
||||
}
|
||||
else {
|
||||
my_osmaperr(GetLastError());
|
||||
fd2 = -1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
fd2 = dup(fd);
|
||||
#endif
|
||||
if (fd2 < 0) {
|
||||
DBUG_PRINT("error",("Got error %d on dup",fd2));
|
||||
my_errno=errno;
|
||||
|
@ -1999,13 +2021,6 @@ innobase_init(
|
|||
|
||||
ut_a(default_path);
|
||||
|
||||
if (specialflag & SPECIAL_NO_PRIOR) {
|
||||
srv_set_thread_priorities = FALSE;
|
||||
} else {
|
||||
srv_set_thread_priorities = TRUE;
|
||||
srv_query_thread_priority = QUERY_PRIOR;
|
||||
}
|
||||
|
||||
/* Set InnoDB initialization parameters according to the values
|
||||
read from MySQL .cnf file */
|
||||
|
||||
|
@ -4815,7 +4830,7 @@ calc_row_difference(
|
|||
upd_t* uvect, /*!< in/out: update vector */
|
||||
uchar* old_row, /*!< in: old row in MySQL format */
|
||||
uchar* new_row, /*!< in: new row in MySQL format */
|
||||
struct st_table* table, /*!< in: table in MySQL data
|
||||
TABLE* table, /*!< in: table in MySQL data
|
||||
dictionary */
|
||||
uchar* upd_buff, /*!< in: buffer to use */
|
||||
ulint buff_len, /*!< in: buffer length */
|
||||
|
|
|
@ -27,7 +27,7 @@ UNIV_INTERN
|
|||
void
|
||||
innobase_rec_to_mysql(
|
||||
/*==================*/
|
||||
TABLE* table, /*!< in/out: MySQL table */
|
||||
struct TABLE* table, /*!< in/out: MySQL table */
|
||||
const rec_t* rec, /*!< in: record */
|
||||
const dict_index_t* index, /*!< in: index */
|
||||
const ulint* offsets); /*!< in: rec_get_offsets(
|
||||
|
@ -39,4 +39,4 @@ UNIV_INTERN
|
|||
void
|
||||
innobase_rec_reset(
|
||||
/*===============*/
|
||||
TABLE* table); /*!< in/out: MySQL table */
|
||||
struct TABLE* table); /*!< in/out: MySQL table */
|
||||
|
|
|
@ -191,7 +191,7 @@ row_merge_build_indexes(
|
|||
unless creating a PRIMARY KEY */
|
||||
dict_index_t** indexes, /*!< in: indexes to be created */
|
||||
ulint n_indexes, /*!< in: size of indexes[] */
|
||||
TABLE* table); /*!< in/out: MySQL table, for
|
||||
struct TABLE* table); /*!< in/out: MySQL table, for
|
||||
reporting erroneous key value
|
||||
if applicable */
|
||||
#endif /* row0merge.h */
|
||||
|
|
|
@ -54,6 +54,6 @@ typedef struct purge_node_struct purge_node_t;
|
|||
typedef struct row_ext_struct row_ext_t;
|
||||
|
||||
/* MySQL data types */
|
||||
typedef struct st_table TABLE;
|
||||
struct TABLE;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -194,9 +194,6 @@ extern unsigned long long srv_stats_sample_pages;
|
|||
extern ibool srv_use_doublewrite_buf;
|
||||
extern ibool srv_use_checksums;
|
||||
|
||||
extern ibool srv_set_thread_priorities;
|
||||
extern int srv_query_thread_priority;
|
||||
|
||||
extern ulong srv_max_buf_pool_modified_pct;
|
||||
extern ulong srv_max_purge_lag;
|
||||
|
||||
|
|
|
@ -133,15 +133,6 @@ os_thread_create(
|
|||
0, /* thread runs immediately */
|
||||
&win_thread_id);
|
||||
|
||||
if (srv_set_thread_priorities) {
|
||||
|
||||
/* Set created thread priority the same as a normal query
|
||||
in MYSQL: we try to prevent starvation of threads by
|
||||
assigning same priority QUERY_PRIOR to all */
|
||||
|
||||
ut_a(SetThreadPriority(thread, srv_query_thread_priority));
|
||||
}
|
||||
|
||||
if (thread_id) {
|
||||
*thread_id = win_thread_id;
|
||||
}
|
||||
|
@ -200,11 +191,6 @@ os_thread_create(
|
|||
#ifndef UNIV_HPUX10
|
||||
pthread_attr_destroy(&attr);
|
||||
#endif
|
||||
if (srv_set_thread_priorities) {
|
||||
|
||||
my_pthread_setprio(pthread, srv_query_thread_priority);
|
||||
}
|
||||
|
||||
if (thread_id) {
|
||||
*thread_id = pthread;
|
||||
}
|
||||
|
|
|
@ -413,7 +413,7 @@ row_merge_buf_add(
|
|||
/** Structure for reporting duplicate records. */
|
||||
struct row_merge_dup_struct {
|
||||
const dict_index_t* index; /*!< index being sorted */
|
||||
TABLE* table; /*!< MySQL table object */
|
||||
struct TABLE* table; /*!< MySQL table object */
|
||||
ulint n_dup; /*!< number of duplicates */
|
||||
};
|
||||
|
||||
|
@ -1119,7 +1119,7 @@ ulint
|
|||
row_merge_read_clustered_index(
|
||||
/*===========================*/
|
||||
trx_t* trx, /*!< in: transaction */
|
||||
TABLE* table, /*!< in/out: MySQL table object,
|
||||
struct TABLE* table, /*!< in/out: MySQL table object,
|
||||
for reporting erroneous records */
|
||||
const dict_table_t* old_table,/*!< in: table where rows are
|
||||
read from */
|
||||
|
@ -1407,7 +1407,7 @@ row_merge_blocks(
|
|||
ulint* foffs1, /*!< in/out: offset of second
|
||||
source list in the file */
|
||||
merge_file_t* of, /*!< in/out: output file */
|
||||
TABLE* table) /*!< in/out: MySQL table, for
|
||||
struct TABLE* table) /*!< in/out: MySQL table, for
|
||||
reporting erroneous key value
|
||||
if applicable */
|
||||
{
|
||||
|
@ -1590,7 +1590,7 @@ row_merge(
|
|||
ulint* half, /*!< in/out: half the file */
|
||||
row_merge_block_t* block, /*!< in/out: 3 buffers */
|
||||
int* tmpfd, /*!< in/out: temporary file handle */
|
||||
TABLE* table) /*!< in/out: MySQL table, for
|
||||
struct TABLE* table) /*!< in/out: MySQL table, for
|
||||
reporting erroneous key value
|
||||
if applicable */
|
||||
{
|
||||
|
@ -1706,7 +1706,7 @@ row_merge_sort(
|
|||
index entries */
|
||||
row_merge_block_t* block, /*!< in/out: 3 buffers */
|
||||
int* tmpfd, /*!< in/out: temporary file handle */
|
||||
TABLE* table) /*!< in/out: MySQL table, for
|
||||
struct TABLE* table) /*!< in/out: MySQL table, for
|
||||
reporting erroneous key value
|
||||
if applicable */
|
||||
{
|
||||
|
@ -2517,7 +2517,7 @@ row_merge_build_indexes(
|
|||
unless creating a PRIMARY KEY */
|
||||
dict_index_t** indexes, /*!< in: indexes to be created */
|
||||
ulint n_indexes, /*!< in: size of indexes[] */
|
||||
TABLE* table) /*!< in/out: MySQL table, for
|
||||
struct TABLE* table) /*!< in/out: MySQL table, for
|
||||
reporting erroneous key value
|
||||
if applicable */
|
||||
{
|
||||
|
|
|
@ -368,9 +368,6 @@ UNIV_INTERN unsigned long long srv_stats_sample_pages = 8;
|
|||
UNIV_INTERN ibool srv_use_doublewrite_buf = TRUE;
|
||||
UNIV_INTERN ibool srv_use_checksums = TRUE;
|
||||
|
||||
UNIV_INTERN ibool srv_set_thread_priorities = TRUE;
|
||||
UNIV_INTERN int srv_query_thread_priority = 0;
|
||||
|
||||
UNIV_INTERN ulong srv_replication_delay = 0;
|
||||
|
||||
/*-------------------------------------------*/
|
||||
|
|
Loading…
Add table
Reference in a new issue