mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Merge work:/home/bk/mysql-4.1 into mashka.mysql.fi:/home/my/mysql-4.1
This commit is contained in:
commit
d14db3961d
27 changed files with 68 additions and 147 deletions
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)chared.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: chared.c,v 1.14 2001/05/17 01:02:17 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* chared.c: Character editor utilities
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)common.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: common.c,v 1.10 2001/01/10 07:45:41 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* common.c: Common Editor functions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)el.c 8.2 (Berkeley) 1/3/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: el.c,v 1.21 2001/01/05 22:45:30 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* el.c: EditLine interface functions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)emacs.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: emacs.c,v 1.9 2001/01/10 07:45:41 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* emacs.c: Emacs functions
|
||||
|
|
|
@ -95,9 +95,10 @@ getline (char **lineptr, size_t *n, FILE *stream)
|
|||
char *fgetln(FILE *stream, size_t *len)
|
||||
{
|
||||
char *ptr = NULL;
|
||||
int sz = 0;
|
||||
int sz;
|
||||
size_t length= 0;
|
||||
|
||||
sz = getline(&ptr, &sz, stream);
|
||||
sz = getline(&ptr, &length, stream);
|
||||
if(len) {
|
||||
*len = sz;
|
||||
}
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)hist.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: hist.c,v 1.9 2001/05/17 01:02:17 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* hist.c: History access functions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)history.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: history.c,v 1.17 2001/03/20 00:08:31 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* hist.c: History access functions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)key.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: key.c,v 1.12 2001/05/17 01:02:17 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* key.c: This module contains the procedures for maintaining
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)map.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: map.c,v 1.14 2001/01/09 17:22:09 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* map.c: Editor function definitions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)parse.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: parse.c,v 1.14 2001/01/23 15:55:30 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* parse.c: parse an editline extended command
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)prompt.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: prompt.c,v 1.8 2001/01/10 07:45:41 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* prompt.c: Prompt printing functions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)read.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: read.c,v 1.19 2001/01/10 07:45:41 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* read.c: Clean this junk up! This is horrible code.
|
||||
|
|
|
@ -37,10 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
__RCSID("$NetBSD: readline.c,v 1.19 2001/01/10 08:10:45 jdolecek Exp $");
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)refresh.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: refresh.c,v 1.17 2001/04/13 00:53:11 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* refresh.c: Lower level screen refreshing functions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)search.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: search.c,v 1.11 2001/01/23 15:55:31 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* search.c: History and character search functions
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)sig.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: sig.c,v 1.8 2001/01/09 17:31:04 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* sig.c: Signal handling stuff.
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)term.c 8.2 (Berkeley) 4/30/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: term.c,v 1.32 2001/01/23 15:55:31 jdolecek Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* term.c: Editor/termcap-curses interface
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)tokenizer.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: tokenizer.c,v 1.7 2001/01/04 15:56:32 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* tokenize.c: Bourne shell like tokenizer
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)tty.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: tty.c,v 1.15 2001/05/17 01:02:17 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* tty.c: tty interface stuff
|
||||
|
|
|
@ -37,13 +37,6 @@
|
|||
*/
|
||||
|
||||
#include "compat.h"
|
||||
#if !defined(lint) && !defined(SCCSID)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)vi.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: vi.c,v 1.8 2000/09/04 22:06:33 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint && not SCCSID */
|
||||
|
||||
/*
|
||||
* vi.c: Vi mode commands.
|
||||
|
|
|
@ -508,6 +508,14 @@ btr_search_check_guess(
|
|||
/*===================*/
|
||||
/* out: TRUE if success */
|
||||
btr_cur_t* cursor, /* in: guessed cursor position */
|
||||
ibool can_only_compare_to_cursor_rec,
|
||||
/* in: if we do not have a latch on the page
|
||||
of cursor, but only a latch on
|
||||
btr_search_latch, then ONLY the columns
|
||||
of the record UNDER the cursor are
|
||||
protected, not the next or previous record
|
||||
in the chain: we cannot look at the next or
|
||||
previous record to check our guess! */
|
||||
dtuple_t* tuple, /* in: data tuple */
|
||||
ulint mode, /* in: PAGE_CUR_L, PAGE_CUR_LE, PAGE_CUR_G,
|
||||
or PAGE_CUR_GE */
|
||||
|
@ -566,6 +574,13 @@ btr_search_check_guess(
|
|||
}
|
||||
}
|
||||
|
||||
if (can_only_compare_to_cursor_rec) {
|
||||
/* Since we could not determine if our guess is right just by
|
||||
looking at the record under the cursor, return FALSE */
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
match = 0;
|
||||
bytes = 0;
|
||||
|
||||
|
@ -670,6 +685,7 @@ btr_search_guess_on_hash(
|
|||
ulint fold;
|
||||
ulint tuple_n_fields;
|
||||
dulint tree_id;
|
||||
ibool can_only_compare_to_cursor_rec = TRUE;
|
||||
#ifdef notdefined
|
||||
btr_cur_t cursor2;
|
||||
btr_pcur_t pcur;
|
||||
|
@ -744,6 +760,8 @@ btr_search_guess_on_hash(
|
|||
goto failure;
|
||||
}
|
||||
|
||||
can_only_compare_to_cursor_rec = FALSE;
|
||||
|
||||
buf_page_dbg_add_level(page, SYNC_TREE_NODE_FROM_HASH);
|
||||
}
|
||||
|
||||
|
@ -775,7 +793,15 @@ btr_search_guess_on_hash(
|
|||
fold);
|
||||
*/
|
||||
} else {
|
||||
success = btr_search_check_guess(cursor, tuple, mode, mtr);
|
||||
/* If we only have the latch on btr_search_latch, not on the
|
||||
page, it only protects the columns of the record the cursor
|
||||
is positioned on. We cannot look at the next of the previous
|
||||
record to determine if our guess for the cursor position is
|
||||
right. */
|
||||
|
||||
success = btr_search_check_guess(cursor,
|
||||
can_only_compare_to_cursor_rec,
|
||||
tuple, mode, mtr);
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
|
|
|
@ -234,10 +234,16 @@ struct btr_search_sys_struct{
|
|||
extern btr_search_sys_t* btr_search_sys;
|
||||
|
||||
/* The latch protecting the adaptive search system: this latch protects the
|
||||
(1) positions of records on those pages where a hash index has been built.
|
||||
NOTE: It does not protect values of non-ordering fields within a record from
|
||||
being updated in-place! We can use fact (1) to perform unique searches to
|
||||
indexes. */
|
||||
(1) hash index;
|
||||
(2) columns of a record to which we have a pointer in the hash index;
|
||||
|
||||
but does NOT protect:
|
||||
|
||||
(3) next record offset field in a record;
|
||||
(4) next or previous records on the same page.
|
||||
|
||||
Bear in mind (3) and (4) when using the hash index.
|
||||
*/
|
||||
|
||||
extern rw_lock_t* btr_search_latch_temp;
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ noinst_PROGRAMS = charset2html @THREAD_LPROGRAMS@
|
|||
# test_dir_DEPENDENCIES= $(LIBRARIES)
|
||||
# testhash_DEPENDENCIES= $(LIBRARIES)
|
||||
# test_charset_DEPENDENCIES= $(LIBRARIES)
|
||||
charset2html_DEPENDENCIES= $(LIBRARIES)
|
||||
# charset2html_DEPENDENCIES= $(LIBRARIES)
|
||||
EXTRA_PROGRAMS =
|
||||
DEFS = -DDEFAULT_BASEDIR=\"$(prefix)\" \
|
||||
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
||||
|
|
|
@ -867,10 +867,11 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
|
|||
|
||||
if (db_ok(thd->db, replicate_do_db, replicate_ignore_db))
|
||||
{
|
||||
thd->query = (char*)query;
|
||||
thd->set_time((time_t)when);
|
||||
thd->current_tablenr = 0;
|
||||
thd->query_length= q_len;
|
||||
VOID(pthread_mutex_lock(&LOCK_thread_count));
|
||||
thd->query = (char*)query;
|
||||
thd->query_id = query_id++;
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
thd->query_error= 0; // clear error
|
||||
|
@ -928,7 +929,9 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
|
|||
else
|
||||
{
|
||||
// master could be inconsistent, abort and tell DBA to check/fix it
|
||||
VOID(pthread_mutex_lock(&LOCK_thread_count));
|
||||
thd->db = thd->query = 0;
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
thd->variables.convert_set = 0;
|
||||
close_thread_tables(thd);
|
||||
free_root(&thd->mem_root,0);
|
||||
|
@ -936,7 +939,9 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
|
|||
}
|
||||
}
|
||||
thd->db= 0; // prevent db from being freed
|
||||
VOID(pthread_mutex_lock(&LOCK_thread_count));
|
||||
thd->query= 0; // just to be sure
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
// assume no convert for next query unless set explictly
|
||||
thd->variables.convert_set = 0;
|
||||
close_thread_tables(thd);
|
||||
|
@ -1513,7 +1518,8 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli,
|
|||
{
|
||||
init_sql_alloc(&thd->mem_root, 8192,0);
|
||||
thd->db = rewrite_db((char*)db);
|
||||
thd->query = 0;
|
||||
DBUG_ASSERT(thd->query == 0);
|
||||
thd->query = 0; // Should not be needed
|
||||
thd->query_error = 0;
|
||||
|
||||
if (db_ok(thd->db, replicate_do_db, replicate_ignore_db))
|
||||
|
|
21
sql/slave.cc
21
sql/slave.cc
|
@ -1011,6 +1011,7 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db,
|
|||
const char* table_name)
|
||||
{
|
||||
ulong packet_len = my_net_read(net); // read create table statement
|
||||
char *query;
|
||||
Vio* save_vio;
|
||||
HA_CHECK_OPT check_opt;
|
||||
TABLE_LIST tables;
|
||||
|
@ -1030,15 +1031,23 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db,
|
|||
return 1;
|
||||
}
|
||||
thd->command = COM_TABLE_DUMP;
|
||||
thd->query = sql_alloc(packet_len + 1);
|
||||
if (!thd->query)
|
||||
/* Note that we should not set thd->query until the area is initalized */
|
||||
if (!(query = sql_alloc(packet_len + 1)))
|
||||
{
|
||||
sql_print_error("create_table_from_dump: out of memory");
|
||||
net_printf(thd, ER_GET_ERRNO, "Out of memory");
|
||||
return 1;
|
||||
}
|
||||
memcpy(thd->query, net->read_pos, packet_len);
|
||||
thd->query[packet_len] = 0;
|
||||
memcpy(query, net->read_pos, packet_len);
|
||||
query[packet_len]= 0;
|
||||
thd->query_length= packet_len;
|
||||
/*
|
||||
We make the following lock in an attempt to ensure that the compiler will
|
||||
not rearrange the code so that thd->query is set too soon
|
||||
*/
|
||||
VOID(pthread_mutex_lock(&LOCK_thread_count));
|
||||
thd->query= query;
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
thd->current_tablenr = 0;
|
||||
thd->query_error = 0;
|
||||
thd->net.no_send_ok = 1;
|
||||
|
@ -2272,7 +2281,9 @@ err:
|
|||
// print the current replication position
|
||||
sql_print_error("Slave I/O thread exiting, read up to log '%s', position %s",
|
||||
IO_RPL_LOG_NAME, llstr(mi->master_log_pos,llbuff));
|
||||
VOID(pthread_mutex_lock(&LOCK_thread_count));
|
||||
thd->query = thd->db = 0; // extra safety
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
if (mysql)
|
||||
{
|
||||
mc_mysql_close(mysql);
|
||||
|
@ -2407,7 +2418,9 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \
|
|||
RPL_LOG_NAME, llstr(rli->master_log_pos,llbuff));
|
||||
|
||||
err:
|
||||
VOID(pthread_mutex_lock(&LOCK_thread_count));
|
||||
thd->query = thd->db = 0; // extra safety
|
||||
VOID(pthread_mutex_unlock(&LOCK_thread_count));
|
||||
thd->proc_info = "Waiting for slave mutex on exit";
|
||||
pthread_mutex_lock(&rli->run_lock);
|
||||
DBUG_ASSERT(rli->slave_running == 1); // tracking buffer overrun
|
||||
|
|
|
@ -949,7 +949,7 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd)
|
|||
goto err;
|
||||
}
|
||||
net_flush(&thd->net);
|
||||
if ((error = table->file->dump(thd,fd)))
|
||||
if ((error= table->file->dump(thd,fd)))
|
||||
my_error(ER_GET_ERRNO, MYF(0));
|
||||
|
||||
err:
|
||||
|
@ -1054,7 +1054,6 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||
tbl_name[tbl_len] = 0;
|
||||
if (mysql_table_dump(thd, db, tbl_name, -1))
|
||||
send_error(thd); // dump to NET
|
||||
|
||||
break;
|
||||
}
|
||||
case COM_CHANGE_USER:
|
||||
|
|
|
@ -164,7 +164,7 @@ static void client_connect()
|
|||
char buff[255];
|
||||
myheader("client_connect");
|
||||
|
||||
if(!(mysql = mysql_init(NULL)))
|
||||
if (!(mysql = mysql_init(NULL)))
|
||||
{
|
||||
myerror("mysql_init() failed");
|
||||
exit(0);
|
||||
|
|
Loading…
Reference in a new issue