summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@work.mysql.com>2001-09-17 23:26:00 +0200
committerunknown <monty@work.mysql.com>2001-09-17 23:26:00 +0200
commitd8ae9669cd11f9c61105a9cbf19f9318a0e783fc (patch)
treea544afdc5cdc3dba7918f6a0d8f1341a2fe74ff2
parent9f939ecce6ccf73c5192d721d826f0a2a58a9b3e (diff)
parent9d62e4a05b1c8399787b624a90e0cab0aa42c57c (diff)
downloadmariadb-git-d8ae9669cd11f9c61105a9cbf19f9318a0e783fc.tar.gz
merge
Docs/manual.texi: Auto merged extra/perror.c: Auto merged include/my_base.h: Auto merged include/mysql.h: Auto merged scripts/make_binary_distribution.sh: Auto merged sql/ha_berkeley.cc: Auto merged sql/handler.h: Auto merged sql/mysqld.cc: Auto merged client/mysqltest.c: Auto merged
-rw-r--r--Docs/manual.texi3
-rw-r--r--client/mysqltest.c4
-rw-r--r--extra/perror.c4
-rw-r--r--include/my_base.h1
-rw-r--r--include/mysql.h3
-rw-r--r--include/mysqld_error.h17
-rw-r--r--innobase/buf/buf0buf.c1
-rw-r--r--innobase/log/log0log.c3
-rw-r--r--mysql-test/t/rpl000006.test18
-rw-r--r--scripts/make_binary_distribution.sh3
-rw-r--r--sql/ha_berkeley.cc6
-rw-r--r--sql/ha_berkeley.h1
-rw-r--r--sql/handler.h2
-rw-r--r--sql/mysqld.cc2
-rw-r--r--sql/share/czech/errmsg.txt1
-rw-r--r--sql/share/danish/errmsg.txt1
-rw-r--r--sql/share/dutch/errmsg.txt1
-rw-r--r--sql/share/english/errmsg.txt3
-rw-r--r--sql/share/estonian/errmsg.txt1
-rw-r--r--sql/share/french/errmsg.txt1
-rw-r--r--sql/share/german/errmsg.txt1
-rw-r--r--sql/share/greek/errmsg.txt1
-rw-r--r--sql/share/hungarian/errmsg.txt1
-rw-r--r--sql/share/italian/errmsg.txt1
-rw-r--r--sql/share/japanese/errmsg.txt1
-rw-r--r--sql/share/korean/errmsg.txt1
-rw-r--r--sql/share/norwegian-ny/errmsg.txt1
-rw-r--r--sql/share/norwegian/errmsg.txt1
-rw-r--r--sql/share/polish/errmsg.txt1
-rw-r--r--sql/share/portuguese/errmsg.txt1
-rw-r--r--sql/share/romanian/errmsg.txt1
-rw-r--r--sql/share/russian/errmsg.txt1
-rw-r--r--sql/share/slovak/errmsg.txt1
-rw-r--r--sql/share/spanish/errmsg.txt1
-rw-r--r--sql/share/swedish/errmsg.txt3
-rw-r--r--sql/share/ukrainian/errmsg.txt1
-rw-r--r--support-files/make_mysql_pkg.pl414
-rw-r--r--support-files/make_mysql_pkg.sh159
38 files changed, 494 insertions, 173 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi
index f7cb934e7dd..df0b8ccf989 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -47117,6 +47117,9 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.43
@itemize @bullet
@item
+Added unique error message when one gets a DEADLOCK during a transaction with
+BDB tables.
+@item
Fixed problem with @code{BDB} tables and @code{UNIQUE} columns defined
as @code{NULL}.
@item
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 1345f569593..1361dc843ed 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -1366,6 +1366,10 @@ int read_line(char* buf, int size)
*p = 0;
return 0;
}
+ else if (c == '\'')
+ state = R_Q1;
+ else if (c == '"')
+ state = R_Q2;
else
state = R_NORMAL;
break;
diff --git a/extra/perror.c b/extra/perror.c
index 28a1d217f3e..37a30adce34 100644
--- a/extra/perror.c
+++ b/extra/perror.c
@@ -67,6 +67,10 @@ static HA_ERRORS ha_errlist[]=
{ 143,"Conflicting table definition between MERGE and mapped table"},
{ 144,"Table is crashed and last repair failed"},
{ 145,"Table was marked as crashed and should be repaired"},
+ { 146,"Lock timed out; Retry transaction"},
+ { 147,"Lock table is full; Restart program with a larger locktable"},
+ { 148,"Updates are not allowed under a read only transactions"},
+ { 149,"Lock deadlock; Retry transaction"},
{ 0,NullS },
};
diff --git a/include/my_base.h b/include/my_base.h
index c4c1a0763fd..800e623bc2c 100644
--- a/include/my_base.h
+++ b/include/my_base.h
@@ -217,6 +217,7 @@ enum ha_base_keytype {
#define HA_ERR_LOCK_WAIT_TIMEOUT 146
#define HA_ERR_LOCK_TABLE_FULL 147
#define HA_ERR_READ_ONLY_TRANSACTION 148 /* Updates not allowed */
+#define HA_ERR_LOCK_DEADLOCK 149
/* Other constants */
diff --git a/include/mysql.h b/include/mysql.h
index 3431dc61945..3e3a6f35e56 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -34,6 +34,9 @@ extern "C" {
#ifndef _global_h /* If not standard header */
#include <sys/types.h>
+#ifdef __LCC__
+#include <winsock.h> /* For windows */
+#endif
typedef char my_bool;
#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__)
#define __WIN__
diff --git a/include/mysqld_error.h b/include/mysqld_error.h
index b81e10308ff..8f78d6190b1 100644
--- a/include/mysqld_error.h
+++ b/include/mysqld_error.h
@@ -213,11 +213,12 @@
#define ER_WRONG_ARGUMENTS 1210
#define ER_NO_PERMISSION_TO_CREATE_USER 1211
#define ER_UNION_TABLES_IN_DIFFERENT_DIR 1212
-#define ER_CONNECT_TO_MASTER 1213
-#define ER_QUERY_ON_MASTER 1214
-#define ER_ERROR_WHEN_EXECUTING_COMMAND 1215
-#define ER_WRONG_USAGE 1216
-#define ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 1217
-#define ER_CANT_UPDATE_WITH_READLOCK 1218
-#define ER_MIXING_NOT_ALLOWED 1219
-#define ER_ERROR_MESSAGES 220
+#define ER_LOCK_DEADLOCK 1213
+#define ER_CONNECT_TO_MASTER 1214
+#define ER_QUERY_ON_MASTER 1215
+#define ER_ERROR_WHEN_EXECUTING_COMMAND 1216
+#define ER_WRONG_USAGE 1217
+#define ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT 1218
+#define ER_CANT_UPDATE_WITH_READLOCK 1219
+#define ER_MIXING_NOT_ALLOWED 1220
+#define ER_ERROR_MESSAGES 221
diff --git a/innobase/buf/buf0buf.c b/innobase/buf/buf0buf.c
index f485088a5b7..acf56ac4ddf 100644
--- a/innobase/buf/buf0buf.c
+++ b/innobase/buf/buf0buf.c
@@ -359,6 +359,7 @@ buf_pool_create(
for (i = BUF_FLUSH_LRU; i <= BUF_FLUSH_LIST; i++) {
buf_pool->n_flush[i] = 0;
+ buf_pool->init_flush[i] = FALSE;
buf_pool->no_flush[i] = os_event_create(NULL);
}
diff --git a/innobase/log/log0log.c b/innobase/log/log0log.c
index 351ea7f2fd5..beac63535ab 100644
--- a/innobase/log/log0log.c
+++ b/innobase/log/log0log.c
@@ -569,7 +569,7 @@ log_init(void)
ut_a(LOG_BUFFER_SIZE >= 4 * UNIV_PAGE_SIZE);
buf = ut_malloc(LOG_BUFFER_SIZE + OS_FILE_LOG_BLOCK_SIZE);
- log_sys->buf = ut_align(buf, OS_FILE_LOG_BLOCK_SIZE);
+ log_sys->buf = ut_align(buf, OS_FILE_LOG_BLOCK_SIZE);
log_sys->buf_size = LOG_BUFFER_SIZE;
log_sys->max_buf_free = log_sys->buf_size / LOG_BUF_FLUSH_RATIO
@@ -613,6 +613,7 @@ log_init(void)
log_sys->archiving_state = LOG_ARCH_ON;
log_sys->archived_lsn = log_sys->lsn;
+ log_sys->next_archived_lsn = ut_dulint_zero;
log_sys->n_pending_archive_ios = 0;
diff --git a/mysql-test/t/rpl000006.test b/mysql-test/t/rpl000006.test
index 8668aac0b72..b8ee690837e 100644
--- a/mysql-test/t/rpl000006.test
+++ b/mysql-test/t/rpl000006.test
@@ -15,3 +15,21 @@ drop table foo;
save_master_pos;
connection slave;
sync_with_master;
+connection master;
+set SQL_LOG_BIN=1;
+CREATE TABLE t1 (
+ a int not null
+) TYPE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
+
+INSERT INTO t1 VALUES (1);
+save_master_pos;
+connection slave;
+sync_with_master;
+drop table t1;
+load table t1 from master;
+check table t1;
+connection master;
+drop table t1;
+save_master_pos;
+connection slave;
+sync_with_master;
diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh
index 1848123fd8e..b97d8f204db 100644
--- a/scripts/make_binary_distribution.sh
+++ b/scripts/make_binary_distribution.sh
@@ -50,7 +50,7 @@ mkdir $BASE $BASE/bin $BASE/data $BASE/data/mysql $BASE/data/test \
$BASE/include $BASE/lib $BASE/support-files $BASE/share $BASE/share/mysql \
$BASE/tests $BASE/scripts $BASE/sql-bench $BASE/mysql-test \
$BASE/mysql-test/t $BASE/mysql-test/r \
- $BASE/mysql-test/include $BASE/mysql-test/std_data
+ $BASE/mysql-test/include $BASE/mysql-test/std_data $BASE/man
chmod o-rwx $BASE/data $BASE/data/*
@@ -101,6 +101,7 @@ rm $BASE/include/Makefile*; rm $BASE/include/*.in
$CP tests/*.res tests/*.tst tests/*.pl $BASE/tests
$CP support-files/* $BASE/support-files
+$CP man/*.? $BASE/man
$CP -r sql/share/* $BASE/share/mysql
rm -f $BASE/share/mysql/Makefile* $BASE/share/mysql/*/*.OLD
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index 10866a1872b..e9cd3f57122 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -1996,6 +1996,12 @@ longlong ha_berkeley::get_auto_increment()
return nr;
}
+void ha_berkeley::print_error(int error, myf errflag)
+{
+ if (error == DB_LOCK_DEADLOCK)
+ error=HA_ERR_LOCK_DEADLOCK;
+ handler::print_error(error,errflag);
+}
/****************************************************************************
Analyzing, checking, and optimizing tables
diff --git a/sql/ha_berkeley.h b/sql/ha_berkeley.h
index fda7d2f2069..cc193aba485 100644
--- a/sql/ha_berkeley.h
+++ b/sql/ha_berkeley.h
@@ -162,6 +162,7 @@ class ha_berkeley: public handler
pthread_mutex_unlock(&share->mutex);
}
longlong get_auto_increment();
+ void print_error(int error, myf errflag);
};
extern bool berkeley_skip, berkeley_shared_data;
diff --git a/sql/handler.h b/sql/handler.h
index 4b047fb320e..5cf39daeadf 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -216,7 +216,7 @@ public:
int ha_open(const char *name, int mode, int test_if_locked);
void update_timestamp(byte *record);
void update_auto_increment();
- void print_error(int error, myf errflag);
+ virtual void print_error(int error, myf errflag);
uint get_dup_key(int error);
void change_table_ptr(TABLE *table_arg) { table=table_arg; }
virtual double scan_time()
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index d75de56b57f..99805b59548 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -2367,7 +2367,7 @@ pthread_handler_decl(handle_connections_sockets,arg __attribute__((unused)))
if (!(test_flags & TEST_BLOCKING))
fcntl(sock, F_SETFL, flags);
#endif
- if (new_sock < 0)
+ if (new_sock == INVALID_SOCKET)
{
if ((error_count++ & 255) == 0) // This can happen often
sql_perror("Error in accept");
diff --git a/sql/share/czech/errmsg.txt b/sql/share/czech/errmsg.txt
index 6097679b3d3..b92297abbf8 100644
--- a/sql/share/czech/errmsg.txt
+++ b/sql/share/czech/errmsg.txt
@@ -223,6 +223,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt
index 805740664d0..9adc2f5fb73 100644
--- a/sql/share/danish/errmsg.txt
+++ b/sql/share/danish/errmsg.txt
@@ -217,6 +217,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/dutch/errmsg.txt b/sql/share/dutch/errmsg.txt
index ea8984ae1ce..61db11f39f8 100644
--- a/sql/share/dutch/errmsg.txt
+++ b/sql/share/dutch/errmsg.txt
@@ -220,6 +220,7 @@
"Foutieve parameters voor %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/english/errmsg.txt b/sql/share/english/errmsg.txt
index 185d8ffbe33..bd328dbb6e4 100644
--- a/sql/share/english/errmsg.txt
+++ b/sql/share/english/errmsg.txt
@@ -206,7 +206,7 @@
"Could not create slave thread, check system resources",
"User %-.64s has already more than 'max_user_connections' active connections",
"You may only use constant expressions with SET",
-"Lock wait timeout exceeded",
+"Lock wait timeout exceeded; Try restarting transaction",
"The total number of locks exceeds the lock table size",
"Update locks cannot be acquired during a READ UNCOMMITTED transaction",
"DROP DATABASE not allowed while thread is holding global read lock",
@@ -214,6 +214,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/estonian/errmsg.txt b/sql/share/estonian/errmsg.txt
index 5023ead91e7..166637c43e1 100644
--- a/sql/share/estonian/errmsg.txt
+++ b/sql/share/estonian/errmsg.txt
@@ -218,6 +218,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/french/errmsg.txt b/sql/share/french/errmsg.txt
index 1f282dc078d..0db8b69622e 100644
--- a/sql/share/french/errmsg.txt
+++ b/sql/share/french/errmsg.txt
@@ -214,6 +214,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt
index dd744ecab46..a9ba1f41c42 100644
--- a/sql/share/german/errmsg.txt
+++ b/sql/share/german/errmsg.txt
@@ -217,6 +217,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/greek/errmsg.txt b/sql/share/greek/errmsg.txt
index 850bac1756b..aa8d659b263 100644
--- a/sql/share/greek/errmsg.txt
+++ b/sql/share/greek/errmsg.txt
@@ -214,6 +214,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/hungarian/errmsg.txt b/sql/share/hungarian/errmsg.txt
index 6e1d1af015e..5cc5ac663b1 100644
--- a/sql/share/hungarian/errmsg.txt
+++ b/sql/share/hungarian/errmsg.txt
@@ -216,6 +216,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/italian/errmsg.txt b/sql/share/italian/errmsg.txt
index 5d10578a6cf..7c44e0bf4c7 100644
--- a/sql/share/italian/errmsg.txt
+++ b/sql/share/italian/errmsg.txt
@@ -214,6 +214,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/japanese/errmsg.txt b/sql/share/japanese/errmsg.txt
index 1ed9b4aa346..5d6f0158ea2 100644
--- a/sql/share/japanese/errmsg.txt
+++ b/sql/share/japanese/errmsg.txt
@@ -216,6 +216,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/korean/errmsg.txt b/sql/share/korean/errmsg.txt
index 8b2d689bff5..6288ac535d4 100644
--- a/sql/share/korean/errmsg.txt
+++ b/sql/share/korean/errmsg.txt
@@ -214,6 +214,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/norwegian-ny/errmsg.txt b/sql/share/norwegian-ny/errmsg.txt
index 267eae13d67..de783f93d1a 100644
--- a/sql/share/norwegian-ny/errmsg.txt
+++ b/sql/share/norwegian-ny/errmsg.txt
@@ -216,6 +216,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/norwegian/errmsg.txt b/sql/share/norwegian/errmsg.txt
index 8a7112ac0c1..3cbc5b6138d 100644
--- a/sql/share/norwegian/errmsg.txt
+++ b/sql/share/norwegian/errmsg.txt
@@ -216,6 +216,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/polish/errmsg.txt b/sql/share/polish/errmsg.txt
index 6ae12f7bff1..c144dda47ae 100644
--- a/sql/share/polish/errmsg.txt
+++ b/sql/share/polish/errmsg.txt
@@ -218,6 +218,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/portuguese/errmsg.txt b/sql/share/portuguese/errmsg.txt
index 787fae883ea..c11adc3af70 100644
--- a/sql/share/portuguese/errmsg.txt
+++ b/sql/share/portuguese/errmsg.txt
@@ -214,6 +214,7 @@
"Argumentos errados para %s",
"Não é permitido a %-.32s@%-.64s criar novos usuários",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/romanian/errmsg.txt b/sql/share/romanian/errmsg.txt
index a09a8046b29..32b6eddfeeb 100644
--- a/sql/share/romanian/errmsg.txt
+++ b/sql/share/romanian/errmsg.txt
@@ -218,6 +218,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/russian/errmsg.txt b/sql/share/russian/errmsg.txt
index e4de072bf67..fbff74993fb 100644
--- a/sql/share/russian/errmsg.txt
+++ b/sql/share/russian/errmsg.txt
@@ -217,6 +217,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/slovak/errmsg.txt b/sql/share/slovak/errmsg.txt
index 9b4491a3258..d60dbf0956c 100644
--- a/sql/share/slovak/errmsg.txt
+++ b/sql/share/slovak/errmsg.txt
@@ -222,6 +222,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/sql/share/spanish/errmsg.txt b/sql/share/spanish/errmsg.txt
index 165fcb1d538..9234de04786 100644
--- a/sql/share/spanish/errmsg.txt
+++ b/sql/share/spanish/errmsg.txt
@@ -215,6 +215,7 @@
"Wrong arguments to %s",
"%-.32s@%-.64s is not allowed to create new users",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error de coneccion a master: %-128s",
"Error executando el query en master: %-128%",
"Error de %s: %-128%",
diff --git a/sql/share/swedish/errmsg.txt b/sql/share/swedish/errmsg.txt
index 095a05faf34..25309cd0598 100644
--- a/sql/share/swedish/errmsg.txt
+++ b/sql/share/swedish/errmsg.txt
@@ -206,7 +206,7 @@
"Kunde inte starta en tråd för replikering",
"Användare '%-.64s' har redan 'max_user_connections' aktiva inloggningar",
"Man kan endast använda konstant-uttryck med SET",
-"Fick inte ett lås i tid",
+"Fick inte ett lås i tid ; Försök att starta om transaktionen",
"Antal lås överskrider antalet reserverade lås",
"Updaterings-lås kan inte göras när man använder READ UNCOMMITTED",
"DROP DATABASE är inte tillåtet när man har ett globalt läs-lås",
@@ -214,6 +214,7 @@
"Felaktiga argument till %s",
"%-.32s@%-.64s har inte rättighet att skapa nya användare",
"Felaktig tabell definition: Alla tabeller i en MERGE tabell måste vara i samma databas",
+"Fick 'DEADLOCK' vid låsförsök av block/rad; Försök att starta om transaktionen",
"Fick fel vid anslutning till master: %-.128s",
"Fick fel vid utförande av command på mastern: %-.128s",
"Fick fel vid utförande av %s: %-.128s",
diff --git a/sql/share/ukrainian/errmsg.txt b/sql/share/ukrainian/errmsg.txt
index 4ed29035514..49ab4399664 100644
--- a/sql/share/ukrainian/errmsg.txt
+++ b/sql/share/ukrainian/errmsg.txt
@@ -219,6 +219,7 @@
"èÉÂÎÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ %s",
"ëÏÒÉÓÔÕ×ÁÞÕ %-.32s@%-.64s ÎÅ ÄÏÚ×ÏÌÅÎÏ ÓÔ×ÏÒÀ×ÁÔÉ ÎÏ×ÉÈ ËÏÒÉÓÔÕ×ÁÞ¦×",
"Incorrect table definition; All MERGE tables must be in the same database",
+"Deadlock found when trying to get lock; Try restarting transaction",
"Error connecting to master: %-.128s",
"Error running query on master: %-.128s",
"Error when executing command %s: %-.128s",
diff --git a/support-files/make_mysql_pkg.pl b/support-files/make_mysql_pkg.pl
new file mode 100644
index 00000000000..75345c7275b
--- /dev/null
+++ b/support-files/make_mysql_pkg.pl
@@ -0,0 +1,414 @@
+#!/usr/bin/perl -w
+#
+#
+# make_mysql_pkg.pl
+#
+# This script creates a Mac OS X installation package
+# of MySQL for Apple's Installer application.
+#
+# To use it:
+#
+# 1.) Unpack the mysql source tarball and cd into the directory
+# 2.) execute this script
+#
+#
+# Written by Marc Liyanage (http://www.entropy.ch)
+#
+# History:
+#
+# When Who What
+# -------------------------------------------------------------
+# 2001-09-16 Marc Liyanage First version
+
+use strict;
+use DirHandle;
+
+my $data = {};
+
+$data->{PREFIX_DIR} = "/usr/local";
+$data->{CONFIG} = "--prefix=$data->{PREFIX_DIR} --with-innodb";
+
+
+
+
+
+prepare($data);
+configure_source($data);
+make($data);
+make_binary_distribution($data);
+create_pax_root($data);
+create_package($data);
+cleanup($data);
+
+print "Package $data->{PACKAGE_TARBALL_FILENAME} created\n";
+
+
+
+
+
+
+# Subroutines follow here...
+
+
+
+
+# Prepares data in the global $data hash, like version numbers,
+# directory names etc. Also makes sure that no old stuff
+# is in our way.
+#
+sub prepare {
+
+ my ($data) = @_;
+
+ # Keep the current wd for reference
+ #
+ $data->{OLDWD} = `pwd`;
+ chomp($data->{OLDWD});
+
+ # Look for configure script
+ #
+ unless (-f "configure") {
+ abort($data, "Unable to find 'configure', make sure you're in the MySQL source toplevel directory!");
+ }
+
+ # Try to find version number there
+ #
+ my $mysql_version_h = `cat configure`;
+ ($data->{VERSION}) = $mysql_version_h =~ /^VERSION=(.+?)$/m;
+
+ unless ($data->{VERSION} =~ /\d+/) {
+ abort($data, "Unable to find MySQL version number!");
+ }
+
+ debug($data, "found MySQL version number $data->{VERSION}");
+
+
+ # PAXROOT_DIR is where we will build our own little
+ # fake /usr/local directory. Make sure it doesn't exist,
+ # then try to create it.
+ #
+ $data->{PAXROOT_DIR} = "/tmp/mysql-$data->{VERSION}-paxroot";
+
+ if (-e $data->{PAXROOT_DIR}) {
+ abort($data, "$data->{PAXROOT_DIR} exists, please remove first");
+ }
+
+ if (system("mkdir $data->{PAXROOT_DIR}")) {
+ abort($data, "Unable to mkdir $data->{PAXROOT_DIR}, please make sure you have the right permissions!");
+ }
+
+
+ # PACKAGE_DIR is where we will build the package directory
+ # hierarchy, according to the standard .pkg layout.
+ #
+ $data->{PACKAGE_NAME} = "mysql-$data->{VERSION}.pkg";
+ $data->{PACKAGE_DIR} = "/tmp/$data->{PACKAGE_NAME}";
+
+ if (-e $data->{PACKAGE_DIR}) {
+ abort($data, "$data->{PACKAGE_DIR} exists, please remove first");
+ }
+
+ if (system("mkdir $data->{PACKAGE_DIR}")) {
+ abort($data, "Unable to mkdir $data->{PACKAGE_DIR}, please make sure you have the right permissions!");
+ }
+
+
+}
+
+
+
+# Configure the MySQL source with our options
+#
+sub configure_source {
+
+ my ($data) = @_;
+
+ if (system("./configure $data->{CONFIG}")) {
+ abort($data, "Unable to configure!");
+ }
+
+}
+
+
+
+
+# Build the software
+#
+sub make {
+
+ my ($data) = @_;
+
+ if (system("make")) {
+ abort($data, "Unable to make!");
+ }
+
+}
+
+
+
+# We don't ever install the software, but instead we use an
+# included script to create a binary distribution
+# tarball.
+#
+sub make_binary_distribution {
+
+ my ($data) = @_;
+
+ if (system("./scripts/make_binary_distribution > make_binary_distribution.out")) {
+ abort($data, "Unable to make_binary_distribution!");
+ }
+
+ my @output = `cat make_binary_distribution.out`;
+ my $last_line = $output[-1];
+ unlink("make_binary_distribution.out");
+
+ my ($tarball_filename, $tarball_directory) = $last_line =~ /^((.+)\.tar\.gz) created/i;
+
+ unless ($tarball_filename and -f $tarball_filename) {
+ abort($data, "Unable determine the output filename of scripts/make_binary_distribution!");
+ }
+
+ $data->{BINARY_TARBALL_FILENAME} = $tarball_filename;
+ $data->{BINARY_TARBALL_DIRECTORY} = $tarball_directory;
+
+}
+
+
+
+
+# Now we build a fake /usr/local directory hierarchy.
+# This will be fed to the pax tool to create
+# the archive.
+#
+sub create_pax_root {
+
+ my ($data) = @_;
+
+ # Go there and try to extract the binary distribution
+ # tarball which we created in the previous step.
+ #
+ chdir($data->{PAXROOT_DIR});
+ my $tarfile = "$data->{OLDWD}/$data->{BINARY_TARBALL_FILENAME}";
+
+ if(system("tar -xzf $tarfile")) {
+ abort($data, "Unable to extract $tarfile inside $data->{PAXROOT_DIR}");
+ }
+
+ # Rename it to what we want it to be in the
+ # installed /usr/local directory later on, i.e.
+ # mysql-<version>. Then create a symlink from
+ # mysql to mysql-<version>
+ #
+ rename($data->{BINARY_TARBALL_DIRECTORY}, "mysql-$data->{VERSION}");
+ symlink("mysql-$data->{VERSION}", "mysql");
+
+
+ # We create a bunch of symlinks in /usr/local/bin and
+ # /usr/local/share/man so that the end-user will not
+ # have to adjust PATH and MANPATH to include the
+ # /usr/local/mysql/bin and man directories.
+ #
+ system("mkdir -p $_") foreach qw(bin share/man);
+
+
+ # First create the symlinks in the bin directory
+ #
+ chdir("bin");
+ symlink("../mysql/bin/$_", "$_") foreach (grep {$_ !~ /^\.+$/} DirHandle->new("../mysql/bin")->read());
+
+
+ # Now include the man pages. Two problems here:
+ # 1.) the make_binary_distribution script does not seem
+ # to include the man pages, so we have to copy them over
+ # now.
+ # 2.) The man pages could be in different sections, so
+ # we have to recursively copy *and* symlink them.
+ #
+
+ # First find out what's there in the source distribution.
+ # Store the names of the manpages in anonymous
+ # arrays which in turn will be stored in a hash, using
+ # the section numbers as hash keys.
+ #
+ chdir($data->{OLDWD});
+ my %man_sections;
+ foreach my $manpage (grep {$_ =~ /^.+\.(\d+)$/} DirHandle->new("man")->read()) {
+
+ my ($section) = $manpage =~ /\.(\d+)$/;
+
+ $man_sections{$section} ||= [];
+ push @{$man_sections{$section}}, "$manpage";
+
+ }
+
+
+ # Now iterate through the sections and man pages,
+ # and copy/symlink the man pages
+ #
+ chdir("$data->{PAXROOT_DIR}/share/man/");
+
+ foreach my $section (keys(%man_sections)) {
+
+ system("mkdir -p $data->{PAXROOT_DIR}/mysql/man/man$section/");
+ system("mkdir -p man$section");
+ chdir("man$section");
+
+ foreach my $manpage (@{$man_sections{$section}}) {
+
+ system("cp $data->{OLDWD}/man/$manpage $data->{PAXROOT_DIR}/mysql/man/man$section/");
+ symlink("../../../mysql/man/man$section/$manpage", $manpage)
+
+ }
+
+ chdir("..");
+
+ }
+
+
+}
+
+
+
+# Take the pax root directory, create a few auxiliary
+# files and then pack everything up into a tarball
+#
+sub create_package {
+
+ my ($data) = @_;
+
+ # Create the resources directory in which all
+ # interesting files for this package will be stored
+ #
+ $data->{PKG_RESOURCES_DIR} = "$data->{PACKAGE_DIR}/Contents/Resources";
+
+ if (system("mkdir -p $data->{PKG_RESOURCES_DIR}")) {
+ abort("Unable to create package resources dir $data->{PKG_RESOURCES_DIR}");
+ }
+
+
+ # Create the big archive with all the files using
+ # the pax tool
+ #
+ chdir($data->{PAXROOT_DIR});
+ if(system("pax -w . | gzip -c > $data->{PKG_RESOURCES_DIR}/mysql-$data->{VERSION}.pax.gz")) {
+ abort("Unable to create package pax file");
+ }
+
+
+ # Create the "Bill Of Materials" (bom) file.
+ #
+ if(system("mkbom . $data->{PKG_RESOURCES_DIR}/mysql-$data->{VERSION}.bom")) {
+ abort("Unable to create package bom file");
+ }
+
+
+ # Create the ".sizes" file with some information about the package
+ #
+ my $size_uncompressed = `du -sk $data->{PAXROOT_DIR} | cut -f 1`;
+ chomp($size_uncompressed);
+
+ my $size_compressed = `du -sk $data->{PACKAGE_DIR} | cut -f 1`;
+ chomp($size_compressed);
+
+ my $numfiles = `find /tmp/mysql-3.23.42-paxroot/ | wc -l`;
+ $numfiles--;
+
+ open(SIZESFILE, ">$data->{PKG_RESOURCES_DIR}/mysql-$data->{VERSION}.sizes") or abort("Unable to write open sizes file $data->{PKG_RESOURCES_DIR}/mysql-$data->{VERSION}.sizes");
+ print SIZESFILE "NumFiles $numfiles\n";
+ print SIZESFILE "InstalledSize $size_uncompressed\n";
+ print SIZESFILE "CompressedSize $size_compressed\n";
+ close(SIZESFILE);
+
+
+ # Create the ".info" file with more information abou the package.
+ #
+ open(INFOFILE, ">$data->{PKG_RESOURCES_DIR}/mysql-$data->{VERSION}.info") or abort("Unable to write open sizes file $data->{PKG_RESOURCES_DIR}/mysql-$data->{VERSION}.info");
+ my $infodata = join("", <DATA>);
+ $infodata =~ s/<%(.+?)%>/$data->{$1}/eg;
+ abort("Unable to get info file data from __DATA__!") unless ($infodata =~ /\w+/);
+ print INFOFILE $infodata;
+ close(INFOFILE);
+
+
+
+ # Finally, create the .tar.gz file for the package,
+ # this is our end result
+ #
+ chdir($data->{PACKAGE_DIR});
+ chdir("..");
+
+ $data->{PACKAGE_TARBALL_FILENAME} = "$data->{PACKAGE_NAME}.tar.gz";
+
+ if(system("tar -czf $data->{OLDWD}/$data->{PACKAGE_TARBALL_FILENAME} $data->{PACKAGE_NAME}")) {
+ abort("Unable to create package tar file $data->{OLDWD}/$data->{PACKAGE_TARBALL_FILENAME}");
+ }
+
+
+
+}
+
+
+# Abort with an error message
+#
+sub abort {
+
+ my ($data, $errormessage) = @_;
+
+ my ($caller) = (caller(1))[3];
+ $caller =~ s/^main:://;
+
+ print "*** Error: $caller(): $errormessage\n";
+
+ exit 1;
+
+}
+
+
+# Output informative messages
+#
+sub debug {
+
+ my ($data, $message) = @_;
+
+ my ($caller) = (caller(1))[3];
+ $caller =~ s/^main:://;
+
+ print "*** Info: $caller(): $message\n";
+
+}
+
+
+
+# Remove temporary items
+#
+sub cleanup {
+
+ my ($data) = @_;
+
+ chdir($data->{OLDWD});
+
+ system("rm -rf $data->{PACKAGE_DIR}");
+ system("rm -rf $data->{PAXROOT_DIR}");
+ system("rm $data->{BINARY_TARBALL_FILENAME}");
+
+}
+
+
+
+
+__DATA__
+Title MySQL
+Version <%VERSION%>
+Description The MySQL database server in a convenient Mac OS X package. Some additional configuration is necessary, please see http://www.entropy.ch/software/macosx/mysql/
+DefaultLocation /usr/local
+Diskname (null)
+DeleteWarning
+NeedsAuthorization YES
+DisableStop NO
+UseUserMask NO
+Application NO
+Relocatable NO
+Required NO
+InstallOnly NO
+RequiresReboot NO
+InstallFat NO \ No newline at end of file
diff --git a/support-files/make_mysql_pkg.sh b/support-files/make_mysql_pkg.sh
deleted file mode 100644
index b0eb817fff4..00000000000
--- a/support-files/make_mysql_pkg.sh
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/bin/sh
-#
-# make_mysql_pkg.sh
-#
-# This script creates a Mac OS X installation package
-# for Apple's Installer application.
-#
-# To use it:
-#
-# 1.) unpack the MySQL source tarball
-# 2.) cd to into the resulting directory and stay there for the next steps
-# 3.) "configure" the source (preferably with --mandir=/usr/local/share/man)
-# 4.) "make" the package
-# 5.) invoke this script with superuser privileges (sudo or in a root shell)
-#
-# Written by Marc Liyanage (http://www.entropy.ch)
-#
-# History:
-#
-# When Who What
-# -------------------------------------------------------------
-# 2001-09-13 Marc Liyanage First version
-
-
-# Find the version number of this particular MySQL build
-#
-OLDWD=`pwd`
-VERSION_H_FILE=$OLDWD/include/mysql_version.h
-
-if [ ! -e $VERSION_H_FILE ]
-then
-echo $VERSION_H_FILE not found, make sure you are in the mysql source dir
-exit 1
-fi
-
-MYSQLVERSION=`egrep 'MYSQL_SERVER_VERSION' $VERSION_H_FILE | perl -e '$_ = <>; $_ =~ /"(.+?)"/; print $1'`
-
-
-
-# We will temporarily rename /usr/local to this name
-# and then mkdir a new, empty /usr/local
-#
-LOCAL_TMPDIR=/usr/local.tmp
-
-# At the end, we'll keep our temporary /usr/local
-# to this name
-#
-LOCAL_BACKUPDIR=/usr/local.mysql-package
-
-# Where do we create the package directory
-#
-PKG_DIR=/tmp/mysql-$MYSQLVERSION.pkg
-
-# Where is the resources directory within the
-# package directory
-#
-PKG_RESOURCES_DIR=$PKG_DIR/Contents/Resources
-
-# Check if old stuff is in our way
-#
-if [ -e $LOCAL_BACKUPDIR ]
-then
-echo $LOCAL_BACKUPDIR exists, please remove first...
-exit 1
-fi
-
-if [ -e $LOCAL_TMPDIR ]
-then
-echo $LOCAL_TMPDIR exists, please remove first...
-exit 1
-fi
-
-if [ -e $PKG_DIR ]
-then
-echo $PKG_DIR exists, please remove first...
-exit 1
-fi
-
-# Now create the package dir
-#
-mkdir -p $PKG_RESOURCES_DIR
-
-# Move the existing /usr/local out of our way
-#
-mv /usr/local $LOCAL_TMPDIR
-
-# Now create our new empty temporary /usr/local
-#
-mkdir /usr/local
-
-# And install MySQL there
-#
-make install
-
-
-# cd there so the next few commands will use it
-# as base directory
-#
-cd /usr/local
-
-# First, create the gzipped pax archive file
-# which contains the actual files
-#
-pax -w . | gzip -c > $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.pax.gz
-
-# Create the bom ("Bill Of Materials") file
-#
-mkbom . $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.bom
-
-# Create the sizes file with the package space
-# requirement numbers and file count
-#
-SIZE_UNCOMPRESSED=`du -sk /usr/local | cut -f 1`
-SIZE_COMPRESSED=`du -sk $PKG_DIR | cut -f 1`
-NUMFILES=`find /usr/local | wc -l | perl -e '$_ = <>; $_ =~ /\s+(\d+)/; print $1 - 1'`
-
-echo NumFiles $NUMFILES >> $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.sizes
-echo InstalledSize $SIZE_UNCOMPRESSED >> $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.sizes
-echo CompressedSize $SIZE_COMPRESSED >> $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.sizes
-
-
-# Finally create the info file which drives the "Installer" application
-#
-cat >$PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.info <<- EOF
- Title MySQL
- Version $MYSQLVERSION
- Description The MySQL database server in a convenient Mac OS X package. Some additional configuration is necessary, please see http://www.entropy.ch/software/macosx/mysql/
- DefaultLocation /usr/local
- Diskname (null)
- DeleteWarning
- NeedsAuthorization YES
- DisableStop NO
- UseUserMask NO
- Application NO
- Relocatable NO
- Required NO
- InstallOnly NO
- RequiresReboot NO
- InstallFat NO
-EOF
-
-# Create a .tar.gz file for the package directory
-#
-cd $PKG_DIR
-cd ..
-DIRNAME=`dirname $PKG_DIR`
-BASENAME=`basename $PKG_DIR`
-FILENAME=$BASENAME.tar.gz
-tar -cvzf $FILENAME $BASENAME
-
-# Move our temporary /usr/local out of the way
-# and the original one back
-#
-mv /usr/local $LOCAL_BACKUPDIR
-mv $LOCAL_TMPDIR /usr/local
-
-echo output package is in $DIRNAME/$FILENAME
-
-