summaryrefslogtreecommitdiff
path: root/libmysqld
diff options
context:
space:
mode:
authorunknown <pem@mysql.com>2004-05-26 17:04:45 +0200
committerunknown <pem@mysql.com>2004-05-26 17:04:45 +0200
commitf8866c162b57fa102298dbfc9e49d4f72f16c1d7 (patch)
treee4e5bb1f8b9718ec195b357c050b3dc3254b447d /libmysqld
parent556b51e12aa58c5a7894a6bd010c2cd59d6e0cc3 (diff)
parent3a675ff5f8ed659344d7540f811ca052d999407d (diff)
downloadmariadb-git-f8866c162b57fa102298dbfc9e49d4f72f16c1d7.tar.gz
Merging 4.1 to 5.0.
BitKeeper/etc/ignore: auto-union BitKeeper/etc/logging_ok: auto-union client/mysqltest.c: Auto merged configure.in: Auto merged include/my_sys.h: Auto merged include/mysql_com.h: Auto merged libmysql/libmysql.c: Auto merged libmysqld/Makefile.am: Auto merged libmysqld/lib_sql.cc: Auto merged myisam/mi_check.c: Auto merged myisam/myisamchk.c: Auto merged myisam/myisamdef.h: Auto merged mysql-test/r/func_group.result: Auto merged mysql-test/r/func_time.result: Auto merged mysql-test/r/null.result: Auto merged mysql-test/r/query_cache.result: Auto merged mysql-test/r/rpl_server_id2.result: Auto merged mysql-test/r/select.result: Auto merged mysql-test/r/subselect.result: Auto merged mysql-test/r/variables.result: Auto merged mysql-test/t/rpl000015.test: Auto merged mysql-test/t/rpl_error_ignored_table.test: Auto merged mysql-test/t/rpl_log.test: Auto merged mysql-test/t/rpl_log_pos.test: Auto merged mysql-test/t/rpl_max_relay_size.test: Auto merged mysql-test/t/rpl_relayrotate.test: Auto merged mysql-test/t/rpl_rotate_logs.test: Auto merged mysql-test/t/rpl_server_id2.test: Auto merged mysql-test/t/subselect.test: Auto merged mysql-test/t/variables.test: Auto merged mysys/my_pthread.c: Auto merged netware/BUILD/compile-netware-all: Auto merged netware/BUILD/compile-netware-standard: Auto merged netware/BUILD/mwenv: Auto merged netware/Makefile.am: Auto merged netware/my_manage.c: Auto merged netware/my_manage.h: Auto merged netware/mysql_test_run.c: Auto merged scripts/mysql_install_db.sh: Auto merged sql/Makefile.am: Auto merged sql/ha_berkeley.cc: Auto merged sql/ha_berkeley.h: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_innodb.h: Auto merged sql/ha_myisam.cc: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_func.cc: Auto merged sql/item_subselect.cc: Auto merged sql/item_subselect.h: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/item_timefunc.cc: Auto merged sql/lock.cc: Auto merged sql/mysql_priv.h: Auto merged sql/opt_range.cc: Auto merged sql/protocol.cc: Auto merged sql/protocol.h: Auto merged sql/repl_failsafe.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_db.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_show.cc: Auto merged sql/sql_string.cc: Auto merged sql/sql_string.h: Auto merged sql/sql_table.cc: Auto merged sql/sql_union.cc: Auto merged sql/sql_yacc.yy: Auto merged tests/client_test.c: Auto merged
Diffstat (limited to 'libmysqld')
-rw-r--r--libmysqld/Makefile.am43
-rw-r--r--libmysqld/emb_qcache.cc6
-rw-r--r--libmysqld/embedded_priv.h1
-rw-r--r--libmysqld/examples/Makefile.am11
-rw-r--r--libmysqld/lib_sql.cc38
-rw-r--r--libmysqld/libmysqld.c1
-rw-r--r--libmysqld/libmysqld.def2
7 files changed, 66 insertions, 36 deletions
diff --git a/libmysqld/Makefile.am b/libmysqld/Makefile.am
index 036a61208ed..29e88eb41f2 100644
--- a/libmysqld/Makefile.am
+++ b/libmysqld/Makefile.am
@@ -48,7 +48,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
key.cc lock.cc log.cc log_event.cc sql_state.c \
protocol.cc net_serv.cc opt_range.cc \
opt_sum.cc procedure.cc records.cc sql_acl.cc \
- sql_load.cc sql_olap.cc discover.cc \
+ sql_load.cc discover.cc \
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc \
@@ -79,25 +79,32 @@ INC_LIB= $(top_builddir)/regex/libregex.a \
$(top_builddir)/vio/libvio.a
#
-# To make it easy for the end user to use the embedded library we
-# generate a total libmysqld.a from all library files,
+# To make it easy for the end user to use the embedded library we
+# generate a total libmysqld.a from all library files,
libmysqld.a: libmysqld_int.a $(INC_LIB)
- if test ! -d tmp ; then mkdir tmp ; fi
- rm -f $@ libmysqld_int2.a tmp/*.o tmp/*.a
- cp $(INC_LIB) tmp
- cp libmysqld_int.a libmysqld_int2.a ; \
- cd tmp ; \
- for file in *.a ; do \
- bfile=`basename $$file .a` ; \
- $(AR) x $$file; \
- for obj in *.o ; do mv $$obj $${bfile}_$$obj ; done ; \
- $(AR) q ../libmysqld_int2.a *.o ; \
- rm -f *.o ; \
- done
- mv libmysqld_int2.a libmysqld.a
- rm -f tmp/*
- $(RANLIB) libmysqld.a
+ if test "$(host_os)" = "netware" ; \
+ then \
+ $(libmysqld_a_AR) libmysqld.a libmysqld_int.a $(INC_LIB) ; \
+ else \
+ if test ! -d tmp ; then mkdir tmp ; fi ; \
+ rm -f $@ libmysqld_int2.a tmp/*.o tmp/*.a ; \
+ cp $(INC_LIB) tmp ; \
+ cp libmysqld_int.a libmysqld_int2.a ; \
+ cd tmp ; \
+ for file in *.a ; do \
+ bfile=`basename $$file .a` ; \
+ $(AR) x $$file; \
+ for obj in *.o ; do mv $$obj $${bfile}_$$obj ; done ; \
+ $(AR) q ../libmysqld_int2.a *.o ; \
+ rm -f *.o ; \
+ done ; \
+ cd .. ; \
+ mv libmysqld_int2.a libmysqld.a ; \
+ rm -f tmp/* ; \
+ $(RANLIB) libmysqld.a ; \
+ fi
+
## XXX: any time the client interface changes, we'll need to bump
## the version info for libmysqld; however, it's possible for the
diff --git a/libmysqld/emb_qcache.cc b/libmysqld/emb_qcache.cc
index 0b6416632b7..7d83023abd5 100644
--- a/libmysqld/emb_qcache.cc
+++ b/libmysqld/emb_qcache.cc
@@ -295,7 +295,7 @@ uint emb_count_querycache_size(THD *thd)
cur_row= thd->data->data;
n_rows= thd->data->rows;
}
- result= 4+8 + (42 + 4*n_rows)*mysql->field_count;
+ result= (uint) (4+8 + (42 + 4*n_rows)*mysql->field_count);
for(; field < field_end; field++)
{
@@ -414,8 +414,8 @@ int emb_load_querycache_result(THD *thd, Querycache_stream *src)
goto err;
thd->data= data;
init_alloc_root(&data->alloc, 8192,0);
- row= (MYSQL_ROWS *)alloc_root(&data->alloc, rows * sizeof(MYSQL_ROWS) +
- rows * (mysql->field_count+1)*sizeof(char*));
+ row= (MYSQL_ROWS *)alloc_root(&data->alloc, (uint) (rows * sizeof(MYSQL_ROWS) +
+ rows * (mysql->field_count+1)*sizeof(char*)));
end_row= row + rows;
columns= (MYSQL_ROW)end_row;
diff --git a/libmysqld/embedded_priv.h b/libmysqld/embedded_priv.h
index 1608f4ed4ad..d4316dff63f 100644
--- a/libmysqld/embedded_priv.h
+++ b/libmysqld/embedded_priv.h
@@ -28,5 +28,6 @@ void init_embedded_mysql(MYSQL *mysql, int client_flag, char *db);
void *create_embedded_thd(int client_flag, char *db);
int check_embedded_connection(MYSQL *mysql);
void free_old_query(MYSQL *mysql);
+void embedded_get_error(MYSQL *mysql);
extern MYSQL_METHODS embedded_methods;
C_MODE_END
diff --git a/libmysqld/examples/Makefile.am b/libmysqld/examples/Makefile.am
index fe56926039d..b3db54d305a 100644
--- a/libmysqld/examples/Makefile.am
+++ b/libmysqld/examples/Makefile.am
@@ -1,11 +1,16 @@
-noinst_PROGRAMS = mysqltest mysql
+noinst_PROGRAMS = mysqltest mysql client_test
client_sources = $(mysqltest_SOURCES) $(mysql_SOURCES)
+tests_sources= $(client_test_SOURCES)
link_sources:
for f in $(client_sources); do \
rm -f $(srcdir)/$$f; \
@LN_CP_F@ $(srcdir)/../../client/$$f $(srcdir)/$$f; \
done;
+ for f in $(tests_sources); do \
+ rm -f $(srcdir)/$$f; \
+ @LN_CP_F@ $(srcdir)/../../tests/$$f $(srcdir)/$$f; \
+ done;
DEFS = -DEMBEDDED_LIBRARY
INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include -I$(srcdir) \
@@ -21,8 +26,12 @@ mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \
my_readline.h sql_string.h completion_hash.h
mysql_LDADD = @readline_link@ @TERMCAP_LIB@ $(LDADD)
+client_test_LINK = $(CXXLINK)
+client_test_SOURCES = client_test.c
+
clean:
rm -f $(client_sources)
+ rm -f $(tests_sources)
# Don't update the files from bitkeeper
%::SCCS/s.%
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index cfb50d3907a..2bbca220db9 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -42,6 +42,22 @@ C_MODE_START
#include "errmsg.h"
#include <sql_common.h>
+void embedded_get_error(MYSQL *mysql)
+{
+ THD *thd=(THD *) mysql->thd;
+ NET *net= &mysql->net;
+ if ((net->last_errno= thd->net.last_errno))
+ {
+ memcpy(net->last_error, thd->net.last_error, sizeof(net->last_error));
+ memcpy(net->sqlstate, thd->net.sqlstate, sizeof(net->sqlstate));
+ }
+ else
+ {
+ net->last_error[0]= 0;
+ strmov(net->sqlstate, not_error_sqlstate);
+ }
+}
+
static my_bool
emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
const char *header, ulong header_length,
@@ -86,16 +102,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
if (!skip_check)
result= thd->net.last_errno ? -1 : 0;
- if ((net->last_errno= thd->net.last_errno))
- {
- memcpy(net->last_error, thd->net.last_error, sizeof(net->last_error));
- memcpy(net->sqlstate, thd->net.sqlstate, sizeof(net->sqlstate));
- }
- else
- {
- net->last_error[0]= 0;
- strmov(net->sqlstate, not_error_sqlstate);
- }
+ embedded_get_error(mysql);
mysql->server_status= thd->server_status;
mysql->warning_count= ((THD*)mysql->thd)->total_warn_count;
return result;
@@ -197,6 +204,8 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
DBUG_RETURN(1);
}
+ stmt->affected_rows= stmt->mysql->affected_rows;
+ stmt->insert_id= stmt->mysql->insert_id;
DBUG_RETURN(0);
}
@@ -237,6 +246,7 @@ static void emb_free_embedded_thd(MYSQL *mysql)
free_rows(thd->data);
thread_count--;
delete thd;
+ mysql->thd=0;
}
static const char * emb_read_statistics(MYSQL *mysql)
@@ -496,8 +506,7 @@ int check_embedded_connection(MYSQL *mysql)
thd->host= (char*)my_localhost;
thd->host_or_ip= thd->host;
thd->user= my_strdup(mysql->user, MYF(0));
- check_user(thd, COM_CONNECT, NULL, 0, thd->db, true);
- return 0;
+ return check_user(thd, COM_CONNECT, NULL, 0, thd->db, true);
}
#else
@@ -605,13 +614,14 @@ bool Protocol::send_fields(List<Item> *list, uint flag)
if (!(res=item->val_str(&tmp)))
{
- client_field->def= strdup_root(field_alloc, "");
client_field->def_length= 0;
+ client_field->def= strmake_root(field_alloc, "",0);
}
else
{
- client_field->def= strdup_root(field_alloc, res->ptr());
client_field->def_length= res->length();
+ client_field->def= strmake_root(field_alloc, res->ptr(),
+ client_field->def_length);
}
}
else
diff --git a/libmysqld/libmysqld.c b/libmysqld/libmysqld.c
index 95f745aef5f..db9e828369d 100644
--- a/libmysqld/libmysqld.c
+++ b/libmysqld/libmysqld.c
@@ -232,6 +232,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
DBUG_RETURN(mysql);
error:
+ embedded_get_error(mysql);
DBUG_PRINT("error",("message: %u (%s)", mysql->net.last_errno,
mysql->net.last_error));
{
diff --git a/libmysqld/libmysqld.def b/libmysqld/libmysqld.def
index c3f757b5f1a..8b2ad8379d6 100644
--- a/libmysqld/libmysqld.def
+++ b/libmysqld/libmysqld.def
@@ -128,3 +128,5 @@ EXPORTS
alloc_root
free_root
my_read
+ max_allowed_packet
+ llstr