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
e4d4baed
Commit
e4d4baed
authored
Jun 03, 2005
by
serg@serg.mylan
Browse files
Options
Browse Files
Download
Plain Diff
merged
parents
f9e9406b
52340c55
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
90 additions
and
346 deletions
+90
-346
configure.in
configure.in
+1
-7
include/my_global.h
include/my_global.h
+0
-7
mysql-test/t/create.test
mysql-test/t/create.test
+14
-0
scripts/make_binary_distribution.sh
scripts/make_binary_distribution.sh
+0
-3
sql/lock.cc
sql/lock.cc
+21
-48
sql/mysql_priv.h
sql/mysql_priv.h
+5
-2
sql/sql_acl.cc
sql/sql_acl.cc
+2
-2
sql/sql_base.cc
sql/sql_base.cc
+3
-3
sql/sql_handler.cc
sql/sql_handler.cc
+1
-1
sql/sql_insert.cc
sql/sql_insert.cc
+18
-6
sql/sql_parse.cc
sql/sql_parse.cc
+23
-2
sql/sql_repl.cc
sql/sql_repl.cc
+1
-1
sql/sql_table.cc
sql/sql_table.cc
+1
-1
support-files/mysql-max.spec.sh
support-files/mysql-max.spec.sh
+0
-263
No files found.
configure.in
View file @
e4d4baed
...
@@ -1262,16 +1262,10 @@ EOF
...
@@ -1262,16 +1262,10 @@ EOF
#
#
echo
-n
"making sure specific build files are writable... "
echo
-n
"making sure specific build files are writable... "
for
file
in
\
for
file
in
\
Docs/include.texi
\
Docs/mysql.info
\
Docs/mysql.info
\
Docs/manual.txt
\
Docs/manual_toc.html
\
Docs/manual.html
\
Docs/INSTALL-BINARY
\
Docs/INSTALL-BINARY
\
INSTALL-SOURCE
\
INSTALL-SOURCE
\
COPYING
\
COPYING
COPYING.LIB
\
MIRRORS
do
do
if
test
-e
$file
;
then
if
test
-e
$file
;
then
chmod
+w
$file
chmod
+w
$file
...
...
include/my_global.h
View file @
e4d4baed
...
@@ -285,13 +285,6 @@ C_MODE_START int __cxa_pure_virtual() {\
...
@@ -285,13 +285,6 @@ C_MODE_START int __cxa_pure_virtual() {\
#include <alloca.h>
#include <alloca.h>
#endif
#endif
#ifdef HAVE_ATOMIC_ADD
#ifdef HAVE_ATOMIC_ADD
#define __SMP__
#ifdef HAVE_LINUX_CONFIG_H
#include <linux/config.h>
/* May define CONFIG_SMP */
#endif
#ifndef CONFIG_SMP
#define CONFIG_SMP
#endif
#if defined(__ia64__)
#if defined(__ia64__)
#define new my_arg_new
#define new my_arg_new
#define need_to_restore_new 1
#define need_to_restore_new 1
...
...
mysql-test/t/create.test
View file @
e4d4baed
...
@@ -460,3 +460,17 @@ insert into t2 values ();
...
@@ -460,3 +460,17 @@ insert into t2 values ();
select
*
from
t1
;
select
*
from
t1
;
select
*
from
t2
;
select
*
from
t2
;
drop
table
t1
,
t2
;
drop
table
t1
,
t2
;
#
# Bug#10224 - ANALYZE TABLE crashing with simultaneous
# CREATE ... SELECT statement.
# This tests two additional possible errors and a hang if
# an improper fix is present.
#
create
table
t1
(
a
int
);
--
error
1093
create
table
t1
select
*
from
t1
;
--
error
1093
create
table
t2
union
=
(
t1
)
select
*
from
t1
;
flush
tables
with
read
lock
;
unlock
tables
;
drop
table
t1
;
scripts/make_binary_distribution.sh
View file @
e4d4baed
...
@@ -76,9 +76,6 @@ if [ $BASE_SYSTEM != "netware" ] ; then
...
@@ -76,9 +76,6 @@ if [ $BASE_SYSTEM != "netware" ] ; then
fi
fi
for
i
in
ChangeLog
\
for
i
in
ChangeLog
\
Docs/manual.html
\
Docs/manual.txt
\
Docs/manual_toc.html
\
Docs/mysql.info
Docs/mysql.info
do
do
if
[
-f
$i
]
if
[
-f
$i
]
...
...
sql/lock.cc
View file @
e4d4baed
...
@@ -82,8 +82,24 @@ static int unlock_external(THD *thd, TABLE **table,uint count);
...
@@ -82,8 +82,24 @@ static int unlock_external(THD *thd, TABLE **table,uint count);
static
void
print_lock_error
(
int
error
);
static
void
print_lock_error
(
int
error
);
MYSQL_LOCK
*
mysql_lock_tables
(
THD
*
thd
,
TABLE
**
tables
,
uint
count
,
/*
bool
ignore_global_read_lock
)
Lock tables.
SYNOPSIS
mysql_lock_tables()
thd The current thread.
tables An array of pointers to the tables to lock.
count The number of tables to lock.
flags Options:
MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK Ignore a global read lock
MYSQL_LOCK_IGNORE_FLUSH Ignore a flush tables.
RETURN
A lock structure pointer on success.
NULL on error.
*/
MYSQL_LOCK
*
mysql_lock_tables
(
THD
*
thd
,
TABLE
**
tables
,
uint
count
,
uint
flags
)
{
{
MYSQL_LOCK
*
sql_lock
;
MYSQL_LOCK
*
sql_lock
;
TABLE
*
write_lock_used
;
TABLE
*
write_lock_used
;
...
@@ -94,7 +110,8 @@ MYSQL_LOCK *mysql_lock_tables(THD *thd, TABLE **tables, uint count,
...
@@ -94,7 +110,8 @@ MYSQL_LOCK *mysql_lock_tables(THD *thd, TABLE **tables, uint count,
if
(
!
(
sql_lock
=
get_lock_data
(
thd
,
tables
,
count
,
0
,
&
write_lock_used
)))
if
(
!
(
sql_lock
=
get_lock_data
(
thd
,
tables
,
count
,
0
,
&
write_lock_used
)))
break
;
break
;
if
(
global_read_lock
&&
write_lock_used
&&
!
ignore_global_read_lock
)
if
(
global_read_lock
&&
write_lock_used
&&
!
(
flags
&
MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK
))
{
{
/*
/*
Someone has issued LOCK ALL TABLES FOR READ and we want a write lock
Someone has issued LOCK ALL TABLES FOR READ and we want a write lock
...
@@ -128,7 +145,7 @@ MYSQL_LOCK *mysql_lock_tables(THD *thd, TABLE **tables, uint count,
...
@@ -128,7 +145,7 @@ MYSQL_LOCK *mysql_lock_tables(THD *thd, TABLE **tables, uint count,
thd
->
some_tables_deleted
=
1
;
// Try again
thd
->
some_tables_deleted
=
1
;
// Try again
sql_lock
->
lock_count
=
0
;
// Locks are alread freed
sql_lock
->
lock_count
=
0
;
// Locks are alread freed
}
}
else
if
(
!
thd
->
some_tables_deleted
)
else
if
(
!
thd
->
some_tables_deleted
||
(
flags
&
MYSQL_LOCK_IGNORE_FLUSH
)
)
{
{
thd
->
locked
=
0
;
thd
->
locked
=
0
;
break
;
break
;
...
@@ -914,47 +931,3 @@ void make_global_read_lock_block_commit(THD *thd)
...
@@ -914,47 +931,3 @@ void make_global_read_lock_block_commit(THD *thd)
}
}
/*
Set protection against global read lock.
SYNOPSIS
set_protect_against_global_read_lock()
void
RETURN
FALSE OK, no global read lock exists.
TRUE Error, global read lock exists already.
*/
my_bool
set_protect_against_global_read_lock
(
void
)
{
my_bool
global_read_lock_exists
;
pthread_mutex_lock
(
&
LOCK_open
);
if
(
!
(
global_read_lock_exists
=
test
(
global_read_lock
)))
protect_against_global_read_lock
++
;
pthread_mutex_unlock
(
&
LOCK_open
);
return
global_read_lock_exists
;
}
/*
Unset protection against global read lock.
SYNOPSIS
unset_protect_against_global_read_lock()
void
RETURN
void
*/
void
unset_protect_against_global_read_lock
(
void
)
{
pthread_mutex_lock
(
&
LOCK_open
);
protect_against_global_read_lock
--
;
pthread_mutex_unlock
(
&
LOCK_open
);
pthread_cond_broadcast
(
&
COND_refresh
);
}
sql/mysql_priv.h
View file @
e4d4baed
...
@@ -978,8 +978,11 @@ extern pthread_t signal_thread;
...
@@ -978,8 +978,11 @@ extern pthread_t signal_thread;
extern
struct
st_VioSSLAcceptorFd
*
ssl_acceptor_fd
;
extern
struct
st_VioSSLAcceptorFd
*
ssl_acceptor_fd
;
#endif
/* HAVE_OPENSSL */
#endif
/* HAVE_OPENSSL */
MYSQL_LOCK
*
mysql_lock_tables
(
THD
*
thd
,
TABLE
**
table
,
uint
count
,
MYSQL_LOCK
*
mysql_lock_tables
(
THD
*
thd
,
TABLE
**
table
,
uint
count
,
uint
flags
);
bool
ignore_global_read_lock
=
FALSE
);
/* mysql_lock_tables() flags bits */
#define MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK 0x0001
#define MYSQL_LOCK_IGNORE_FLUSH 0x0002
void
mysql_unlock_tables
(
THD
*
thd
,
MYSQL_LOCK
*
sql_lock
);
void
mysql_unlock_tables
(
THD
*
thd
,
MYSQL_LOCK
*
sql_lock
);
void
mysql_unlock_read_tables
(
THD
*
thd
,
MYSQL_LOCK
*
sql_lock
);
void
mysql_unlock_read_tables
(
THD
*
thd
,
MYSQL_LOCK
*
sql_lock
);
void
mysql_unlock_some_tables
(
THD
*
thd
,
TABLE
**
table
,
uint
count
);
void
mysql_unlock_some_tables
(
THD
*
thd
,
TABLE
**
table
,
uint
count
);
...
...
sql/sql_acl.cc
View file @
e4d4baed
...
@@ -184,7 +184,7 @@ my_bool acl_init(THD *org_thd, bool dont_read_acl_tables)
...
@@ -184,7 +184,7 @@ my_bool acl_init(THD *org_thd, bool dont_read_acl_tables)
ptr
[
0
]
=
tables
[
0
].
table
;
ptr
[
0
]
=
tables
[
0
].
table
;
ptr
[
1
]
=
tables
[
1
].
table
;
ptr
[
1
]
=
tables
[
1
].
table
;
ptr
[
2
]
=
tables
[
2
].
table
;
ptr
[
2
]
=
tables
[
2
].
table
;
if
(
!
(
lock
=
mysql_lock_tables
(
thd
,
ptr
,
3
)))
if
(
!
(
lock
=
mysql_lock_tables
(
thd
,
ptr
,
3
,
0
)))
{
{
sql_print_error
(
"Fatal error: Can't lock privilege tables: %s"
,
sql_print_error
(
"Fatal error: Can't lock privilege tables: %s"
,
thd
->
net
.
last_error
);
thd
->
net
.
last_error
);
...
@@ -2658,7 +2658,7 @@ my_bool grant_init(THD *org_thd)
...
@@ -2658,7 +2658,7 @@ my_bool grant_init(THD *org_thd)
TABLE
*
ptr
[
2
];
// Lock tables for quick update
TABLE
*
ptr
[
2
];
// Lock tables for quick update
ptr
[
0
]
=
tables
[
0
].
table
;
ptr
[
0
]
=
tables
[
0
].
table
;
ptr
[
1
]
=
tables
[
1
].
table
;
ptr
[
1
]
=
tables
[
1
].
table
;
if
(
!
(
lock
=
mysql_lock_tables
(
thd
,
ptr
,
2
)))
if
(
!
(
lock
=
mysql_lock_tables
(
thd
,
ptr
,
2
,
0
)))
goto
end
;
goto
end
;
t_table
=
tables
[
0
].
table
;
c_table
=
tables
[
1
].
table
;
t_table
=
tables
[
0
].
table
;
c_table
=
tables
[
1
].
table
;
...
...
sql/sql_base.cc
View file @
e4d4baed
...
@@ -1163,7 +1163,7 @@ bool reopen_tables(THD *thd,bool get_locks,bool in_refresh)
...
@@ -1163,7 +1163,7 @@ bool reopen_tables(THD *thd,bool get_locks,bool in_refresh)
MYSQL_LOCK
*
lock
;
MYSQL_LOCK
*
lock
;
/* We should always get these locks */
/* We should always get these locks */
thd
->
some_tables_deleted
=
0
;
thd
->
some_tables_deleted
=
0
;
if
((
lock
=
mysql_lock_tables
(
thd
,
tables
,(
uint
)
(
tables_ptr
-
tables
)
)))
if
((
lock
=
mysql_lock_tables
(
thd
,
tables
,
(
uint
)
(
tables_ptr
-
tables
),
0
)))
{
{
thd
->
locked_tables
=
mysql_lock_merge
(
thd
->
locked_tables
,
lock
);
thd
->
locked_tables
=
mysql_lock_merge
(
thd
->
locked_tables
,
lock
);
}
}
...
@@ -1644,7 +1644,7 @@ TABLE *open_ltable(THD *thd, TABLE_LIST *table_list, thr_lock_type lock_type)
...
@@ -1644,7 +1644,7 @@ TABLE *open_ltable(THD *thd, TABLE_LIST *table_list, thr_lock_type lock_type)
{
{
DBUG_ASSERT
(
thd
->
lock
==
0
);
// You must lock everything at once
DBUG_ASSERT
(
thd
->
lock
==
0
);
// You must lock everything at once
if
((
table
->
reginfo
.
lock_type
=
lock_type
)
!=
TL_UNLOCK
)
if
((
table
->
reginfo
.
lock_type
=
lock_type
)
!=
TL_UNLOCK
)
if
(
!
(
thd
->
lock
=
mysql_lock_tables
(
thd
,
&
table_list
->
table
,
1
)))
if
(
!
(
thd
->
lock
=
mysql_lock_tables
(
thd
,
&
table_list
->
table
,
1
,
0
)))
table
=
0
;
table
=
0
;
}
}
}
}
...
@@ -1794,7 +1794,7 @@ int lock_tables(THD *thd, TABLE_LIST *tables, uint count)
...
@@ -1794,7 +1794,7 @@ int lock_tables(THD *thd, TABLE_LIST *tables, uint count)
if
(
!
table
->
derived
)
if
(
!
table
->
derived
)
*
(
ptr
++
)
=
table
->
table
;
*
(
ptr
++
)
=
table
->
table
;
}
}
if
(
!
(
thd
->
lock
=
mysql_lock_tables
(
thd
,
start
,
(
uint
)
(
ptr
-
start
))))
if
(
!
(
thd
->
lock
=
mysql_lock_tables
(
thd
,
start
,
(
uint
)
(
ptr
-
start
)
,
0
)))
return
-
1
;
/* purecov: inspected */
return
-
1
;
/* purecov: inspected */
}
}
else
else
...
...
sql/sql_handler.cc
View file @
e4d4baed
...
@@ -454,7 +454,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
...
@@ -454,7 +454,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
protocol
->
send_fields
(
&
list
,
1
);
protocol
->
send_fields
(
&
list
,
1
);
HANDLER_TABLES_HACK
(
thd
);
HANDLER_TABLES_HACK
(
thd
);
lock
=
mysql_lock_tables
(
thd
,
&
tables
->
table
,
1
);
lock
=
mysql_lock_tables
(
thd
,
&
tables
->
table
,
1
,
0
);
HANDLER_TABLES_HACK
(
thd
);
HANDLER_TABLES_HACK
(
thd
);
if
(
!
lock
)
if
(
!
lock
)
...
...
sql/sql_insert.cc
View file @
e4d4baed
...
@@ -882,10 +882,13 @@ static TABLE *delayed_get_table(THD *thd,TABLE_LIST *table_list)
...
@@ -882,10 +882,13 @@ static TABLE *delayed_get_table(THD *thd,TABLE_LIST *table_list)
Avoid that a global read lock steps in while we are creating the
Avoid that a global read lock steps in while we are creating the
new thread. It would block trying to open the table. Hence, the
new thread. It would block trying to open the table. Hence, the
DI thread and this thread would wait until after the global
DI thread and this thread would wait until after the global
readlock is gone. If the read lock exists already, we leave with
readlock is gone. Since the insert thread needs to wait for a
no table and then switch to non-delayed insert.
global read lock anyway, we do it right now. Note that
wait_if_global_read_lock() sets a protection against a new
global read lock when it succeeds. This needs to be released by
start_waiting_global_read_lock().
*/
*/
if
(
set_protect_against_global_read_lock
(
))
if
(
wait_if_global_read_lock
(
thd
,
0
,
1
))
goto
err
;
goto
err
;
if
(
!
(
tmp
=
new
delayed_insert
()))
if
(
!
(
tmp
=
new
delayed_insert
()))
{
{
...
@@ -927,7 +930,11 @@ static TABLE *delayed_get_table(THD *thd,TABLE_LIST *table_list)
...
@@ -927,7 +930,11 @@ static TABLE *delayed_get_table(THD *thd,TABLE_LIST *table_list)
pthread_cond_wait
(
&
tmp
->
cond_client
,
&
tmp
->
mutex
);
pthread_cond_wait
(
&
tmp
->
cond_client
,
&
tmp
->
mutex
);
}
}
pthread_mutex_unlock
(
&
tmp
->
mutex
);
pthread_mutex_unlock
(
&
tmp
->
mutex
);
unset_protect_against_global_read_lock
();
/*
Release the protection against the global read lock and wake
everyone, who might want to set a global read lock.
*/
start_waiting_global_read_lock
(
thd
);
thd
->
proc_info
=
"got old table"
;
thd
->
proc_info
=
"got old table"
;
if
(
tmp
->
thd
.
killed
)
if
(
tmp
->
thd
.
killed
)
{
{
...
@@ -963,7 +970,11 @@ static TABLE *delayed_get_table(THD *thd,TABLE_LIST *table_list)
...
@@ -963,7 +970,11 @@ static TABLE *delayed_get_table(THD *thd,TABLE_LIST *table_list)
err1:
err1:
thd
->
fatal_error
();
thd
->
fatal_error
();
unset_protect_against_global_read_lock
();
/*
Release the protection against the global read lock and wake
everyone, who might want to set a global read lock.
*/
start_waiting_global_read_lock
(
thd
);
err:
err:
pthread_mutex_unlock
(
&
LOCK_delayed_create
);
pthread_mutex_unlock
(
&
LOCK_delayed_create
);
DBUG_RETURN
(
0
);
// Continue with normal insert
DBUG_RETURN
(
0
);
// Continue with normal insert
...
@@ -1319,7 +1330,8 @@ extern "C" pthread_handler_decl(handle_delayed_insert,arg)
...
@@ -1319,7 +1330,8 @@ extern "C" pthread_handler_decl(handle_delayed_insert,arg)
handler will close the table and finish when the outstanding
handler will close the table and finish when the outstanding
inserts are done.
inserts are done.
*/
*/
if
(
!
(
thd
->
lock
=
mysql_lock_tables
(
thd
,
&
di
->
table
,
1
,
TRUE
)))
if
(
!
(
thd
->
lock
=
mysql_lock_tables
(
thd
,
&
di
->
table
,
1
,
MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK
)))
{
{
di
->
dead
=
1
;
// Some fatal error
di
->
dead
=
1
;
// Some fatal error
thd
->
killed
=
1
;
thd
->
killed
=
1
;
...
...
sql/sql_parse.cc
View file @
e4d4baed
...
@@ -2430,6 +2430,24 @@ mysql_execute_command(THD *thd)
...
@@ -2430,6 +2430,24 @@ mysql_execute_command(THD *thd)
goto
unsent_create_error
;
goto
unsent_create_error
;
}
}
#endif
#endif
/*
The create-select command will open and read-lock the select table
and then create, open and write-lock the new table. If a global
read lock steps in, we get a deadlock. The write lock waits for
the global read lock, while the global read lock waits for the
select table to be closed. So we wait until the global readlock is
gone before starting both steps. Note that
wait_if_global_read_lock() sets a protection against a new global
read lock when it succeeds. This needs to be released by
start_waiting_global_read_lock(). We protect the normal CREATE
TABLE in the same way. That way we avoid that a new table is
created during a gobal read lock.
*/
if
(
wait_if_global_read_lock
(
thd
,
0
,
1
))
{
res
=
-
1
;
break
;
}
/*
/*
If we are using SET CHARSET without DEFAULT, add an implicite
If we are using SET CHARSET without DEFAULT, add an implicite
DEFAULT to not confuse old users. (This may change).
DEFAULT to not confuse old users. (This may change).
...
@@ -2493,13 +2511,16 @@ mysql_execute_command(THD *thd)
...
@@ -2493,13 +2511,16 @@ mysql_execute_command(THD *thd)
if
(
!
res
)
if
(
!
res
)
send_ok
(
thd
);
send_ok
(
thd
);
}
}
// put tables back for PS rexecuting
// put tables back for PS rexecuting
tables
=
lex
->
link_first_table_back
(
tables
,
create_table
,
tables
=
lex
->
link_first_table_back
(
tables
,
create_table
,
create_table_local
);
create_table_local
);
/*
Release the protection against the global read lock and wake
everyone, who might want to set a global read lock.
*/
start_waiting_global_read_lock
(
thd
);
break
;
break
;
res
=
1
;
//error reported
unsent_create_error:
unsent_create_error:
// put tables back for PS rexecuting
// put tables back for PS rexecuting
tables
=
lex
->
link_first_table_back
(
tables
,
create_table
,
tables
=
lex
->
link_first_table_back
(
tables
,
create_table
,
...
...
sql/sql_repl.cc
View file @
e4d4baed
...
@@ -81,7 +81,7 @@ static int send_file(THD *thd)
...
@@ -81,7 +81,7 @@ static int send_file(THD *thd)
char
fname
[
FN_REFLEN
+
1
];
char
fname
[
FN_REFLEN
+
1
];
const
char
*
errmsg
=
0
;
const
char
*
errmsg
=
0
;
int
old_timeout
;
int
old_timeout
;
u
int
packet_len
;
u
nsigned
long
packet_len
;
char
buf
[
IO_SIZE
];
// It's safe to alloc this
char
buf
[
IO_SIZE
];
// It's safe to alloc this
DBUG_ENTER
(
"send_file"
);
DBUG_ENTER
(
"send_file"
);
...
...
sql/sql_table.cc
View file @
e4d4baed
...
@@ -1536,7 +1536,7 @@ TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
...
@@ -1536,7 +1536,7 @@ TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
if
(
!
table
)
if
(
!
table
)
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
table
->
reginfo
.
lock_type
=
TL_WRITE
;
table
->
reginfo
.
lock_type
=
TL_WRITE
;
if
(
!
((
*
lock
)
=
mysql_lock_tables
(
thd
,
&
table
,
1
)))
if
(
!
((
*
lock
)
=
mysql_lock_tables
(
thd
,
&
table
,
1
,
MYSQL_LOCK_IGNORE_FLUSH
)))
{
{
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
hash_delete
(
&
open_cache
,(
byte
*
)
table
);
hash_delete
(
&
open_cache
,(
byte
*
)
table
);
...
...
support-files/mysql-max.spec.sh
deleted
100644 → 0
View file @
f9e9406b
%define mysql_version @VERSION@
%define shared_lib_version @SHARED_LIB_VERSION@
%define release 2
%define mysqld_user mysql
%define see_base For a description of MySQL see the base MySQL RPM or http://www.mysql.com
Name: MySQL
Summary: MySQL: a very fast and reliable SQL database engine
Group: Applications/Databases
Summary
(
pt_BR
)
: MySQL: Um servidor SQL rpido e confivel.
Group
(
pt_BR
)
: Aplicaes/Banco_de_Dados
Version: @MYSQL_NO_DASH_VERSION@
Release: %
{
release
}
Copyright: GPL / LGPL
Source: http://www.mysql.com/Downloads/MySQL-@MYSQL_BASE_VERSION@/mysql-%
{
mysql_version
}
.tar.gz
Icon: mysql.gif
URL: http://www.mysql.com/
Packager: David Axmark <david@mysql.com>, Monty <monty@mysql.com>
Provides: msqlormysql MySQL-server
Obsoletes: mysql
# Think about what you use here since the first step is to
# run a rm -rf
BuildRoot: /var/tmp/mysql-max
# From the manual
%description
MySQL is a
true
multi-user, multi-threaded SQL
(
Structured Query
Language
)
database server. MySQL is a client/server implementation
that consists of a server daemon
(
mysqld
)
and many different client
programs/libraries.
The main goals of MySQL are speed, robustness and ease of use. MySQL
was originally developed because we needed a SQL server that could
handle very big databases with magnitude higher speed than what any
database vendor could offer to us. And since we did not need all the
features that made their server slow we made our own. We have now been
using MySQL since 1996
in
a environment with more than 40 databases,
10,000 tables, of which more than 500 have more than 7 million
rows. This is about 200G of data.
The base upon which MySQL is built is a
set
of routines that have been
used
in
a highly demanding production environment
for
many
years. While MySQL is still
in
development, it already offers a rich
and highly useful
function
set.
The MySQL-max version differs from the normal MySQL server distribution
in
that the BDB and Innobase table handlers are enabled by default.
You can use any normal MySQL client with the MySQL-max server.
See the documentation
for
more information.
%description
-l
pt_BR
O MySQL um servidor de banco de dados SQL realmente multiusurio e
\
multi-tarefa. A linguagem SQL a mais popular linguagem para banco de
\
dados no mundo. O MySQL uma implementao cliente/servidor que
\
consiste de um servidor chamado mysqld e diversos
\
programas/bibliotecas clientes. Os principais objetivos
do
MySQL so:
\
velocidade, robustez e facilidade de uso. O MySQL foi originalmente
\
desenvolvido porque ns na Tcx precisvamos de um servidor SQL que
\
pudesse lidar com grandes bases de dados e com uma velocidade muito
\
maior
do
que a que qualquer vendedor podia nos oferecer. Estamos
\
usando
\
o MySQL desde 1996 em um ambiente com mais de 40 bases de dados com 10.000
\
tabelas, das quais mais de 500 tm mais de 7 milhes de linhas. Isto o
\
equivalente a aproximadamente 50G de dados crticos. A base da construo
do
\
MySQL uma srie de rotinas que foram usadas em um ambiente de produo com
\
alta demanda por muitos anos. Mesmo o MySQL estando ainda em desenvolvimento,
\
ele j oferece um conjunto de funes muito ricas e teis. Veja a documentao
\
para maiores informaes.
%prep
%setup
-n
mysql-max-%
{
mysql_version
}
# %setup -T -D -a 1 -n mysql-max-%{mysql_version}
%build
# The all-static flag is to make the RPM work on different
# distributions. This version tries to put shared mysqlclient libraries
# in a separate package.
BuildMySQL
()
{
# The --enable-assembler simply does nothing on systems that does not
# support assembler speedups.
sh
-c
"PATH=
\"
${
MYSQL_BUILD_PATH
:-
/bin
:/usr/bin
}
\"
\
CC=
\"
${
MYSQL_BUILD_CC
:-
egcs
}
\"
\
CFLAGS=
\"
${
MYSQL_BUILD_CFLAGS
:-
-O6 -fno-omit-frame-pointer
}
\"
\
CXX=
\"
${
MYSQL_BUILD_CXX
:-
egcs
}
\"
\
CXXFLAGS=
\"
${
MYSQL_BUILD_CXXFLAGS
:-
-O6 \
-felide-constructors -fno-exceptions -fno-rtti \
-fno-omit-frame-pointer
}
\"
\
./configure
\
$*
\
--enable-assembler
\
--with-mysqld-user=%{mysqld_user}
\
--with-unix-socket-path=/var/lib/mysql/mysql.sock
\
--prefix=/
\
--with-extra-charsets=complex
\
--exec-prefix=/usr
\
--libexecdir=/usr/sbin
\
--sysconfdir=/etc
\
--datadir=/usr/share
\
--localstatedir=/var/lib/mysql
\
--infodir=/usr/info
\
--includedir=/usr/include
\
--mandir=/usr/man
\
--with-berkeley-db
\
--with-innodb
\
--with-comment=
\"
Official MySQL-Max RPM
\"
;
# Add this for more debugging support
# --with-debug
# Add this for MyISAM RAID support:
# --with-raid
"
make
}
# Use the build root for temporary storage of the shared libraries.
RBR
=
$RPM_BUILD_ROOT
MBD
=
$RPM_BUILD_DIR
/mysql-max-%
{
mysql_version
}
if
test
-z
"
$RBR
"
-o
"
$RBR
"
=
"/"
then
echo
"RPM_BUILD_ROOT has stupid value"
exit
1
fi
rm
-rf
$RBR
mkdir
-p
$RBR
#cd $MBD/db-%{db_version}/dist
#./configure --prefix=$RBR/usr/BDB
#make install
#
#echo $RBR $MBD
#cd $MBD
BuildMySQL
"--disable-shared"
\
"--with-mysqld-ldflags='-all-static'"
\
"--with-client-ldflags='-all-static'"
%install
-n
mysql-max-%
{
mysql_version
}
RBR
=
$RPM_BUILD_ROOT
MBD
=
$RPM_BUILD_DIR
/mysql-max-%
{
mysql_version
}
# Ensure that needed directories exists
install
-d
$RBR
/etc/
{
logrotate.d,rc.d/init.d
}
install
-d
$RBR
/var/lib/mysql/mysql
install
-d
$RBR
/usr/share/sql-bench
install
-d
$RBR
/usr/share/mysql-test
install
-d
$RBR
/usr/
{
sbin,share,man,include
}
install
-d
$RBR
/usr/doc/MySQL-%
{
mysql_version
}
install
-d
$RBR
/usr/lib
# Make install
make
install
DESTDIR
=
$RBR
benchdir_root
=
/usr/share/
# Install logrotate and autostart
install
-m644
$MBD
/support-files/mysql-log-rotate
$RBR
/etc/logrotate.d/mysql
install
-m755
$MBD
/support-files/mysql.server
$RBR
/etc/rc.d/init.d/mysql
# Install docs
install
-m644
$RPM_BUILD_DIR
/mysql-max-%
{
mysql_version
}
/Docs/mysql.info
\
$RBR
/usr/info/mysql.info
for
file
in
README COPYING COPYING.LIB Docs/manual_toc.html Docs/manual.html
\
Docs/manual.txt Docs/manual.texi Docs/manual.ps
\
support-files/my-huge.cnf support-files/my-large.cnf
\
support-files/my-medium.cnf support-files/my-small.cnf
do
b
=
`
basename
$file
`
install
-m644
$MBD
/
$file
$RBR
/usr/doc/MySQL-%
{
mysql_version
}
/
$b
done
%pre
if
test
-x
/etc/rc.d/init.d/mysql
then
/etc/rc.d/init.d/mysql stop
>
/dev/null 2>&1
echo
"Giving mysqld a couple of seconds to exit nicely"
sleep
5
fi
%post
mysql_datadir
=
/var/lib/mysql
# Create data directory if needed
if
test
!
-d
$mysql_datadir
;
then
mkdir
$mysql_datadir
;
fi
if
test
!
-d
$mysql_datadir
/mysql
;
then
mkdir
$mysql_datadir
/mysql
;
fi
if
test
!
-d
$mysql_datadir
/test
;
then
mkdir
$mysql_datadir
/test
;
fi
# Make MySQL start/shutdown automatically when the machine does it.
/sbin/chkconfig
--add
mysql
# Create a MySQL user. Do not report any problems if it already
# exists. This is redhat specific and should be handled more portable
useradd
-M
-r
-d
$mysql_datadir
-s
/bin/bash
-c
"MySQL server"
mysql 2> /dev/null
||
true
# Change permissions so that the user that will run the MySQL daemon
# owns all database files.
chown
-R
mysql
$mysql_datadir
# Initiate databases
mysql_install_db
-IN-RPM
# Change permissions again to fix any new files.
chown
-R
mysql
$mysql_datadir
# Fix permissions for the permission database so that only the user
# can read them.
chmod
-R
og-rw
$mysql_datadir
/mysql
# Restart in the same way that mysqld will be started normally.
/etc/rc.d/init.d/mysql start
# Allow mysqld_safe to start mysqld and print a message before we exit
sleep
2
%preun
if
test
-x
/etc/rc.d/init.d/mysql
then
/etc/rc.d/init.d/mysql stop
>
/dev/null
fi
# Remove autostart of mysql
if
test
$1
=
0
then
/sbin/chkconfig
--del
mysql
fi
# We do not remove the mysql user since it may still own a lot of
# database files.
%files
%attr
(
-, root, root
)
%doc /usr/doc/MySQL-%
{
mysql_version
}
/
%attr
(
755, root, root
)
/usr/bin/isamchk
%attr
(
755, root, root
)
/usr/bin/isamlog
%attr
(
755, root, root
)
/usr/bin/pack_isam
%attr
(
755, root, root
)
/usr/bin/myisamchk
%attr
(
755, root, root
)
/usr/bin/myisamlog
%attr
(
755, root, root
)
/usr/bin/myisampack
%attr
(
755, root, root
)
/usr/bin/mysql_fix_privilege_tables
%attr
(
755, root, root
)
/usr/bin/mysql_convert_table_format
%attr
(
755, root, root
)
/usr/bin/mysql_install_db
%attr
(
755, root, root
)
/usr/bin/mysql_setpermission
%attr
(
755, root, root
)
/usr/bin/mysql_zap
%attr
(
755, root, root
)
/usr/bin/mysqlbug
%attr
(
755, root, root
)
/usr/bin/mysqltest
%attr
(
755, root, root
)
/usr/bin/mysqlhotcopy
%attr
(
755, root, root
)
/usr/bin/perror
%attr
(
755, root, root
)
/usr/bin/replace
%attr
(
755, root, root
)
/usr/bin/resolveip
%attr
(
755, root, root
)
/usr/bin/mysqld_safe
%attr
(
755, root, root
)
/usr/bin/mysqld_multi
%attr
(
755, root, root
)
/usr/bin/my_print_defaults
%attr
(
644, root, root
)
/usr/info/mysql.info
*
%attr
(
755, root, root
)
/usr/sbin/mysqld
%attr
(
644, root, root
)
/etc/logrotate.d/mysql
%attr
(
755, root, root
)
/etc/rc.d/init.d/mysql
%attr
(
755, root, root
)
/usr/share/mysql/
%changelog
*
Fri Apr 13 2001 Monty
First version of mysql-max.spec.sh based on mysql.spec.sh
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