Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
84e7a86d
Commit
84e7a86d
authored
Jan 24, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/mydev/mysql-4.1
into mysql.com:/home/mydev/mysql-4.1-4100 sql/sql_select.cc: Auto merged
parents
2d82625d
343e9bbd
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
224 additions
and
90 deletions
+224
-90
include/keycache.h
include/keycache.h
+4
-1
innobase/dict/dict0crea.c
innobase/dict/dict0crea.c
+11
-0
innobase/dict/dict0dict.c
innobase/dict/dict0dict.c
+6
-2
innobase/dict/dict0load.c
innobase/dict/dict0load.c
+17
-0
innobase/fil/fil0fil.c
innobase/fil/fil0fil.c
+53
-24
mysql-test/mysql-test-run.sh
mysql-test/mysql-test-run.sh
+3
-0
mysql-test/r/ctype_mb.result
mysql-test/r/ctype_mb.result
+2
-2
mysql-test/r/select_found.result
mysql-test/r/select_found.result
+8
-0
mysql-test/t/select_found.test
mysql-test/t/select_found.test
+9
-0
mysys/mf_keycache.c
mysys/mf_keycache.c
+35
-0
ndb/include/ndbapi/NdbRecAttr.hpp
ndb/include/ndbapi/NdbRecAttr.hpp
+0
-28
ndb/src/ndbapi/NdbRecAttr.cpp
ndb/src/ndbapi/NdbRecAttr.cpp
+32
-0
ndb/tools/waiter.cpp
ndb/tools/waiter.cpp
+21
-6
sql/mysql_priv.h
sql/mysql_priv.h
+0
-1
sql/mysqld.cc
sql/mysqld.cc
+5
-8
sql/set_var.cc
sql/set_var.cc
+2
-2
sql/sql_parse.cc
sql/sql_parse.cc
+3
-11
sql/sql_select.cc
sql/sql_select.cc
+10
-3
sql/sql_show.cc
sql/sql_show.cc
+3
-2
No files found.
include/keycache.h
View file @
84e7a86d
...
...
@@ -88,12 +88,13 @@ typedef struct st_key_cache
ulong
param_division_limit
;
/* min. percentage of warm blocks */
ulong
param_age_threshold
;
/* determines when hot block is downgraded */
/* Statistics variables */
/* Statistics variables
. These are reset in reset_key_cache_counters().
*/
ulong
global_blocks_changed
;
/* number of currently dirty blocks */
ulong
global_cache_w_requests
;
/* number of write requests (write hits) */
ulong
global_cache_write
;
/* number of writes from the cache to files */
ulong
global_cache_r_requests
;
/* number of read requests (read hits) */
ulong
global_cache_read
;
/* number of reads from files to the cache */
int
blocks
;
/* max number of blocks in the cache */
my_bool
in_init
;
/* Set to 1 in MySQL during init/resize */
}
KEY_CACHE
;
...
...
@@ -132,5 +133,7 @@ extern my_bool multi_key_cache_set(const byte *key, uint length,
KEY_CACHE
*
key_cache
);
extern
void
multi_key_cache_change
(
KEY_CACHE
*
old_data
,
KEY_CACHE
*
new_data
);
extern
int
reset_key_cache_counters
(
const
char
*
name
,
KEY_CACHE
*
key_cache
);
C_MODE_END
#endif
/* _keycache_h */
innobase/dict/dict0crea.c
View file @
84e7a86d
...
...
@@ -81,6 +81,17 @@ dict_create_sys_tables_tuple(
dfield_set_data
(
dfield
,
ptr
,
8
);
/* 7: MIX_LEN --------------------------*/
/* Track corruption reported on mailing list Jan 14, 2005 */
if
(
table
->
mix_len
!=
0
&&
table
->
mix_len
!=
0x80000000
)
{
fprintf
(
stderr
,
"InnoDB: Error: mix_len is %lu in table %s
\n
"
,
(
ulong
)
table
->
mix_len
,
table
->
name
);
mem_analyze_corruption
((
byte
*
)
&
(
table
->
mix_len
));
ut_error
;
}
dfield
=
dtuple_get_nth_field
(
entry
,
5
);
ptr
=
mem_heap_alloc
(
heap
,
4
);
...
...
innobase/dict/dict0dict.c
View file @
84e7a86d
...
...
@@ -2895,9 +2895,9 @@ loop:
constraint_name
=
NULL
;
if
(
ptr1
<
ptr2
)
{
/* The user
has
specified a constraint name. Pick it so
/* The user
may have
specified a constraint name. Pick it so
that we can store 'databasename/constraintname' as the id of
the id
of the constraint to system tables. */
of the constraint to system tables. */
ptr
=
ptr1
;
ptr
=
dict_accept
(
ptr
,
"CONSTRAINT"
,
&
success
);
...
...
@@ -2934,6 +2934,10 @@ loop:
ptr
=
dict_accept
(
ptr
,
"FOREIGN"
,
&
success
);
if
(
!
success
)
{
goto
loop
;
}
if
(
!
isspace
(
*
ptr
))
{
goto
loop
;
}
...
...
innobase/dict/dict0load.c
View file @
84e7a86d
...
...
@@ -729,6 +729,7 @@ dict_load_table(
ulint
space
;
ulint
n_cols
;
ulint
err
;
ulint
mix_len
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
...
...
@@ -775,6 +776,22 @@ dict_load_table(
return
(
NULL
);
}
/* Track a corruption bug reported on the MySQL mailing list Jan 14,
2005: mix_len had a value different from 0 */
field
=
rec_get_nth_field
(
rec
,
7
,
&
len
);
ut_a
(
len
==
4
);
mix_len
=
mach_read_from_4
(
field
);
if
(
mix_len
!=
0
&&
mix_len
!=
0x80000000
)
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: table %s has a nonsensical mix len %lu
\n
"
,
name
,
(
ulong
)
mix_len
);
}
#if MYSQL_VERSION_ID < 50300
/* Starting from MySQL 5.0.3, the high-order bit of MIX_LEN is the
"compact format" flag. */
...
...
innobase/fil/fil0fil.c
View file @
84e7a86d
...
...
@@ -477,28 +477,33 @@ fil_node_open_file(
ut_a
(
node
->
n_pending
==
0
);
ut_a
(
node
->
open
==
FALSE
);
/* printf("Opening file %s\n", node->name); */
if
(
node
->
size
==
0
)
{
/* It must be a single-table tablespace and we do not know the
size of the file yet. First we open the file in the normal
mode, no async I/O here, for simplicity. Then do some checks,
and close the file again.
NOTE that we could not use the simple file read function
os_file_read() in Windows to read from a file opened for
async I/O! */
node
->
handle
=
os_file_create_simple_no_error_handling
(
node
->
name
,
OS_FILE_OPEN
,
OS_FILE_READ_ONLY
,
&
success
);
if
(
!
success
)
{
/* The following call prints an error message */
os_file_get_last_error
(
TRUE
);
if
(
space
->
purpose
==
FIL_LOG
)
{
node
->
handle
=
os_file_create
(
node
->
name
,
OS_FILE_OPEN
,
OS_FILE_AIO
,
OS_LOG_FILE
,
&
ret
);
}
else
if
(
node
->
is_raw_disk
)
{
node
->
handle
=
os_file_create
(
node
->
name
,
OS_FILE_OPEN_RAW
,
OS_FILE_AIO
,
OS_DATA_FILE
,
&
ret
);
}
else
{
node
->
handle
=
os_file_create
(
node
->
name
,
OS_FILE_OPEN
,
OS_FILE_AIO
,
OS_DATA_FILE
,
&
ret
);
}
ut_a
(
ret
);
node
->
open
=
TRUE
;
ut_print_timestamp
(
stderr
);
system
->
n_open
++
;
fprintf
(
stderr
,
" InnoDB: Fatal error: cannot open %s
\n
."
"InnoDB: Have you deleted .ibd files under a running mysqld server?
\n
"
,
node
->
name
);
ut_a
(
0
);
}
if
(
node
->
size
==
0
)
{
ut_a
(
space
->
purpose
!=
FIL_LOG
);
ut_a
(
space
->
id
!=
0
);
os_file_get_size
(
node
->
handle
,
&
size_low
,
&
size_high
);
...
...
@@ -508,11 +513,6 @@ fil_node_open_file(
node
->
size
=
(
ulint
)
(
size_bytes
/
UNIV_PAGE_SIZE
);
#else
/* It must be a single-table tablespace and we do not know the
size of the file yet */
ut_a
(
space
->
id
!=
0
);
if
(
size_bytes
<
FIL_IBD_FILE_INITIAL_SIZE
*
UNIV_PAGE_SIZE
)
{
fprintf
(
stderr
,
"InnoDB: Error: the size of single-table tablespace file %s
\n
"
...
...
@@ -536,6 +536,10 @@ fil_node_open_file(
ut_free
(
buf2
);
/* Close the file now that we have read the space id from it */
os_file_close
(
node
->
handle
);
if
(
space_id
==
ULINT_UNDEFINED
||
space_id
==
0
)
{
fprintf
(
stderr
,
"InnoDB: Error: tablespace id %lu in file %s is not sensible
\n
"
,
...
...
@@ -563,6 +567,30 @@ fil_node_open_file(
space
->
size
+=
node
->
size
;
}
/* printf("Opening file %s\n", node->name); */
/* Open the file for reading and writing, in Windows normally in the
unbuffered async I/O mode, though global variables may make
os_file_create() to fall back to the normal file I/O mode. */
if
(
space
->
purpose
==
FIL_LOG
)
{
node
->
handle
=
os_file_create
(
node
->
name
,
OS_FILE_OPEN
,
OS_FILE_AIO
,
OS_LOG_FILE
,
&
ret
);
}
else
if
(
node
->
is_raw_disk
)
{
node
->
handle
=
os_file_create
(
node
->
name
,
OS_FILE_OPEN_RAW
,
OS_FILE_AIO
,
OS_DATA_FILE
,
&
ret
);
}
else
{
node
->
handle
=
os_file_create
(
node
->
name
,
OS_FILE_OPEN
,
OS_FILE_AIO
,
OS_DATA_FILE
,
&
ret
);
}
ut_a
(
ret
);
node
->
open
=
TRUE
;
system
->
n_open
++
;
if
(
space
->
purpose
==
FIL_TABLESPACE
&&
space
->
id
!=
0
)
{
/* Put the node to the LRU list */
UT_LIST_ADD_FIRST
(
LRU
,
system
->
LRU
,
node
);
...
...
@@ -4111,7 +4139,8 @@ fil_flush_file_spaces(
space
=
UT_LIST_GET_FIRST
(
system
->
space_list
);
while
(
space
)
{
if
(
space
->
purpose
==
purpose
)
{
if
(
space
->
purpose
==
purpose
&&
!
space
->
is_being_deleted
)
{
space
->
n_pending_flushes
++
;
/* prevent dropping of the
space while we are
flushing */
...
...
mysql-test/mysql-test-run.sh
View file @
84e7a86d
...
...
@@ -537,6 +537,7 @@ if [ x$SOURCE_DIST = x1 ] ; then
INSTALL_DB
=
"./install_test_db"
MYSQL_FIX_SYSTEM_TABLES
=
"
$BASEDIR
/scripts/mysql_fix_privilege_tables"
NDB_TOOLS_DIR
=
"
$BASEDIR
/ndb/tools"
NDB_MGM
=
"
$BASEDIR
/ndb/src/mgmclient/ndb_mgm"
else
if
test
-x
"
$BASEDIR
/libexec/mysqld"
then
...
...
@@ -558,6 +559,7 @@ else
INSTALL_DB
=
"./install_test_db --bin"
MYSQL_FIX_SYSTEM_TABLES
=
"
$CLIENT_BINDIR
/mysql_fix_privilege_tables"
NDB_TOOLS_DIR
=
"
$CLIENT_BINDIR
"
NDB_MGM
=
"
$CLIENT_BINDIR
/ndb_mgm"
if
test
-d
"
$BASEDIR
/share/mysql/english"
then
LANGUAGE
=
"
$BASEDIR
/share/mysql/english/"
...
...
@@ -607,6 +609,7 @@ MYSQL="$MYSQL --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --u
export
MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES
export
CLIENT_BINDIR TESTS_BINDIR CHARSETSDIR
export
NDB_TOOLS_DIR
export
NDB_MGM
MYSQL_TEST_ARGS
=
"--no-defaults --socket=
$MASTER_MYSOCK
--database=
$DB
\
--user=
$DBUSER
--password=
$DBPASSWD
--silent -v --skip-safemalloc
\
...
...
mysql-test/r/ctype_mb.result
View file @
84e7a86d
...
...
@@ -33,7 +33,7 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW KEYS FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 key_a 1 a A NULL
9
NULL YES BTREE
t1 1 key_a 1 a A NULL
3
NULL YES BTREE
ALTER TABLE t1 CHANGE a a CHAR(4);
SHOW CREATE TABLE t1;
Table Create Table
...
...
@@ -53,5 +53,5 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW KEYS FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 key_a 1 a A NULL
9
NULL YES BTREE
t1 1 key_a 1 a A NULL
3
NULL YES BTREE
DROP TABLE t1;
mysql-test/r/select_found.result
View file @
84e7a86d
...
...
@@ -246,3 +246,11 @@ SELECT FOUND_ROWS();
FOUND_ROWS()
0
DROP TABLE t1;
CREATE TABLE t1 (a int, b int);
INSERT INTO t1 VALUES (1,2), (1,3), (1,4), (1,5);
SELECT SQL_CALC_FOUND_ROWS DISTINCT 'a' FROM t1 GROUP BY b LIMIT 2;
a
a
SELECT FOUND_ROWS();
FOUND_ROWS()
1
mysql-test/t/select_found.test
View file @
84e7a86d
...
...
@@ -166,3 +166,12 @@ INSERT INTO t1 VALUES (0), (0), (1), (2);
SELECT
SQL_CALC_FOUND_ROWS
*
FROM
t1
WHERE
a
=
0
GROUP
BY
a
HAVING
a
>
10
;
SELECT
FOUND_ROWS
();
DROP
TABLE
t1
;
#
# Bug #7945: group by + distinct with constant expression + limit
#
CREATE
TABLE
t1
(
a
int
,
b
int
);
INSERT
INTO
t1
VALUES
(
1
,
2
),
(
1
,
3
),
(
1
,
4
),
(
1
,
5
);
SELECT
SQL_CALC_FOUND_ROWS
DISTINCT
'a'
FROM
t1
GROUP
BY
b
LIMIT
2
;
SELECT
FOUND_ROWS
();
mysys/mf_keycache.c
View file @
84e7a86d
...
...
@@ -2444,6 +2444,41 @@ static int flush_all_key_blocks(KEY_CACHE *keycache)
}
/*
Reset the counters of a key cache.
SYNOPSIS
reset_key_cache_counters()
name the name of a key cache
key_cache pointer to the key kache to be reset
DESCRIPTION
This procedure is used by process_key_caches() to reset the counters of all
currently used key caches, both the default one and the named ones.
RETURN
0 on success (always because it can't fail)
*/
int
reset_key_cache_counters
(
const
char
*
name
,
KEY_CACHE
*
key_cache
)
{
DBUG_ENTER
(
"reset_key_cache_counters"
);
if
(
!
key_cache
->
key_cache_inited
)
{
DBUG_PRINT
(
"info"
,
(
"Key cache %s not initialized."
,
name
));
DBUG_RETURN
(
0
);
}
DBUG_PRINT
(
"info"
,
(
"Resetting counters for key cache %s."
,
name
));
key_cache
->
global_blocks_changed
=
0
;
/* Key_blocks_not_flushed */
key_cache
->
global_cache_r_requests
=
0
;
/* Key_read_requests */
key_cache
->
global_cache_read
=
0
;
/* Key_reads */
key_cache
->
global_cache_w_requests
=
0
;
/* Key_write_requests */
key_cache
->
global_cache_write
=
0
;
/* Key_writes */
DBUG_RETURN
(
0
);
}
#ifndef DBUG_OFF
/*
Test if disk-cache is ok
...
...
ndb/include/ndbapi/NdbRecAttr.hpp
View file @
84e7a86d
...
...
@@ -300,13 +300,6 @@ NdbRecAttr::arraySize() const
return
theArraySize
;
}
inline
Int64
NdbRecAttr
::
int64_value
()
const
{
return
*
(
Int64
*
)
theRef
;
}
inline
Int32
NdbRecAttr
::
int32_value
()
const
...
...
@@ -328,13 +321,6 @@ NdbRecAttr::char_value() const
return
*
(
char
*
)
theRef
;
}
inline
Uint64
NdbRecAttr
::
u_64_value
()
const
{
return
*
(
Uint64
*
)
theRef
;
}
inline
Uint32
NdbRecAttr
::
u_32_value
()
const
...
...
@@ -356,20 +342,6 @@ NdbRecAttr::u_char_value() const
return
*
(
Uint8
*
)
theRef
;
}
inline
float
NdbRecAttr
::
float_value
()
const
{
return
*
(
float
*
)
theRef
;
}
inline
double
NdbRecAttr
::
double_value
()
const
{
return
*
(
double
*
)
theRef
;
}
inline
void
NdbRecAttr
::
release
()
...
...
ndb/src/ndbapi/NdbRecAttr.cpp
View file @
84e7a86d
...
...
@@ -245,3 +245,35 @@ NdbOut& operator<<(NdbOut& out, const NdbRecAttr &r)
return
out
;
}
Int64
NdbRecAttr
::
int64_value
()
const
{
Int64
val
;
memcpy
(
&
val
,
theRef
,
8
);
return
val
;
}
Uint64
NdbRecAttr
::
u_64_value
()
const
{
Uint64
val
;
memcpy
(
&
val
,
theRef
,
8
);
return
val
;
}
float
NdbRecAttr
::
float_value
()
const
{
float
val
;
memcpy
(
&
val
,
theRef
,
sizeof
(
val
));
return
val
;
}
double
NdbRecAttr
::
double_value
()
const
{
double
val
;
memcpy
(
&
val
,
theRef
,
sizeof
(
val
));
return
val
;
}
ndb/tools/waiter.cpp
View file @
84e7a86d
...
...
@@ -31,11 +31,13 @@ waitClusterStatus(const char* _addr, ndb_mgm_node_status _status,
unsigned
int
_timeout
);
enum
ndb_waiter_options
{
NDB_STD_OPTS_OPTIONS
NDB_STD_OPTS_OPTIONS
,
OPT_WAIT_STATUS_NOT_STARTED
};
NDB_STD_OPTS_VARS
;
static
int
_no_contact
=
0
;
static
int
_not_started
=
0
;
static
int
_timeout
=
120
;
static
struct
my_option
my_long_options
[]
=
{
...
...
@@ -43,6 +45,9 @@ static struct my_option my_long_options[] =
{
"no-contact"
,
'n'
,
"Wait for cluster no contact"
,
(
gptr
*
)
&
_no_contact
,
(
gptr
*
)
&
_no_contact
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"not-started"
,
OPT_WAIT_STATUS_NOT_STARTED
,
"Wait for cluster not started"
,
(
gptr
*
)
&
_not_started
,
(
gptr
*
)
&
_not_started
,
0
,
GET_BOOL
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"timeout"
,
't'
,
"Timeout to wait"
,
(
gptr
*
)
&
_timeout
,
(
gptr
*
)
&
_timeout
,
0
,
GET_INT
,
REQUIRED_ARG
,
120
,
0
,
0
,
0
,
0
,
0
},
...
...
@@ -91,12 +96,22 @@ int main(int argc, char** argv){
if
(
_hostName
==
0
)
_hostName
=
opt_connect_str
;
if
(
_no_contact
)
{
if
(
waitClusterStatus
(
_hostName
,
NDB_MGM_NODE_STATUS_NO_CONTACT
,
_timeout
)
!=
0
)
return
NDBT_ProgramExit
(
NDBT_FAILED
);
}
else
if
(
waitClusterStatus
(
_hostName
,
NDB_MGM_NODE_STATUS_STARTED
,
_timeout
)
!=
0
)
return
NDBT_ProgramExit
(
NDBT_FAILED
);
enum
ndb_mgm_node_status
wait_status
;
if
(
_no_contact
)
{
wait_status
=
NDB_MGM_NODE_STATUS_NO_CONTACT
;
}
else
if
(
_not_started
)
{
wait_status
=
NDB_MGM_NODE_STATUS_NOT_STARTED
;
}
else
{
wait_status
=
NDB_MGM_NODE_STATUS_STARTED
;
}
if
(
waitClusterStatus
(
_hostName
,
wait_status
,
_timeout
)
!=
0
)
return
NDBT_ProgramExit
(
NDBT_FAILED
);
return
NDBT_ProgramExit
(
NDBT_OK
);
}
...
...
sql/mysql_priv.h
View file @
84e7a86d
...
...
@@ -938,7 +938,6 @@ extern SHOW_COMP_OPTION have_ndbcluster;
extern
struct
system_variables
global_system_variables
;
extern
struct
system_variables
max_system_variables
;
extern
struct
rand_struct
sql_rand
;
extern
KEY_CACHE
*
sql_key_cache
;
extern
const
char
*
opt_date_time_formats
[];
extern
KNOWN_DATE_TIME_FORMAT
known_date_time_formats
[];
...
...
sql/mysqld.cc
View file @
84e7a86d
...
...
@@ -383,7 +383,6 @@ struct system_variables max_system_variables;
MY_TMPDIR
mysql_tmpdir_list
;
MY_BITMAP
temp_pool
;
KEY_CACHE
*
sql_key_cache
;
CHARSET_INFO
*
system_charset_info
,
*
files_charset_info
;
CHARSET_INFO
*
national_charset_info
,
*
table_alias_charset
;
...
...
@@ -1846,14 +1845,14 @@ We will try our best to scrape up some info that will hopefully help diagnose\n\
the problem, but since we have already crashed, something is definitely wrong
\n
\
and this may fail.
\n\n
"
);
fprintf
(
stderr
,
"key_buffer_size=%lu
\n
"
,
(
ulong
)
sql
_key_cache
->
key_cache_mem_size
);
(
ulong
)
dflt
_key_cache
->
key_cache_mem_size
);
fprintf
(
stderr
,
"read_buffer_size=%ld
\n
"
,
global_system_variables
.
read_buff_size
);
fprintf
(
stderr
,
"max_used_connections=%ld
\n
"
,
max_used_connections
);
fprintf
(
stderr
,
"max_connections=%ld
\n
"
,
max_connections
);
fprintf
(
stderr
,
"threads_connected=%d
\n
"
,
thread_count
);
fprintf
(
stderr
,
"It is possible that mysqld could use up to
\n
\
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = %ld K
\n
\
bytes of memory
\n
"
,
((
ulong
)
sql
_key_cache
->
key_cache_mem_size
+
bytes of memory
\n
"
,
((
ulong
)
dflt
_key_cache
->
key_cache_mem_size
+
(
global_system_variables
.
read_buff_size
+
global_system_variables
.
sortbuff_size
)
*
max_connections
)
/
1024
);
...
...
@@ -2120,12 +2119,12 @@ extern "C" void *signal_hand(void *arg __attribute__((unused)))
case
SIGHUP
:
if
(
!
abort_loop
)
{
mysql_print_status
((
THD
*
)
0
);
// Print some debug info
reload_acl_and_cache
((
THD
*
)
0
,
(
REFRESH_LOG
|
REFRESH_TABLES
|
REFRESH_FAST
|
REFRESH_STATUS
|
REFRESH_GRANT
|
REFRESH_THREADS
|
REFRESH_HOSTS
),
(
TABLE_LIST
*
)
0
,
NULL
);
// Flush logs
mysql_print_status
((
THD
*
)
0
);
// Send debug some info
}
break
;
#ifdef USE_ONE_SIGNAL_HAND
...
...
@@ -2699,8 +2698,6 @@ server.");
/* call ha_init_key_cache() on all key caches to init them */
process_key_caches
(
&
ha_init_key_cache
);
/* We must set dflt_key_cache in case we are using ISAM tables */
dflt_key_cache
=
sql_key_cache
;
#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) && !defined(EMBEDDED_LIBRARY)
if
(
locked_in_memory
&&
!
getuid
())
...
...
@@ -5598,10 +5595,10 @@ static void mysql_init_variables(void)
threads
.
empty
();
thread_cache
.
empty
();
key_caches
.
empty
();
multi_keycache_init
();
if
(
!
(
sql_key_cache
=
get_or_create_key_cache
(
default_key_cache_base
.
str
,
if
(
!
(
dflt_key_cache
=
get_or_create_key_cache
(
default_key_cache_base
.
str
,
default_key_cache_base
.
length
)))
exit
(
1
);
multi_keycache_init
();
/* set key_cache_hash.default_value = dflt_key_cache */
/* Initialize structures that is used when processing options */
replicate_rewrite_db
.
empty
();
...
...
sql/set_var.cc
View file @
84e7a86d
...
...
@@ -2174,7 +2174,7 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
if
(
!
tmp
)
// Zero size means delete
{
if
(
key_cache
==
sql
_key_cache
)
if
(
key_cache
==
dflt
_key_cache
)
goto
end
;
// Ignore default key cache
if
(
key_cache
->
key_cache_inited
)
// If initied
...
...
@@ -2188,7 +2188,7 @@ bool sys_var_key_buffer_size::update(THD *thd, set_var *var)
base_name
->
length
,
&
list
);
key_cache
->
in_init
=
1
;
pthread_mutex_unlock
(
&
LOCK_global_system_variables
);
error
=
reassign_keycache_tables
(
thd
,
key_cache
,
sql
_key_cache
);
error
=
reassign_keycache_tables
(
thd
,
key_cache
,
dflt
_key_cache
);
pthread_mutex_lock
(
&
LOCK_global_system_variables
);
key_cache
->
in_init
=
0
;
}
...
...
sql/sql_parse.cc
View file @
84e7a86d
...
...
@@ -4946,6 +4946,7 @@ void kill_one_thread(THD *thd, ulong id)
net_printf
(
thd
,
error
,
id
);
}
/* Clear most status variables */
static
void
refresh_status
(
void
)
...
...
@@ -4955,18 +4956,9 @@ static void refresh_status(void)
{
if
(
ptr
->
type
==
SHOW_LONG
)
*
(
ulong
*
)
ptr
->
value
=
0
;
else
if
(
ptr
->
type
==
SHOW_KEY_CACHE_LONG
)
{
/*
Reset value in 'default' key cache.
This needs to be recoded when we have thread specific key values
*/
char
*
value
=
(((
char
*
)
sql_key_cache
)
+
(
uint
)
((
char
*
)
(
ptr
->
value
)
-
(
char
*
)
&
dflt_key_cache_var
));
*
(
ulong
*
)
value
=
0
;
}
}
/* Reset the counters of all key caches (default and named). */
process_key_caches
(
reset_key_cache_counters
);
pthread_mutex_unlock
(
&
LOCK_status
);
}
...
...
sql/sql_select.cc
View file @
84e7a86d
...
...
@@ -2844,9 +2844,15 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count,
x = used key parts (1 <= x <= c)
*/
double
rec_per_key
;
#if 0
if (!(rec_per_key=(double)
keyinfo->rec_per_key[keyinfo->key_parts-1]))
rec_per_key=(double) s->records/rec+1;
#else
rec_per_key
=
keyinfo
->
rec_per_key
[
keyinfo
->
key_parts
-
1
]
?
(
double
)
keyinfo
->
rec_per_key
[
keyinfo
->
key_parts
-
1
]
:
(
double
)
s
->
records
/
rec
+
1
;
#endif
if
(
!
s
->
records
)
tmp
=
0
;
...
...
@@ -7496,13 +7502,14 @@ remove_duplicates(JOIN *join, TABLE *entry,List<Item> &fields, Item *having)
field_count
++
;
}
if
(
!
field_count
)
{
// only const items
if
(
!
field_count
&&
!
(
join
->
select_options
&
OPTION_FOUND_ROWS
))
{
// only const items with no OPTION_FOUND_ROWS
join
->
unit
->
select_limit_cnt
=
1
;
// Only send first row
DBUG_RETURN
(
0
);
}
Field
**
first_field
=
entry
->
field
+
entry
->
fields
-
field_count
;
offset
=
entry
->
field
[
entry
->
fields
-
field_count
]
->
offset
();
offset
=
field_count
?
entry
->
field
[
entry
->
fields
-
field_count
]
->
offset
()
:
0
;
reclength
=
entry
->
reclength
-
offset
;
free_io_cache
(
entry
);
// Safety
...
...
sql/sql_show.cc
View file @
84e7a86d
...
...
@@ -1025,7 +1025,8 @@ mysqld_show_keys(THD *thd, TABLE_LIST *table_list)
/* Check if we have a key part that only uses part of the field */
if
(
!
(
key_info
->
flags
&
HA_FULLTEXT
)
&&
(
!
key_part
->
field
||
key_part
->
length
!=
table
->
field
[
key_part
->
fieldnr
-
1
]
->
key_length
()))
protocol
->
store_tiny
((
longlong
)
key_part
->
length
);
protocol
->
store_tiny
((
longlong
)
key_part
->
length
/
key_part
->
field
->
charset
()
->
mbmaxlen
);
else
protocol
->
store_null
();
protocol
->
store_null
();
// No pack_information yet
...
...
@@ -2066,7 +2067,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables,
#endif
/* HAVE_OPENSSL */
case
SHOW_KEY_CACHE_LONG
:
case
SHOW_KEY_CACHE_CONST_LONG
:
value
=
(
value
-
(
char
*
)
&
dflt_key_cache_var
)
+
(
char
*
)
sql
_key_cache
;
value
=
(
value
-
(
char
*
)
&
dflt_key_cache_var
)
+
(
char
*
)
dflt
_key_cache
;
end
=
int10_to_str
(
*
(
long
*
)
value
,
buff
,
10
);
break
;
case
SHOW_UNDEF
:
// Show never happen
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment