Commit f935dcf2 authored by sasha@mysql.sashanet.com's avatar sasha@mysql.sashanet.com

merged

parents 008456c9 8060b31a
This diff is collapsed.
...@@ -119,6 +119,7 @@ struct __db_dbt { ...@@ -119,6 +119,7 @@ struct __db_dbt {
u_int32_t dlen; /* RO: get/put record length. */ u_int32_t dlen; /* RO: get/put record length. */
u_int32_t doff; /* RO: get/put record offset. */ u_int32_t doff; /* RO: get/put record offset. */
void *app_private; /* Application-private handle. */
#define DB_DBT_ISSET 0x001 /* Lower level calls set value. */ #define DB_DBT_ISSET 0x001 /* Lower level calls set value. */
#define DB_DBT_MALLOC 0x002 /* Return in malloc'd memory. */ #define DB_DBT_MALLOC 0x002 /* Return in malloc'd memory. */
#define DB_DBT_PARTIAL 0x004 /* Partial put/get. */ #define DB_DBT_PARTIAL 0x004 /* Partial put/get. */
......
...@@ -1164,10 +1164,10 @@ if test "$ac_cv_lib_pthread_strtok_r" = "no" ...@@ -1164,10 +1164,10 @@ if test "$ac_cv_lib_pthread_strtok_r" = "no"
then then
my_save_LIBS="$LIBS" my_save_LIBS="$LIBS"
AC_CHECK_LIB(c_r,strtok_r) AC_CHECK_LIB(c_r,strtok_r)
if test "$with_osf32_threads" = "yes" -o "$target_os" = "FreeBSD" -o "$target_os" = "freebsd" case "$with_osf32_threads---$target_os" in
then # Don't keep -lc_r in LIBS; -pthread handles it magically
LIBS="$my_save_LIBS" yes---* | *---freebsd* ) LIBS="$my_save_LIBS" ;;
fi esac
AC_CHECK_FUNCS(strtok_r pthread_init) AC_CHECK_FUNCS(strtok_r pthread_init)
else else
AC_CHECK_FUNCS(strtok_r) AC_CHECK_FUNCS(strtok_r)
......
...@@ -65,6 +65,7 @@ enum thr_lock_type { TL_IGNORE=-1, ...@@ -65,6 +65,7 @@ enum thr_lock_type { TL_IGNORE=-1,
extern ulong max_write_lock_count; extern ulong max_write_lock_count;
extern my_bool thr_lock_inited; extern my_bool thr_lock_inited;
extern enum thr_lock_type thr_upgraded_concurrent_insert_lock;
typedef struct st_thr_lock_data { typedef struct st_thr_lock_data {
pthread_t thread; pthread_t thread;
......
...@@ -511,3 +511,14 @@ id id3 ...@@ -511,3 +511,14 @@ id id3
100 2 100 2
KINMU_DATE KINMU_DATE
KINMU_DATE KINMU_DATE
a b
1 1
1 2
a b a b
1 1 1 1
1 1 1 2
1 2 1 1
1 2 1 2
a b
1 1
1 2
...@@ -715,3 +715,18 @@ CREATE TABLE t2 ( SYAIN_NO char(5) NOT NULL default '',STR_DATE char(8) NOT NULL ...@@ -715,3 +715,18 @@ CREATE TABLE t2 ( SYAIN_NO char(5) NOT NULL default '',STR_DATE char(8) NOT NULL
select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO; select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO;
select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO; select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO;
DROP TABLE t1,t2; DROP TABLE t1,t2;
#
# Test problem with joining table to itself on a multi-part unique key
#
drop table if exists t;
create table t (a int(11) not null, b int(11) not null, unique (a,b)) type=bdb;
insert into t values (1,1), (1,2);
select * from t where a = 1;
select t1.*, t2.* from t t1, t t2 where t1.a = t2.a and t2.a = 1;
select * from t where a = 1;
drop table t;
...@@ -28,3 +28,4 @@ disable_rpl_parse; ...@@ -28,3 +28,4 @@ disable_rpl_parse;
select * from t1; select * from t1;
connection slave; connection slave;
select * from t1; select * from t1;
drop table t1;
# test case to make slave thread get ahead by 22 bytes
drop table if exists t1;
source include/master-slave.inc;
connection master;
# first, cause a duplicate key problem on the slave
create table t1(n int auto_increment primary key);
save_master_pos;
connection slave;
sync_with_master;
insert into t1 values (2);
connection master;
insert into t1 values(NULL);
insert into t1 values(NULL);
save_master_pos;
connection slave;
sleep 1; # there is no way around this sleep - we have to wait until
# the slave tries to run the query, fails and aborts slave thread
delete from t1 where n = 2;
slave start;
sync_with_master;
#now the buggy slave would be confused on the offset but it can replicate
#in order to make it break, we need to stop/start the slave one more time
slave stop;
connection master;
# to be able to really confuse the slave, we need some non-auto-increment
# events in the log
create table t2(n int);
drop table t2;
insert into t1 values(NULL);
save_master_pos;
connection slave;
slave start;
#now the truth comes out - if the slave is buggy, it will never sync because
#the slave thread is not able to read events
sync_with_master;
select * from t1;
#clean up
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
...@@ -3,24 +3,29 @@ ...@@ -3,24 +3,29 @@
source include/master-slave.inc; source include/master-slave.inc;
connection master; connection master;
drop table if exists t1; drop table if exists t1,t2;
create table t2(n int);
create table t1(n int not null auto_increment primary key); create table t1(n int not null auto_increment primary key);
insert into t1 values (NULL),(NULL); insert into t1 values (NULL),(NULL);
delete from t1; truncate table t1;
# We have to use 4 in the following to make this test work with all table types # We have to use 4 in the following to make this test work with all table types
insert into t1 values (4),(NULL); insert into t1 values (4),(NULL);
save_master_pos;
connection slave;
sync_with_master;
slave stop;
slave start;
connection master;
insert into t1 values (NULL),(NULL); insert into t1 values (NULL),(NULL);
flush logs; flush logs;
delete from t1; truncate table t1;
insert into t1 values (10),(NULL); insert into t1 values (10),(NULL),(NULL),(NULL),(NULL),(NULL);
insert into t1 values (NULL),(NULL);
insert into t1 values (NULL),(NULL);
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
select * from t1; select * from t1;
connection master; connection master;
drop table t1; drop table t1,t2;
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
...@@ -85,6 +85,7 @@ multiple read locks. ...@@ -85,6 +85,7 @@ multiple read locks.
my_bool thr_lock_inited=0; my_bool thr_lock_inited=0;
ulong locks_immediate = 0L, locks_waited = 0L; ulong locks_immediate = 0L, locks_waited = 0L;
enum thr_lock_type thr_upgraded_concurrent_insert_lock = TL_WRITE;
/* The following constants are only for debug output */ /* The following constants are only for debug output */
#define MAX_THREADS 100 #define MAX_THREADS 100
...@@ -514,7 +515,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type) ...@@ -514,7 +515,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type)
} }
} }
else if (lock_type == TL_WRITE_CONCURRENT_INSERT && ! lock->check_status) else if (lock_type == TL_WRITE_CONCURRENT_INSERT && ! lock->check_status)
data->type=lock_type= TL_WRITE; /* not supported */ data->type=lock_type= thr_upgraded_concurrent_insert_lock;
if (lock->write.data) /* If there is a write lock */ if (lock->write.data) /* If there is a write lock */
{ {
...@@ -556,7 +557,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type) ...@@ -556,7 +557,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type)
{ /* no scheduled write locks */ { /* no scheduled write locks */
if (lock_type == TL_WRITE_CONCURRENT_INSERT && if (lock_type == TL_WRITE_CONCURRENT_INSERT &&
(*lock->check_status)(data->status_param)) (*lock->check_status)(data->status_param))
data->type=lock_type=TL_WRITE; /* Upgrade lock */ data->type=lock_type= thr_upgraded_concurrent_insert_lock;
if (!lock->read.data || if (!lock->read.data ||
(lock_type <= TL_WRITE_DELAYED && (lock_type <= TL_WRITE_DELAYED &&
...@@ -943,10 +944,10 @@ my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data) ...@@ -943,10 +944,10 @@ my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data)
DBUG_ENTER("thr_upgrade_write_delay_lock"); DBUG_ENTER("thr_upgrade_write_delay_lock");
pthread_mutex_lock(&lock->mutex); pthread_mutex_lock(&lock->mutex);
if (data->type == TL_UNLOCK || data->type == TL_WRITE) /* Aborted */ if (data->type == TL_UNLOCK || data->type >= TL_WRITE_LOW_PRIORITY)
{ {
pthread_mutex_unlock(&lock->mutex); pthread_mutex_unlock(&lock->mutex);
DBUG_RETURN(data->type == TL_UNLOCK); DBUG_RETURN(data->type == TL_UNLOCK); /* Test if Aborted */
} }
check_locks(lock,"before upgrading lock",0); check_locks(lock,"before upgrading lock",0);
/* TODO: Upgrade to TL_WRITE_CONCURRENT_INSERT in some cases */ /* TODO: Upgrade to TL_WRITE_CONCURRENT_INSERT in some cases */
......
Testing server 'MySQL 3.23.36' at 2001-03-26 1:22:18 Testing server 'MySQL 3.23.39' at 2002-09-08 10:26:22
ATIS table test ATIS table test
Creating tables Creating tables
Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data Inserting data
Time to insert (9768): 4 wallclock secs ( 0.57 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (9768): 3 wallclock secs ( 0.51 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data Retrieving data
Time for select_simple_join (500): 1 wallclock secs ( 0.58 usr 0.37 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_simple_join (500): 2 wallclock secs ( 0.58 usr 0.37 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_join (100): 2 wallclock secs ( 0.44 usr 0.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_join (100): 2 wallclock secs ( 0.48 usr 0.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key_prefix_join (100): 11 wallclock secs ( 3.47 usr 2.55 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key_prefix_join (100): 10 wallclock secs ( 3.45 usr 2.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_distinct (800): 10 wallclock secs ( 1.53 usr 0.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_distinct (800): 11 wallclock secs ( 1.54 usr 0.97 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (2800): 11 wallclock secs ( 1.44 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_group (2800): 11 wallclock secs ( 1.48 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Removing tables Removing tables
Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 39 wallclock secs ( 8.05 usr 5.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 39 wallclock secs ( 8.05 usr 5.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.36' at 2001-03-26 1:22:58 Testing server 'MySQL 3.23.39' at 2002-09-08 10:27:01
Testing of ALTER TABLE Testing of ALTER TABLE
Testing with 1000 columns and 1000 rows in 20 steps Testing with 1000 columns and 1000 rows in 20 steps
Insert data into the table Insert data into the table
Time for insert (1000) 0 wallclock secs ( 0.07 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert (1000) 0 wallclock secs ( 0.05 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_add (992): 219 wallclock secs ( 0.16 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_add (992): 187 wallclock secs ( 0.18 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_drop (496): 178 wallclock secs ( 0.06 usr 0.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_drop (496): 150 wallclock secs ( 0.05 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 405 wallclock secs ( 0.30 usr 0.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 345 wallclock secs ( 0.29 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.36' at 2001-03-26 1:29:43 Testing server 'MySQL 3.23.39' at 2002-09-08 10:32:47
Testing of some unusual tables Testing of some unusual tables
All tests are done 1000 times with 1000 fields All tests are done 1000 times with 1000 fields
Testing table with 1000 fields Testing table with 1000 fields
Testing select * from table with 1 record Testing select * from table with 1 record
Time to select_many_fields(1000): 10 wallclock secs ( 3.55 usr 5.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 10 wallclock secs ( 3.45 usr 4.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select all_fields from table with 1 record Testing select all_fields from table with 1 record
Time to select_many_fields(1000): 15 wallclock secs ( 3.61 usr 5.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 14 wallclock secs ( 3.39 usr 4.76 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert VALUES() Testing insert VALUES()
Time to insert_many_fields(1000): 5 wallclock secs ( 0.30 usr 0.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 5 wallclock secs ( 0.31 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert (all_fields) VALUES() Testing insert (all_fields) VALUES()
Time to insert_many_fields(1000): 9 wallclock secs ( 0.03 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 9 wallclock secs ( 0.03 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 40 wallclock secs ( 7.49 usr 10.23 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 38 wallclock secs ( 7.19 usr 9.54 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.36' at 2001-03-26 1:30:23 Testing server 'MySQL 3.23.39' at 2002-09-08 10:33:26
Testing the speed of connecting to the server and sending of data Testing the speed of connecting to the server and sending of data
All tests are done 10000 times All tests are done 10000 times
Testing connection/disconnect Testing connection/disconnect
Time to connect (10000): 14 wallclock secs ( 7.60 usr 2.34 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to connect (10000): 14 wallclock secs ( 8.11 usr 2.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test connect/simple select/disconnect Test connect/simple select/disconnect
Time for connect+select_simple (10000): 16 wallclock secs ( 7.88 usr 3.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for connect+select_simple (10000): 16 wallclock secs ( 8.44 usr 2.99 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test simple select Test simple select
Time for select_simple (10000): 1 wallclock secs ( 0.33 usr 0.77 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_simple (10000): 1 wallclock secs ( 0.29 usr 0.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing connect/select 1 row from table/disconnect Testing connect/select 1 row from table/disconnect
Time to connect+select_1_row (10000): 17 wallclock secs ( 8.25 usr 3.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to connect+select_1_row (10000): 17 wallclock secs ( 8.45 usr 3.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 1 row from table Testing select 1 row from table
Time to select_1_row (10000): 3 wallclock secs ( 0.30 usr 0.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_1_row (10000): 3 wallclock secs ( 0.28 usr 0.85 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 2 rows from table Testing select 2 rows from table
Time to select_2_rows (10000): 2 wallclock secs ( 0.32 usr 0.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_2_rows (10000): 3 wallclock secs ( 0.37 usr 0.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test select with aritmetic (+) Test select with aritmetic (+)
Time for select_column+column (10000): 3 wallclock secs ( 0.31 usr 0.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_column+column (10000): 3 wallclock secs ( 0.31 usr 0.71 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing retrieval of big records (65000 bytes) Testing retrieval of big records (65000 bytes)
Time to select_big (10000): 20 wallclock secs ( 8.34 usr 6.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_big_str (10000): 19 wallclock secs ( 7.79 usr 6.10 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 76 wallclock secs (33.34 usr 18.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 76 wallclock secs (34.04 usr 17.73 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.36' at 2001-03-26 1:31:40 Testing server 'MySQL 3.23.39' at 2002-09-08 10:34:42
Testing the speed of creating and droping tables Testing the speed of creating and droping tables
Testing with 10000 tables and 10000 loop count Testing with 10000 tables and 10000 loop count
Testing create of tables Testing create of tables
Time for create_MANY_tables (10000): 104 wallclock secs ( 1.76 usr 0.73 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_MANY_tables (10000): 183 wallclock secs ( 1.96 usr 0.78 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Accessing tables Accessing tables
Time to select_group_when_MANY_tables (10000): 6 wallclock secs ( 0.95 usr 0.90 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_group_when_MANY_tables (10000): 7 wallclock secs ( 0.99 usr 0.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing drop Testing drop
Time for drop_table_when_MANY_tables (10000): 7 wallclock secs ( 0.64 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop_table_when_MANY_tables (10000): 6 wallclock secs ( 0.61 usr 0.57 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing create+drop Testing create+drop
Time for create+drop (10000): 13 wallclock secs ( 2.39 usr 1.35 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create+drop (10000): 12 wallclock secs ( 2.44 usr 1.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_key+drop (10000): 17 wallclock secs ( 4.00 usr 1.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_key+drop (10000): 17 wallclock secs ( 4.03 usr 1.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 147 wallclock secs ( 9.75 usr 5.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 225 wallclock secs (10.03 usr 4.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.36' at 2001-03-26 2:12:47 Testing server 'MySQL 3.23.39' at 2002-09-08 11:16:28
Testing the speed of selecting on keys that consist of many parts Testing the speed of selecting on keys that consist of many parts
The test-table has 10000 rows and the test is done with 500 ranges. The test-table has 10000 rows and the test is done with 500 ranges.
Creating table Creating table
Inserting 10000 rows Inserting 10000 rows
Time to insert (10000): 4 wallclock secs ( 0.81 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (10000): 4 wallclock secs ( 0.71 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test if the database has a query cache Test if the database has a query cache
Time for select_query_cache (10000): 82 wallclock secs ( 3.31 usr 1.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_query_cache (10000): 82 wallclock secs ( 3.53 usr 0.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_query_cache2 (10000): 83 wallclock secs ( 3.20 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_query_cache2 (10000): 84 wallclock secs ( 3.50 usr 1.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing big selects on the table Testing big selects on the table
Time for select_big (70:17207): 1 wallclock secs ( 0.12 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_big (70:17207): 0 wallclock secs ( 0.12 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range (410:1057904): 225 wallclock secs ( 7.61 usr 5.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range (410:1057904): 230 wallclock secs ( 7.50 usr 5.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (70000): 155 wallclock secs (21.44 usr 6.55 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max_on_key (70000): 155 wallclock secs (22.55 usr 6.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (50000): 355 wallclock secs (16.27 usr 4.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_on_key (50000): 349 wallclock secs (17.12 usr 4.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_group_on_key_parts (1000:100000): 42 wallclock secs ( 0.94 usr 0.56 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_group_on_key_parts (1000:100000): 38 wallclock secs ( 0.89 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing count(distinct) on the table Testing count(distinct) on the table
Time for count_distinct_key_prefix (1000:1000): 38 wallclock secs ( 0.39 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_key_prefix (1000:1000): 41 wallclock secs ( 0.42 usr 0.13 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct (1000:1000): 48 wallclock secs ( 0.40 usr 0.10 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct (1000:1000): 51 wallclock secs ( 0.44 usr 0.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_2 (1000:1000): 50 wallclock secs ( 0.42 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_2 (1000:1000): 49 wallclock secs ( 0.41 usr 0.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key (1000:6000): 42 wallclock secs ( 0.42 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key (1000:6000): 47 wallclock secs ( 0.45 usr 0.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key_parts (1000:100000): 70 wallclock secs ( 0.97 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key_parts (1000:100000): 75 wallclock secs ( 0.98 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group (1000:100000): 69 wallclock secs ( 0.98 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group (1000:100000): 75 wallclock secs ( 0.97 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (100:1000000): 82 wallclock secs ( 6.04 usr 7.21 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_big (100:1000000): 80 wallclock secs ( 6.08 usr 6.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 1346 wallclock secs (63.34 usr 28.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 1360 wallclock secs (65.68 usr 27.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.36' at 2001-03-26 2:35:13 Testing server 'MySQL 3.23.39' at 2002-09-08 11:39:09
Wisconsin benchmark test Wisconsin benchmark test
Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data Inserting data
Time to insert (31000): 15 wallclock secs ( 2.39 usr 2.30 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (31000): 14 wallclock secs ( 2.17 usr 2.10 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to delete_big (1): 1 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Running actual benchmark Running actual benchmark
Time for wisc_benchmark (114): 4 wallclock secs ( 1.59 usr 0.88 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for wisc_benchmark (114): 3 wallclock secs ( 1.61 usr 0.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 19 wallclock secs ( 3.99 usr 3.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 18 wallclock secs ( 3.78 usr 3.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
...@@ -351,7 +351,8 @@ berkeley_cmp_hidden_key(DB* file, const DBT *new_key, const DBT *saved_key) ...@@ -351,7 +351,8 @@ berkeley_cmp_hidden_key(DB* file, const DBT *new_key, const DBT *saved_key)
static int static int
berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key) berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key)
{ {
KEY *key= (KEY*) (file->app_private); KEY *key= (new_key->app_private ? (KEY*) new_key->app_private :
(KEY*) (file->app_private));
char *new_key_ptr= (char*) new_key->data; char *new_key_ptr= (char*) new_key->data;
char *saved_key_ptr=(char*) saved_key->data; char *saved_key_ptr=(char*) saved_key->data;
KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts; KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts;
...@@ -388,7 +389,8 @@ berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key) ...@@ -388,7 +389,8 @@ berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key)
static int static int
berkeley_cmp_fix_length_key(DB *file, const DBT *new_key, const DBT *saved_key) berkeley_cmp_fix_length_key(DB *file, const DBT *new_key, const DBT *saved_key)
{ {
KEY *key=(KEY*) (file->app_private); KEY *key= (new_key->app_private ? (KEY*) new_key->app_private :
(KEY*) (file->app_private));
char *new_key_ptr= (char*) new_key->data; char *new_key_ptr= (char*) new_key->data;
char *saved_key_ptr=(char*) saved_key->data; char *saved_key_ptr=(char*) saved_key->data;
KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts; KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts;
...@@ -730,9 +732,9 @@ DBT *ha_berkeley::create_key(DBT *key, uint keynr, char *buff, ...@@ -730,9 +732,9 @@ DBT *ha_berkeley::create_key(DBT *key, uint keynr, char *buff,
const byte *record, int key_length) const byte *record, int key_length)
{ {
bzero((char*) key,sizeof(*key)); bzero((char*) key,sizeof(*key));
if (hidden_primary_key && keynr == primary_key) if (hidden_primary_key && keynr == primary_key)
{ {
/* We don't need to set app_private here */
key->data=current_ident; key->data=current_ident;
key->size=BDB_HIDDEN_PRIMARY_KEY_LENGTH; key->size=BDB_HIDDEN_PRIMARY_KEY_LENGTH;
return key; return key;
...@@ -744,6 +746,7 @@ DBT *ha_berkeley::create_key(DBT *key, uint keynr, char *buff, ...@@ -744,6 +746,7 @@ DBT *ha_berkeley::create_key(DBT *key, uint keynr, char *buff,
DBUG_ENTER("create_key"); DBUG_ENTER("create_key");
key->data=buff; key->data=buff;
key->app_private= key_info;
for ( ; key_part != end && key_length > 0; key_part++) for ( ; key_part != end && key_length > 0; key_part++)
{ {
if (key_part->null_bit) if (key_part->null_bit)
...@@ -777,10 +780,11 @@ DBT *ha_berkeley::pack_key(DBT *key, uint keynr, char *buff, ...@@ -777,10 +780,11 @@ DBT *ha_berkeley::pack_key(DBT *key, uint keynr, char *buff,
KEY *key_info=table->key_info+keynr; KEY *key_info=table->key_info+keynr;
KEY_PART_INFO *key_part=key_info->key_part; KEY_PART_INFO *key_part=key_info->key_part;
KEY_PART_INFO *end=key_part+key_info->key_parts; KEY_PART_INFO *end=key_part+key_info->key_parts;
DBUG_ENTER("pack_key2"); DBUG_ENTER("bdb:pack_key");
bzero((char*) key,sizeof(*key)); bzero((char*) key,sizeof(*key));
key->data=buff; key->data=buff;
key->app_private= (void*) key_info;
for (; key_part != end && (int) key_length > 0 ; key_part++) for (; key_part != end && (int) key_length > 0 ; key_part++)
{ {
...@@ -1373,6 +1377,7 @@ int ha_berkeley::read_row(int error, char *buf, uint keynr, DBT *row, ...@@ -1373,6 +1377,7 @@ int ha_berkeley::read_row(int error, char *buf, uint keynr, DBT *row,
bzero((char*) &key,sizeof(key)); bzero((char*) &key,sizeof(key));
key.data=key_buff; key.data=key_buff;
key.size=row->size; key.size=row->size;
key.app_private= (void*) (table->key_info+primary_key);
memcpy(key_buff,row->data,row->size); memcpy(key_buff,row->data,row->size);
/* Read the data into current_row */ /* Read the data into current_row */
current_row.flags=DB_DBT_REALLOC; current_row.flags=DB_DBT_REALLOC;
...@@ -1537,6 +1542,7 @@ int ha_berkeley::rnd_next(byte *buf) ...@@ -1537,6 +1542,7 @@ int ha_berkeley::rnd_next(byte *buf)
DBT *ha_berkeley::get_pos(DBT *to, byte *pos) DBT *ha_berkeley::get_pos(DBT *to, byte *pos)
{ {
/* We don't need to set app_private here */
bzero((char*) to,sizeof(*to)); bzero((char*) to,sizeof(*to));
to->data=pos; to->data=pos;
...@@ -1950,6 +1956,7 @@ longlong ha_berkeley::get_auto_increment() ...@@ -1950,6 +1956,7 @@ longlong ha_berkeley::get_auto_increment()
table->next_number_key_offset); table->next_number_key_offset);
/* Store for compare */ /* Store for compare */
memcpy(old_key.data=key_buff2, key_buff, (old_key.size=last_key.size)); memcpy(old_key.data=key_buff2, key_buff, (old_key.size=last_key.size));
old_key.app_private=(void*) key_info;
error=1; error=1;
{ {
/* Modify the compare so that we will find the next key */ /* Modify the compare so that we will find the next key */
......
...@@ -3605,6 +3605,7 @@ static void get_options(int argc,char **argv) ...@@ -3605,6 +3605,7 @@ static void get_options(int argc,char **argv)
break; break;
case OPT_LOW_PRIORITY_UPDATES: case OPT_LOW_PRIORITY_UPDATES:
thd_startup_options|=OPTION_LOW_PRIORITY_UPDATES; thd_startup_options|=OPTION_LOW_PRIORITY_UPDATES;
thr_upgraded_concurrent_insert_lock= TL_WRITE_LOW_PRIORITY;
low_priority_updates=1; low_priority_updates=1;
break; break;
case OPT_BOOTSTRAP: case OPT_BOOTSTRAP:
......
...@@ -1331,6 +1331,8 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused))) ...@@ -1331,6 +1331,8 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
thd->thread_stack = (char*)&thd; // remember where our stack is thd->thread_stack = (char*)&thd; // remember where our stack is
thd->temporary_tables = save_temporary_tables; // restore temp tables thd->temporary_tables = save_temporary_tables; // restore temp tables
threads.append(thd); threads.append(thd);
glob_mi.pending = 0; //this should always be set to 0 when the slave thread
// is started
DBUG_PRINT("info",("master info: log_file_name=%s, position=%s", DBUG_PRINT("info",("master info: log_file_name=%s, position=%s",
glob_mi.log_file_name, llstr(glob_mi.pos,llbuff))); glob_mi.log_file_name, llstr(glob_mi.pos,llbuff)));
......
...@@ -482,12 +482,13 @@ class select_insert :public select_result { ...@@ -482,12 +482,13 @@ class select_insert :public select_result {
uint save_time_stamp; uint save_time_stamp;
ulonglong last_insert_id; ulonglong last_insert_id;
COPY_INFO info; COPY_INFO info;
bool unions;
select_insert(TABLE *table_par,List<Item> *fields_par,enum_duplicates duplic) select_insert(TABLE *table_par,List<Item> *fields_par,enum_duplicates duplic, bool u=false)
:table(table_par),fields(fields_par), save_time_stamp(0),last_insert_id(0) :table(table_par),fields(fields_par), save_time_stamp(0),last_insert_id(0)
{ {
bzero((char*) &info,sizeof(info)); bzero((char*) &info,sizeof(info));
info.handle_duplicates=duplic; info.handle_duplicates=duplic; unions = u;
} }
~select_insert(); ~select_insert();
int prepare(List<Item> &list); int prepare(List<Item> &list);
...@@ -512,8 +513,8 @@ public: ...@@ -512,8 +513,8 @@ public:
HA_CREATE_INFO *create_info_par, HA_CREATE_INFO *create_info_par,
List<create_field> &fields_par, List<create_field> &fields_par,
List<Key> &keys_par, List<Key> &keys_par,
List<Item> &select_fields,enum_duplicates duplic) List<Item> &select_fields,enum_duplicates duplic, bool u=false)
:select_insert (NULL, &select_fields, duplic), db(db_name), :select_insert (NULL, &select_fields, duplic, u), db(db_name),
name(table_name), extra_fields(&fields_par),keys(&keys_par), name(table_name), extra_fields(&fields_par),keys(&keys_par),
create_info(create_info_par), create_info(create_info_par),
lock(0) lock(0)
......
...@@ -871,6 +871,7 @@ static pthread_handler_decl(handle_delayed_insert,arg) ...@@ -871,6 +871,7 @@ static pthread_handler_decl(handle_delayed_insert,arg)
/* Add thread to THD list so that's it's visible in 'show processlist' */ /* Add thread to THD list so that's it's visible in 'show processlist' */
pthread_mutex_lock(&LOCK_thread_count); pthread_mutex_lock(&LOCK_thread_count);
thd->thread_id=thread_id++; thd->thread_id=thread_id++;
thd->end_time();
threads.append(thd); threads.append(thd);
pthread_mutex_unlock(&LOCK_thread_count); pthread_mutex_unlock(&LOCK_thread_count);
...@@ -1318,7 +1319,8 @@ bool select_insert::send_eof() ...@@ -1318,7 +1319,8 @@ bool select_insert::send_eof()
thd->cuted_fields); thd->cuted_fields);
if (last_insert_id) if (last_insert_id)
thd->insert_id(last_insert_id); // For update log thd->insert_id(last_insert_id); // For update log
::send_ok(&thd->net,info.copied,last_insert_id,buff); if (!unions)
::send_ok(&thd->net,info.copied,last_insert_id,buff);
mysql_update_log.write(thd,thd->query,thd->query_length); mysql_update_log.write(thd,thd->query,thd->query_length);
if (mysql_bin_log.is_open()) if (mysql_bin_log.is_open())
{ {
...@@ -1400,7 +1402,9 @@ bool select_create::send_eof() ...@@ -1400,7 +1402,9 @@ bool select_create::send_eof()
mysql_unlock_tables(thd, lock); mysql_unlock_tables(thd, lock);
if (!table->tmp_table) if (!table->tmp_table)
hash_delete(&open_cache,(byte*) table); hash_delete(&open_cache,(byte*) table);
lock=0; table=0; lock=0;
if (!unions)
table=0;
VOID(pthread_mutex_unlock(&LOCK_open)); VOID(pthread_mutex_unlock(&LOCK_open));
} }
return tmp; return tmp;
......
...@@ -1754,7 +1754,15 @@ mysql_execute_command(void) ...@@ -1754,7 +1754,15 @@ mysql_execute_command(void)
break; break;
} }
if (!(res=open_and_lock_tables(thd,(TABLE_LIST *)total->first))) if (!(res=open_and_lock_tables(thd,(TABLE_LIST *)total->first)))
{
/* Fix tables--to-be-unioned-from list to point at opened tables */
for (SELECT_LEX *sl=&lex->select_lex;sl;sl=sl->next)
{
for (TABLE_LIST *cursor=(TABLE_LIST *)sl->table_list.first;cursor;cursor=cursor->next)
cursor->table= ((TABLE_LIST*) cursor->table)->table;
}
res=mysql_union(thd,lex, select_lex->select_number+1); res=mysql_union(thd,lex, select_lex->select_number+1);
}
close_thread_tables(thd); close_thread_tables(thd);
break; break;
} }
...@@ -2894,11 +2902,12 @@ TABLE_LIST *add_table_to_list(Table_ident *table, LEX_STRING *alias, ...@@ -2894,11 +2902,12 @@ TABLE_LIST *add_table_to_list(Table_ident *table, LEX_STRING *alias,
static int link_in_large_list_and_check_acl(THD *thd,LEX *lex,SQL_LIST *tables) static int link_in_large_list_and_check_acl(THD *thd,LEX *lex,SQL_LIST *tables)
{ {
SELECT_LEX *sl; const char *current_db=thd->db ? thd->db : ""; SELECT_LEX *sl; const char *current_db=thd->db ? thd->db : "";
TABLE_LIST *ptr;
for (sl=&lex->select_lex;sl;sl=sl->next) for (sl=&lex->select_lex;sl;sl=sl->next)
{ {
if ((lex->sql_command == SQLCOM_UNION_SELECT) && (sl->order_list.first != (byte *)NULL) && (sl->next != (st_select_lex *)NULL)) if ((lex->sql_command == SQLCOM_UNION_SELECT) && (sl->order_list.first != (byte *)NULL) && (sl->next != (st_select_lex *)NULL))
{ {
net_printf(&thd->net,ER_ILLEGAL_GRANT_FOR_TABLE); // correct error message will come here; only last SELECt can have ORDER BY net_printf(&thd->net,ER_ILLEGAL_GRANT_FOR_TABLE); // correct error message will come here; only last SELECT can have ORDER BY
return -1; return -1;
} }
if (sl->table_list.first == (byte *)NULL) continue; if (sl->table_list.first == (byte *)NULL) continue;
...@@ -2919,7 +2928,15 @@ static int link_in_large_list_and_check_acl(THD *thd,LEX *lex,SQL_LIST *tables) ...@@ -2919,7 +2928,15 @@ static int link_in_large_list_and_check_acl(THD *thd,LEX *lex,SQL_LIST *tables)
aux->lock_type= lex->lock_option; aux->lock_type= lex->lock_option;
if (!tables->next) if (!tables->next)
tables->next= (byte**) &tables->first; tables->next= (byte**) &tables->first;
link_in_list(tables,(byte*)aux,(byte**) &aux->next); if (!(ptr = (TABLE_LIST *) thd->calloc(sizeof(TABLE_LIST))))
return 1;
ptr->db= aux->db; ptr->real_name=aux->real_name;
ptr->name=aux->name; ptr->lock_type=aux->lock_type;
ptr->updating=aux->updating;
ptr->use_index=aux->use_index;
ptr->ignore_index=aux->use_index;
aux->table=(TABLE *)ptr;
link_in_list(tables,(byte*)ptr,(byte**) &ptr->next);
} }
} }
} }
......
...@@ -29,7 +29,8 @@ ...@@ -29,7 +29,8 @@
int mysql_union(THD *thd,LEX *lex,uint no_of_selects) int mysql_union(THD *thd,LEX *lex,uint no_of_selects)
{ {
SELECT_LEX *sl, *for_order=&lex->select_lex; uint no=0; int res=0; SELECT_LEX *sl, *for_order=&lex->select_lex; uint no=0; int res=0;
List<Item> fields; TABLE *table=(TABLE *)NULL; TABLE_LIST *resulting=(TABLE_LIST *)NULL; select_create *create_result;
List<Item> fields; TABLE *table=(TABLE *)NULL; TABLE_LIST *resulting=(TABLE_LIST *)NULL;
for (;for_order->next;for_order=for_order->next); for (;for_order->next;for_order=for_order->next);
ORDER *some_order = (ORDER *)for_order->order_list.first; ORDER *some_order = (ORDER *)for_order->order_list.first;
for (sl=&lex->select_lex;sl;sl=sl->next, no++) for (sl=&lex->select_lex;sl;sl=sl->next, no++)
...@@ -37,102 +38,110 @@ int mysql_union(THD *thd,LEX *lex,uint no_of_selects) ...@@ -37,102 +38,110 @@ int mysql_union(THD *thd,LEX *lex,uint no_of_selects)
TABLE_LIST *tables=(TABLE_LIST*) sl->table_list.first; TABLE_LIST *tables=(TABLE_LIST*) sl->table_list.first;
if (!no) // First we do CREATE from SELECT if (!no) // First we do CREATE from SELECT
{ {
select_create *result;
lex->create_info.options=HA_LEX_CREATE_TMP_TABLE; lex->create_info.options=HA_LEX_CREATE_TMP_TABLE;
if ((result=new select_create(tables->db ? tables->db : thd->db, lex->create_info.db_type=DB_TYPE_MYISAM;
NULL, &lex->create_info, lex->create_info.row_type = ROW_TYPE_DEFAULT;
lex->create_info.avg_row_length = 0;
lex->create_info.max_rows=INT_MAX; lex->create_info.min_rows=0;
lex->create_info.comment=lex->create_info.password=NullS;
lex->create_info.data_file_name=lex->create_info.index_file_name=NullS;
lex->create_info.raid_type=lex->create_info.raid_chunks=0;
lex->create_info.raid_chunksize=0;
lex->create_info.if_not_exists=false;
lex->create_info.used_fields=0;
if ((create_result=new select_create(tables->db ? tables->db : thd->db,
"ZVEK", &lex->create_info,
lex->create_list, lex->create_list,
lex->key_list, lex->key_list,
sl->item_list,DUP_IGNORE))) sl->item_list,DUP_IGNORE,true)))
{ {
res=mysql_select(thd,tables,sl->item_list, res=mysql_select(thd,tables,sl->item_list,
sl->where, sl->where,
sl->ftfunc_list, sl->ftfunc_list,
(ORDER*) NULL, (ORDER*) NULL,
(ORDER*) sl->group_list.first, (ORDER*) sl->group_list.first,
sl->having, sl->having,
(ORDER*) some_order, (ORDER*) some_order,
sl->options | thd->options, sl->options | thd->options,
result); create_result);
if (res) if (res)
{ {
result->abort(); create_result->abort();
delete result; delete create_result;
return res; return res;
} }
table=result->table; table=create_result->table;
List_iterator<Item> it(*(result->fields)); List_iterator<Item> it(*(create_result->fields));
Item *item; Item *item;
while ((item= it++)) while ((item= it++))
fields.push_back(item); fields.push_back(item);
delete result; if (!(resulting = (TABLE_LIST *) thd->calloc(sizeof(TABLE_LIST))))
if (!reopen_table(table)) return 1; return 1;
if (!(resulting = (TABLE_LIST *) thd->calloc(sizeof(TABLE_LIST)))) resulting->db=tables->db ? tables->db : thd->db;
return 1; resulting->real_name=table->real_name;
resulting->db=tables->db ? tables->db : thd->db; resulting->name=table->table_name;
resulting->real_name=table->real_name; resulting->table=table;
resulting->name=table->table_name;
resulting->table=table;
} }
else else
return -1; return -1;
} }
else // Then we do INSERT from SELECT else // Then we do INSERT from SELECT
{ {
select_result *result; select_result *result;
if ((result=new select_insert(table, &fields, DUP_IGNORE))) if ((result=new select_insert(table, &fields, DUP_IGNORE, true)))
{ {
res=mysql_select(thd,tables,sl->item_list, res=mysql_select(thd,tables,sl->item_list,
sl->where, sl->where,
sl->ftfunc_list, sl->ftfunc_list,
(ORDER*) some_order, (ORDER*) some_order,
(ORDER*) sl->group_list.first, (ORDER*) sl->group_list.first,
sl->having, sl->having,
(ORDER*) NULL, (ORDER*) NULL,
sl->options | thd->options, sl->options | thd->options,
result); result);
delete result; delete result;
if (res) return 1; if (res)
{
delete create_result;
return 1;
}
} }
else else
return -1; {
delete create_result;
return -1;
}
} }
} }
select_result *result; select_result *result;
List<Item> item_list; List<Item> item_list;
List<Item_func_match> ftfunc_list; List<Item_func_match> ftfunc_list;
ftfunc_list.empty(); ftfunc_list.empty();
if (item_list.push_back(new Item_field(NULL,NULL,"*"))) void(item_list.push_back(new Item_field(NULL,NULL,"*")));
return -1;
if (lex->exchange) if (lex->exchange)
{ {
if (lex->exchange->dumpfile) if (lex->exchange->dumpfile)
{ result=new select_dump(lex->exchange);
if (!(result=new select_dump(lex->exchange)))
return -1;
}
else else
{ result=new select_export(lex->exchange);
if (!(result=new select_export(lex->exchange)))
return -1;
}
} }
else if (!(result=new select_send())) else result=new select_send();
return -1; if (result)
else
{ {
res=mysql_select(thd,resulting,item_list, res=mysql_select(thd,resulting,item_list,
NULL, NULL,
ftfunc_list, ftfunc_list,
(ORDER*) NULL, (ORDER*) NULL,
(ORDER*) NULL, (ORDER*) NULL,
NULL, NULL,
(ORDER*) NULL, (ORDER*) NULL,
thd->options, thd->options,
result); result);
if (res) if (res)
result->abort(); result->abort();
delete result;
} }
delete result; delete create_result;
return res; return res;
} }
...@@ -18,6 +18,15 @@ Comments regarding the Package ...@@ -18,6 +18,15 @@ Comments regarding the Package
mysql-server-debug: mysql-server-debug:
--with-debug flag. mysqld only. (/usr/sbin/mysqld-debug) --with-debug flag. mysqld only. (/usr/sbin/mysqld-debug)
* about MySQL-Max packages:
mysql-max :
this is static linked MySQL-Max server only. (/usr/sbin/mysqld-max-static).
mysql-max-shared:
this is dynamic linked MySQL server only. (/usr/sbin/mysqld-max-shared)
mysql-max-debug:
--with-debug flag. mysqld only. (/usr/sbin/mysqld-max-debug)
* about charset * about charset
I build MySQL server --with-extra-charsets=all I build MySQL server --with-extra-charsets=all
......
mysql (3.23.23-1potato.2) unstable; urgency=low mysql (3.23.39-1) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sat, 12 May 2001 05:07:35 +0900
mysql (3.23.38-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sat, 12 May 2001 05:07:35 +0900
mysql (3.23.37-1potato.2) unstable; urgency=low
* new
* add mysql-max multi packages.
-- takeshi <takeshi@softagency.co.jp> Thr, 26 Apr 2001 05:07:35 +0900
mysql (3.23.37-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Thr, 26 Apr 2001 05:07:35 +0900
mysql (3.23.36-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Thr, 29 Mar 2001 05:07:35 +0900
mysql (3.23.35-1potato.1) unstable; urgency=low
* sql fix patch
-- takeshi <takeshi@softagency.co.jp> Thr, 22 Mar 2001 05:07:35 +0900
mysql (3.23.35-1potato) unstable; urgency=low
* new
* --with-innobase
-- takeshi <takeshi@softagency.co.jp> Sat, 17 Mar 2001 05:07:35 +0900
mysql (3.23.34a-1potato) unstable; urgency=low
* new
* --with-innobase
-- takeshi <takeshi@softagency.co.jp> Wed, 14 Mar 2001 05:07:35 +0900
mysql (3.23.33-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Tue, 13 Feb 2001 05:07:35 +0900
mysql (3.23.32-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Tue, 23 Jan 2001 05:07:35 +0900
mysql (3.23.31-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Fri, 19 Jan 2001 05:07:35 +0900
mysql (3.23.30-gamma-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sat, 6 Jan 2001 05:07:35 +0900
mysql (3.23.29a-gamma-1potato.3) unstable; urgency=low
* server:/usr/sbin/{mysql_config, mysqltest} -> client:/usr/bin/
* server:/usr/bin/my_print_defaults -> client:/usr/bin/
* /usr/mysql-test -> mysql-bench /var/mysql/mysql-test
-- takeshi <takeshi@softagency.co.jp> Fri, 29 Dec 2000 05:07:35 +0900
mysql (3.23.29a-gamma-1potato.2) unstable; urgency=low
* /usr/mysql-test -> mysql-bench /var/mysql/mysql-test
-- takeshi <takeshi@softagency.co.jp> Sun, 17 Dec 2000 05:07:35 +0900
mysql (3.23.29a-gamma-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sun, 17 Dec 2000 05:07:35 +0900
mysql (3.23.28-gamma-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Fri, 24 Nov 2000 05:07:35 +0900
mysql (3.23.27-beta-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Fri, 28 Oct 2000 05:07:35 +0900
mysql (3.23.26-beta-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sun, 22 Oct 2000 05:07:35 +0900
mysql (3.23.25-beta-1potato) unstable; urgency=low
* new , libmysqlclient10
* change debian/control file. remove Provides keyword
-- takeshi <takeshi@softagency.co.jp> Fri, 29 Sep 2000 05:07:35 +0900
mysql (3.23.24-1potato.2) unstable; urgency=low
* fix debian/control file
* move patch into debian/patches/
if you want to make new patch,
write patch file and put it into debian/patches/.
debian/rules do patch debian/patches/* automatically.
* change debian/rules , debian/move
* back mysql_resolveip -> resolveip , mysql_perror -> perror
-- takeshi <takeshi@softagency.co.jp> Thr, 14 Sep 2000 05:07:35 +0900
mysql (3.23.24-1potato) unstable; urgency=low
* move patch into debian/patches/ * move patch into debian/patches/
if you want to make new patch, if you want to make new patch,
write patch file and put it into debian/patches/. write patch file and put it into debian/patches/.
debian/rules do patch debian/patches/* automatically. debian/rules do patch debian/patches/* automatically.
* change debian/rules , debian/move * change debian/rules , debian/move
* back mysql_resolveip -> resolveip , mysql_perror -> perror
-- takeshi <takeshi@softagency.co.jp> Tue, 5 Sep 2000 05:07:35 +0900 -- takeshi <takeshi@softagency.co.jp> Sat, 9 Sep 2000 05:07:35 +0900
mysql (3.23.23-1potato) unstable; urgency=low mysql (3.23.23-1potato) unstable; urgency=low
......
...@@ -11,38 +11,44 @@ Description: mysql ...@@ -11,38 +11,44 @@ Description: mysql
Package: mysql-doc Package: mysql-doc
Architecture: all Architecture: all
Section: doc
Priority: extra
Replaces: mysql-gpl-doc
Description: mysql Documentation (html) Description: mysql Documentation (html)
MySQL Doc. MySQL Doc.
Package: libmysqlclient9 Package: libmysqlclient10
Architecture: any Architecture: any
Provides: libmysqlclient9 Section: libs
Description: libmysqlclient.so.9 Priority: extra
libmysqlclient.so.9 Description: libmysqlclient.so.10
libmysqlclient.so.10
Package: mysql-client Package: mysql-client
Architecture: any Architecture: any
Depends: ${shlibs:Depends} Depends: ${shlibs:Depends}
Section: devel Section: misc
Priority: extra Priority: extra
Conflicts: mysql-client-ujis, mysql-client-sjis Conflicts: mysql-client-ujis, mysql-client-sjis
Replaces: mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-client-ujis, mysql-client-sjis Replaces: mysql-gpl-client, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-client-ujis, mysql-client-sjis
Provides: mysql-client
Description: mysql clients. Description: mysql clients.
MySQL clients programs. MySQL clients programs.
Package: mysql-server Package: mysql-server
Architecture: any Architecture: any
Section: misc
Priority: extra
Depends: ${shlibs:Depends} Depends: ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0), mysql-common
Provides: mysql-server
Description: MySQL server (static linked) Description: MySQL server (static linked)
MySQL server. static linked. MySQL server. static linked.
Package: mysql-server-shared Package: mysql-server-shared
Architecture: any Architecture: any
Depends: ${shlibs:Depends} Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL server (dynamic linked) Description: MySQL server (dynamic linked)
...@@ -50,22 +56,57 @@ Description: MySQL server (dynamic linked) ...@@ -50,22 +56,57 @@ Description: MySQL server (dynamic linked)
Package: mysql-server-debug Package: mysql-server-debug
Architecture: any Architecture: any
Depends: ${shlibs:Depends} Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL server debug Description: MySQL server debug
MySQL server. debug MySQL server. debug
Package: mysql-max
Architecture: any
Section: misc
Priority: extra
Depends: mysql-server
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL-MAX server (static linked)
MySQL-Max server. (static linked)
Package: mysql-max-shared
Architecture: any
Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL-MAX server (shared linked)
MySQL-Max server. (shared linked)
Package: mysql-max-debug
Architecture: any
Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL-MAX server (with debug shared linked)
MySQL-Max server. (with debug and shared linked)
Package: mysql-dev Package: mysql-dev
Architecture: any Architecture: any
Section: devel
Priority: extra
Depends: ${shlibs:Depends} Depends: ${shlibs:Depends}
Conflicts: mysql-dev-sjis, mysql-dev-ujis Conflicts: mysql-dev-sjis, mysql-dev-ujis
Replaces: mysql-dev-sjis, mysql-dev-ujis, libmysqlclient6-ujis, libmysqlclient6-sjis Replaces: mysql-devel, libmysqlclient10-dev, libmysqlclient9-dev, libmysqlclient6-dev, mysql-gpl-dev, mysql-dev-sjis, mysql-dev-ujis, libmysqlclient6-ujis, libmysqlclient6-sjis
Provides: mysql-dev
Description: MySQL develop suite Description: MySQL develop suite
MySQL develop. MySQL develop.
Package: mysql-bench Package: mysql-bench
Architecture: all Architecture: all
Section: misc
Priority: extra
Description: mysql benchmark suite. Description: mysql benchmark suite.
MySQL sql-bench files. MySQL sql-bench files.
Docs/Makefile Docs/Makefile
strings/Makefile
dbug/Makefile dbug/Makefile
mysys/Makefile
extra/Makefile extra/Makefile
regex/Makefile
isam/Makefile
heap/Makefile heap/Makefile
isam/Makefile
merge/Makefile merge/Makefile
mysys/Makefile
readline/Makefile
regex/Makefile
sql/Makefile sql/Makefile
sql/share/Makefile sql/share/Makefile
strings/Makefile
support-files/binary-configure support-files/binary-configure
support-files/my-example.cnf support-files/my-example.cnf
support-files/mysql-log-rotate support-files/mysql-log-rotate
......
...@@ -7,7 +7,7 @@ if [ -e $STAMPFILE ]; then ...@@ -7,7 +7,7 @@ if [ -e $STAMPFILE ]; then
fi fi
#---------- #----------
CLIENT1="msql2mysql mysql mysql_convert_table_format mysql_find_rows mysql_fix_privilege_tables mysql_setpermission mysql_zap mysqlaccess mysqladmin mysqlbug mysqldump mysqlhotcopy mysqlimport mysqlshow" CLIENT1="msql2mysql mysql mysql_convert_table_format mysql_find_rows mysql_fix_privilege_tables mysql_setpermission mysql_zap mysqlaccess mysqladmin mysqlbug mysqldump mysqlhotcopy mysqlimport mysqlshow mysql_config mysqltest my_print_defaults"
# CLIENT2="add_file_priv add_func_table add_long_password make_binary_distribution" # CLIENT2="add_file_priv add_func_table add_long_password make_binary_distribution"
...@@ -20,7 +20,7 @@ for CHAR in build ...@@ -20,7 +20,7 @@ for CHAR in build
do do
#----- #-----
cp -Rpd debian/${CHAR}/usr debian/mysql-server/ cp -Rpd debian/${CHAR}/usr debian/mysql-server/
cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so.* debian/libmysqlclient9/usr/lib/ cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so.* debian/libmysqlclient10/usr/lib/
#----- mysql-server-shared --- #----- mysql-server-shared ---
cp -Rpd debian/${CHAR}-shared/usr/sbin/mysqld debian/mysql-server-shared/usr/sbin/mysqld-shared cp -Rpd debian/${CHAR}-shared/usr/sbin/mysqld debian/mysql-server-shared/usr/sbin/mysqld-shared
...@@ -31,20 +31,28 @@ do ...@@ -31,20 +31,28 @@ do
#----- mysql-server --- #----- mysql-server ---
mv debian/mysql-server/usr/sbin/mysqld debian/mysql-server/usr/sbin/mysqld-static mv debian/mysql-server/usr/sbin/mysqld debian/mysql-server/usr/sbin/mysqld-static
#----- mysql-max-shared ---
cp -Rpd debian/${CHAR}-max-shared/usr/sbin/mysqld debian/mysql-max-shared/usr/sbin/mysqld-max-shared
#----- mysql-max-debug ---
cp -Rpd debian/${CHAR}-max-debug/usr/sbin/mysqld debian/mysql-max-debug/usr/sbin/mysqld-max-debug
#----- mysql-max ---
mv debian/${CHAR}-max/usr/sbin/mysqld debian/mysql-max/usr/sbin/mysqld-max-static
#----- mysql-client ---- #----- mysql-client ----
cd ${P}/debian/mysql-server/usr/bin/ && mv $CLIENT1 ../../../mysql-client/usr/bin/ cd ${P}/debian/mysql-server/usr/bin/ && mv $CLIENT1 ../../../mysql-client/usr/bin/
cd ${P} cd ${P}
mv -f debian/mysql-server/usr/{man,info} debian/mysql-client/usr/share/ mv -f debian/mysql-server/usr/{man,info} debian/mysql-client/usr/share/
mv debian/mysql-server/usr/share/mysql/my-example.cnf debian/mysql-client/usr/share/mysql/ # mv debian/mysql-server/usr/share/mysql/my-*.cnf debian/mysql-client/usr/share/mysql/
mv -f debian/mysql-server/usr/bin/replace debian/mysql-client/usr/bin/mysql_replace mv -f debian/mysql-server/usr/bin/replace debian/mysql-client/usr/bin/mysql_replace
#----- mysql-server --- #----- mysql-server ---
mv debian/mysql-server/usr/bin/* debian/mysql-server/usr/sbin/ mv debian/mysql-server/usr/bin/* debian/mysql-server/usr/sbin/
mv debian/mysql-server/usr/sbin/my_print_defaults debian/mysql-server/usr/bin/
mv debian/mysql-server/usr/sbin/comp_err debian/mysql-server/usr/bin/ mv debian/mysql-server/usr/sbin/comp_err debian/mysql-server/usr/bin/
mv debian/mysql-server/usr/sbin/perror debian/mysql-server/usr/bin/mysql_perror mv debian/mysql-server/usr/sbin/perror debian/mysql-server/usr/bin/
mv debian/mysql-server/usr/sbin/resolveip debian/mysql-server/usr/bin/mysql_resolveip mv debian/mysql-server/usr/sbin/resolveip debian/mysql-server/usr/bin/
#----- mysql-dev ---- #----- mysql-dev ----
cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so debian/mysql-dev/usr/lib/ cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so debian/mysql-dev/usr/lib/
...@@ -67,6 +75,7 @@ cp -r COPYING* MIRRORS README* Docs/* debian/mysql-doc/usr/share/doc/mysql/ ...@@ -67,6 +75,7 @@ cp -r COPYING* MIRRORS README* Docs/* debian/mysql-doc/usr/share/doc/mysql/
#### sql-bench #### sql-bench
mv debian/mysql-server/usr/sql-bench \ mv debian/mysql-server/usr/sql-bench \
debian/mysql-server/usr/mysql-test \
debian/mysql-bench/var/mysql/ debian/mysql-bench/var/mysql/
touch $STAMPFILE touch $STAMPFILE
#!/bin/sh
update-alternatives --install /usr/sbin/mysqld mysqld /usr/sbin/mysqld-max-debug 40
#!/bin/sh
update-alternatives --auto mysqld
#!/bin/sh
update-alternatives --install /usr/sbin/mysqld mysqld /usr/sbin/mysqld-max-shared 35
#!/bin/sh
update-alternatives --auto mysqld
#!/bin/sh
update-alternatives --install /usr/sbin/mysqld mysqld /usr/sbin/mysqld-max-static 30
#!/bin/sh
update-alternatives --auto mysqld
--- mysql-3.23.23.orig/scripts/Makefile.in --- mysql-3.23.34a/sql/Makefile.in.orig Mon Mar 12 08:27:39 2001
+++ mysql-3.23.23/scripts/Makefile.in +++ mysql-3.23.34a/sql/Makefile.in Thu Mar 15 04:11:14 2001
@@ -337,6 +337,7 @@ @@ -373,7 +373,7 @@
@RM@ -f $@ $@-t
@SED@ \ mysqlbinlog: $(mysqlbinlog_OBJECTS) $(mysqlbinlog_DEPENDENCIES)
-e 's!@''bindir''@!$(bindir)!g' \ @rm -f mysqlbinlog
+ -e 's!@''sbindir''@!$(sbindir)!g' \ - $(CXXLINK) $(mysqlbinlog_LDFLAGS) $(mysqlbinlog_OBJECTS) $(mysqlbinlog_LDADD) $(LIBS)
-e 's!@''scriptdir''@!$(bindir)!g' \ + $(CXXLINK) $(mysqld_LDFLAGS) $(mysqlbinlog_OBJECTS) $(mysqld_LDADD) $(LIBS)
-e 's!@''prefix''@!$(prefix)!g' \
-e 's!@''datadir''@!$(datadir)!g' \ mysqld: $(mysqld_OBJECTS) $(mysqld_DEPENDENCIES)
--- mysql-3.23.23.orig/support-files/Makefile.in @rm -f mysqld
+++ mysql-3.23.23/support-files/Makefile.in
@@ -308,6 +308,7 @@
@RM@ -f $@ $@-t
@SED@ \
-e 's!@''bindir''@!$(bindir)!g' \
+ -e 's!@''sbindir''@!$(sbindir)!g' \
-e 's!@''scriptdir''@!$(bindir)!g' \
-e 's!@''prefix''@!$(prefix)!g' \
-e 's!@''datadir''@!$(datadir)!g' \
--- mysql-3.23.23.orig/scripts/mysql_install_db.sh --- mysql-3.23.34a/scripts/mysql_install_db.sh.orig Mon Mar 12 08:18:27 2001
+++ mysql-3.23.23/scripts/mysql_install_db.sh +++ mysql-3.23.34a/scripts/mysql_install_db.sh Thu Mar 15 04:12:28 2001
@@ -11,6 +11,7 @@ @@ -325,7 +325,7 @@
ldata=@localstatedir@ if test "$IN_RPM" -eq 0
execdir=@libexecdir@
bindir=@bindir@
+sbindir=@sbindir@
force=0
IN_RPM=0
defaults=
@@ -47,6 +48,10 @@
then then
bindir=`grep "^bindir" $conf | sed 's;^[^=]*=[ \t]*;;' | sed 's;[ \t]$;;'` echo "You can start the MySQL daemon with:"
fi
+ if grep "^sbindir" $conf >/dev/null
+ then
+ sbindir=`grep "^sbindir" $conf | sed '.*=[ \t]*//`
+ fi
if grep "^user" $conf >/dev/null
then
user=`grep "^user" $conf | sed 's;^[^=]*=[ \t]*;;' | sed 's;[ \t]$;;'`
@@ -56,7 +61,7 @@
for arg
do
case "$arg" in
- --basedir=*) basedir=`echo "$arg"|sed 's;^--basedir=;;'`; bindir="$basedir/bin"; execdir="$basedir/libexec" ;;
+ --basedir=*) basedir=`echo "$arg"|sed 's;^--basedir=;;'`; bindir="$basedir/bin"; sbindir="$basedir/sbin"; execdir="$basedir/libexec" ;;
--datadir=*) ldata=`echo "$arg"|sed 's;^--datadir=;;'` ;;
--user=*) user=`echo "$arg"|sed 's;^--user=;;'` ;;
esac
@@ -82,10 +87,10 @@
# Check if hostname is valid
if test "$IN_RPM" -eq 0 -a $force -eq 0
then
- resolved=`$bindir/resolveip $hostname 2>&1`
+ resolved=`$bindir/mysql_resolveip $hostname 2>&1`
if [ $? -ne 0 ]
then
- resolved=`$bindir/resolveip localhost 2>&1`
+ resolved=`$bindir/mysql_resolveip localhost 2>&1`
if [ $? -eq 0 ]
then
echo "Sorry, the host '$hostname' could not be looked up."
@@ -300,7 +305,7 @@
if test -z "$IN_RPM"
then
echo "You can start the MySQL demon with:"
- echo "cd @prefix@ ; $bindir/safe_mysqld &" - echo "cd @prefix@ ; $bindir/safe_mysqld &"
+ echo "cd @prefix@ ; $sbindir/safe_mysqld &" + echo "cd @prefix@ ; $sbindir/safe_mysqld &"
echo echo
echo "You can test the MySQL demon with the benchmarks in the 'sql-bench' directory:" echo "You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:"
echo "cd sql-bench ; run-all-tests" echo "cd sql-bench ; run-all-tests"
--- mysql-3.23.23.orig/support-files/mysql.server.sh Tue Sep 5 19:13:35 2000 --- mysql-3.23.30-gamma/support-files/mysql.server.sh.orig Thu Jan 4 11:03:57 2001
+++ mysql-3.23.23/support-files/mysql.server.sh Tue Sep 5 19:19:40 2000 +++ mysql-3.23.30-gamma/support-files/mysql.server.sh Sat Jan 6 12:18:50 2001
@@ -16,6 +16,7 @@ @@ -28,8 +28,10 @@
PATH=/sbin:/usr/sbin:/bin:/usr/bin then
basedir=@prefix@ basedir=@prefix@
bindir=@bindir@ bindir=@bindir@
+sbindir=@sbindir@ + sbindir=@sbindir@
datadir=@localstatedir@ else
pid_file=@localstatedir@/mysqld.pid bindir="$basedir/bin"
log_file=@localstatedir@/mysqld.log + sbindir="$basedir/sbin"
@@ -64,6 +65,10 @@ fi
then if test -z "$pid_file"
bindir=`grep "^bindir" $conf | cut -f 2 -d= | tr -d ' '` then
fi @@ -100,18 +102,18 @@
+ if grep "^sbindir" $conf >/dev/null
+ then
+ sbindir=`grep "^sbindir" $conf | cut -f 2 -d= | tr -d ' '`
+ fi
if grep "^log[ \t]*=" $conf >/dev/null
then
log_file=`grep "log[ \t]*=" $conf | cut -f 2 -d= | tr -d ' '`
@@ -78,14 +83,15 @@
'start') 'start')
# Start daemon # Start daemon
...@@ -28,11 +20,13 @@ ...@@ -28,11 +20,13 @@
then then
# Give extra arguments to mysqld with the my.cnf file. This script may # Give extra arguments to mysqld with the my.cnf file. This script may
# be overwritten at next upgrade. # be overwritten at next upgrade.
- $bindir/safe_mysqld \ - $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file &
- --user=$mysql_daemon_user --datadir=$datadir --pid-file=$pid_file --log=$log_file & + $sbindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file &
+ $sbindir/safe_mysqld \ # Make lock for RedHat / SuSE
+ --user=$mysql_daemon_user --datadir=$datadir --pid-file=$pid_file & if test -w /var/lock/subsys
+# --log=$log_file & then
touch /var/lock/subsys/mysql
fi
else else
- echo "Can't execute $bindir/safe_mysqld" - echo "Can't execute $bindir/safe_mysqld"
+ echo "Can't execute $sbindir/safe_mysqld" + echo "Can't execute $sbindir/safe_mysqld"
......
--- mysql-3.23.34a/mysql-test/install_test_db.sh.orig Mon Mar 12 08:18:24 2001
+++ mysql-3.23.34a/mysql-test/install_test_db.sh Thu Mar 15 04:11:14 2001
@@ -5,6 +5,15 @@
# This scripts creates the privilege tables db, host, user, tables_priv,
# columns_priv in the mysql database, as well as the func table.
+if [ x$1 = x"-debian" ]; then
+ DEBIAN=1
+ shift 1
+ execdir=/usr/sbin
+ bindir=/usr/bin
+ BINARY_DIST=1
+ fix_bin=/var/mysql/mysql-test
+else
+
if [ x$1 = x"-bin" ]; then
shift 1
execdir=../bin
@@ -17,6 +26,10 @@
fix_bin=.
fi
+fi
+
+
+
vardir=var
logdir=$vardir/log
if [ x$1 = x"-slave" ]
@@ -47,12 +60,17 @@
#create the directories
[ -d $vardir ] || mkdir $vardir
[ -d $logdir ] || mkdir $logdir
+[ "x$RUN_USER" != "x" ] && chown -R $RUN_USER $logdir
# Create database directories mysql & test
if [ -d $data ] ; then rm -rf $data ; fi
mkdir $data $data/mysql $data/test
#for error messages
+if [ "x$DEBIAN" = "x1" ]; then
+ basedir=/usr
+else
+
if [ x$BINARY_DIST = x1 ] ; then
basedir=..
else
@@ -62,6 +80,10 @@
ln -sf ../../sql/share share/mysql
fi
+fi
+
+
+
# Initialize variables
c_d="" i_d=""
c_h="" i_h=""
@@ -211,7 +233,9 @@
$c_c
END_OF_DATA
then
+ [ "x$RUN_USER" != "x" ] && chown -R $RUN_USER $ldata
exit 0
else
+ [ "x$RUN_USER" != "x" ] && chown -R $RUN_USER $ldata
exit 1
fi
--- mysql-3.23.34a/mysql-test/mysql-test-run.sh.orig Mon Mar 12 08:18:27 2001
+++ mysql-3.23.34a/mysql-test/mysql-test-run.sh Thu Mar 15 04:11:14 2001
@@ -37,9 +37,23 @@
XARGS=`which xargs | head -1`
SED=sed
+if [ $USER = root ]; then
+ RUN_USER="mysql"
+ RUN_USER_OPT="--user=$RUN_USER"
+ export RUN_USER
+fi
+
+
# Are we using a source or a binary distribution?
testdir=@testdir@
+
+if [ -d /var/mysql/mysql-test ]; then
+ DEBIAN=1
+ cd /var/mysql/mysql-test
+ testdir=/var/mysql
+fi
+
if [ -d bin/mysqld ] && [ -d mysql-test ] ; then
cd mysql-test
else
@@ -56,6 +70,10 @@
exit 1
fi
+if [ x$DEBIAN = x1 ]; then
+ MY_BASEDIR=/usr
+fi
+
#++
# Misc. Definitions
#--
@@ -184,12 +202,21 @@
[ -d $MYSQL_TEST_DIR/var ] || mkdir $MYSQL_TEST_DIR/var
[ -d $MYSQL_TEST_DIR/var/tmp ] || mkdir $MYSQL_TEST_DIR/var/tmp
[ -d $MYSQL_TEST_DIR/var/run ] || mkdir $MYSQL_TEST_DIR/var/run
+[ -d $MYSQL_TEST_DIR -a "x$RUN_USER" != "x" ] && chown -R $RUN_USER $MYSQL_TEST_DIR
[ -z "$COLUMNS" ] && COLUMNS=80
E=`$EXPR $COLUMNS - 8`
#DASH72=`expr substr '------------------------------------------------------------------------' 1 $E`
DASH72=`$ECHO '------------------------------------------------------------------------'|$CUT -c 1-$E`
+if [ "x$DEBIAN" = "x1" ]; then
+ MYSQLD="/usr/sbin/mysqld"
+ MYSQL_TEST="/usr/sbin/mysqltest"
+ MYSQLADMIN="/usr/bin/mysqladmin"
+ INSTALL_DB="/var/mysql/mysql-test/install_test_db -debian"
+
+else
+
# on source dist, we pick up freshly build executables
# on binary, use what is installed
if [ x$SOURCE_DIST = x1 ] ; then
@@ -250,6 +277,8 @@
read unused
}
+fi
+
error () {
$ECHO "Error: $1"
@@ -365,7 +394,7 @@
--language=english \
--innobase_data_file_path=ibdata1:50M \
$SMALL_SERVER \
- $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
+ $RUN_USER_OPT $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
if [ x$DO_DDD = x1 ]
then
$ECHO "set args $master_args" > $GDB_MASTER_INIT
@@ -420,7 +449,7 @@
--language=english \
--skip-innobase \
$SMALL_SERVER \
- $EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
+ $RUN_USER_OPT $EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
if [ x$DO_DDD = x1 ]
then
$ECHO "set args $master_args" > $GDB_SLAVE_INIT
...@@ -4,9 +4,11 @@ ...@@ -4,9 +4,11 @@
package=mysql package=mysql
CHARSET=ujis CHARSET=ujis
SYSNAME=
TEMPINST=build TEMPINST=build
#CFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static # CFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
CC=gcc CC=gcc
CFLAGS=-O6 -fomit-frame-pointer CFLAGS=-O6 -fomit-frame-pointer
...@@ -14,7 +16,6 @@ CXX=gcc ...@@ -14,7 +16,6 @@ CXX=gcc
CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti
# CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-rtti # CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-rtti
SYSNAME=
COMMONCONF= --prefix=/usr --libexecdir=/usr/sbin \ COMMONCONF= --prefix=/usr --libexecdir=/usr/sbin \
--localstatedir=/var/mysql/data \ --localstatedir=/var/mysql/data \
--enable-shared \ --enable-shared \
...@@ -26,8 +27,14 @@ COMMONCONF= --prefix=/usr --libexecdir=/usr/sbin \ ...@@ -26,8 +27,14 @@ COMMONCONF= --prefix=/usr --libexecdir=/usr/sbin \
SERVERCONF=$(COMMONCONF) --enable-assembler \ SERVERCONF=$(COMMONCONF) --enable-assembler \
--with-raid --with-raid
MYSQLMAXCONF= --with-server-suffix=-Max \
--with-innodb \
--with-berkeley-db
# --with-gemini \
# --with-berkeley-db-includes=/usr/include/db3 \ # --with-berkeley-db-includes=/usr/include/db3 \
# --with-berkeley-db-libs=/usr/lib/libdb3.a # --with-berkeley-db-libs=/usr/lib
STATICCONF=--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static STATICCONF=--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static
...@@ -37,6 +44,7 @@ CLIENTCONF=$(COMMONCONF) --without-server ...@@ -37,6 +44,7 @@ CLIENTCONF=$(COMMONCONF) --without-server
patches debian/stamp-patches: patches debian/stamp-patches:
-test -e debian/stamp-patches || \ -test -e debian/stamp-patches || \
for i in `find debian/patches -type f -print` ; do \ for i in `find debian/patches -type f -print` ; do \
echo "==== $$i ====" ; \
patch -p1 < $$i ; \ patch -p1 < $$i ; \
done done
touch debian/stamp-patches touch debian/stamp-patches
...@@ -46,9 +54,15 @@ premkdir debian/stamp-premkdir: ...@@ -46,9 +54,15 @@ premkdir debian/stamp-premkdir:
$(checkdir) $(checkdir)
-rm -rf debian/tmp debian/$(TEMPINST)* -rm -rf debian/tmp debian/$(TEMPINST)*
dh_installdirs dh_installdirs
-install -d debian/$(TEMPINST)/usr/{bin,sbin,share,man,include,info}
-install -d debian/$(TEMPINST)-shared/usr/{bin,sbin,share,man,include,info} for i in '' -shared -debug -max -max-shared -max-debug ; do \
-install -d debian/$(TEMPINST)-debug/usr/{bin,sbin,share,man,include,info} install -d debian/$(TEMPINST)$${i}/usr/{bin,sbin,share,man,include,info} ; \
done
# -install -d debian/$(TEMPINST)$${i}/usr/{bin,sbin,share,man,include,info}
# -install -d debian/$(TEMPINST)-shared/usr/{bin,sbin,share,man,include,info}
# -install -d debian/$(TEMPINST)-debug/usr/{bin,sbin,share,man,include,info}
touch debian/stamp-premkdir touch debian/stamp-premkdir
################################################## ##################################################
...@@ -59,6 +73,7 @@ config debian/stamp-config: debian/stamp-premkdir debian/stamp-patches ...@@ -59,6 +73,7 @@ config debian/stamp-config: debian/stamp-premkdir debian/stamp-patches
--with-charset=$(CHARSET) \ --with-charset=$(CHARSET) \
--with-bench \ --with-bench \
$(SYSNAME) $(SYSNAME)
# sed 's/-fno-implicit-templates//g' sql/Makefile > .m # sed 's/-fno-implicit-templates//g' sql/Makefile > .m
# mv .m sql/Makefile # mv .m sql/Makefile
touch debian/stamp-config touch debian/stamp-config
...@@ -101,6 +116,51 @@ build-debug debian/stamp-build-debug: debian/stamp-patches ...@@ -101,6 +116,51 @@ build-debug debian/stamp-build-debug: debian/stamp-patches
touch debian/stamp-build-debug touch debian/stamp-build-debug
##################################################
debian/stamp-mysql-max: debian/stamp-mysql-max-static debian/stamp-mysql-max-shared debian/stamp-mysql-max-debug
debian/stamp-mysql-max-static: debian/stamp-premkdir debian/stamp-patches
-make distclean
CC=$(CC) CFLAGS="$(CFLAGS)" CXX=$(CXX) CXXFLAGS="$(CXXFLAGS)" \
./configure $(SERVERCONF) $(STATICCONF) \
$(MYSQLMAXCONF) \
--with-charset=$(CHARSET) \
$(SYSNAME)
make LDFLAGS="-static"
make install DESTDIR=`pwd`/debian/$(TEMPINST)-max
touch debian/stamp-mysql-max-static
debian/stamp-mysql-max-shared: debian/stamp-premkdir debian/stamp-patches
-make distclean
CC=$(CC) CFLAGS="$(CFLAGS)" CXX=$(CXX) CXXFLAGS="$(CXXFLAGS)" \
./configure $(SERVERCONF) \
$(MYSQLMAXCONF) \
--with-charset=$(CHARSET) \
$(SYSNAME)
make
make install DESTDIR=`pwd`/debian/$(TEMPINST)-max-shared
touch debian/stamp-mysql-max-shared
debian/stamp-mysql-max-debug: debian/stamp-premkdir debian/stamp-patches
-make distclean
CC=$(CC) CFLAGS="$(CFLAGS)" CXX=$(CXX) CXXFLAGS="$(CXXFLAGS)" \
./configure $(SERVERCONF) \
$(MYSQLMAXCONF) \
--with-charset=$(CHARSET) \
--with-debug \
$(SYSNAME)
make
make install DESTDIR=`pwd`/debian/$(TEMPINST)-max-debug
touch debian/stamp-mysql-max-debug
################################################## ##################################################
clean: clean:
$(checkdir) $(checkdir)
...@@ -123,12 +183,12 @@ binary-indep: checkroot build ...@@ -123,12 +183,12 @@ binary-indep: checkroot build
# generated by this package. If there were any they would be # generated by this package. If there were any they would be
# made here. # made here.
binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug debian/stamp-mysql-max
sh debian/move sh debian/move
### init, post* ### init, post*
dh_installdeb dh_installdeb
cp debian/shlibs debian/libmysqlclient9/DEBIAN/ cp debian/shlibs debian/libmysqlclient10/DEBIAN/
cp debian/my.cnf debian/mysql-server/etc/ cp debian/my.cnf debian/mysql-server/etc/
cp support-files/mysql.server debian/mysql-server/etc/init.d/mysql ; chmod +x debian/mysql-server/etc/init.d/mysql cp support-files/mysql.server debian/mysql-server/etc/init.d/mysql ; chmod +x debian/mysql-server/etc/init.d/mysql
...@@ -143,7 +203,7 @@ binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug ...@@ -143,7 +203,7 @@ binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug
dh_shlibdeps dh_shlibdeps
dh_gencontrol dh_gencontrol
dpkg --build debian/libmysqlclient9 .. dpkg --build debian/libmysqlclient10 ..
dpkg --build debian/mysql-client .. dpkg --build debian/mysql-client ..
dpkg --build debian/mysql-server .. dpkg --build debian/mysql-server ..
dpkg --build debian/mysql-server-shared .. dpkg --build debian/mysql-server-shared ..
...@@ -151,6 +211,9 @@ binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug ...@@ -151,6 +211,9 @@ binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug
dpkg --build debian/mysql-dev .. dpkg --build debian/mysql-dev ..
dpkg --build debian/mysql-bench .. dpkg --build debian/mysql-bench ..
dpkg --build debian/mysql-doc .. dpkg --build debian/mysql-doc ..
dpkg --build debian/mysql-max ..
dpkg --build debian/mysql-max-shared ..
dpkg --build debian/mysql-max-debug ..
define checkdir define checkdir
test -f debian/rules test -f debian/rules
......
libmysqlclient 9 libmysqlclient9 libmysqlclient 10 libmysqlclient10
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment