Commit e6e25a56 authored by tim@black.box's avatar tim@black.box
Browse files

Add some examples for using libmysqld, including a hack for running the

mysql test suite.

A few minor libmysqld fixes.

Add mysql_server_init() and _end() to mysql.cc and mysqltest.c, so they
can be linked against libmysqlclient or libmysqld.
parent fa23b207
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -400,3 +400,4 @@ vio/test-sslclient
vio/test-sslserver
vio/viotest-ssl
tools/mysqlmanager
linked_libmysqldex_sources
+6 −1
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@ SUBDIRS = include @docs_dirs@ @readline_dir@ \
# Relink after clean
linked_sources = linked_client_sources linked_server_sources \
		 linked_libmysql_sources linked_libmysql_r_sources \
		 linked_libmysqld_sources linked_include_sources
		 linked_libmysqld_sources  linked_libmysqldex_sources \
		 linked_include_sources

CLEANFILES = $(linked_sources)

@@ -56,6 +57,10 @@ linked_libmysqld_sources:
	cd libmysqld; $(MAKE) link_sources
	echo timestamp > linked_libmysqld_sources

linked_libmysqldex_sources:
	cd libmysqld/examples; $(MAKE) link_sources
	echo timestamp > linked_libmysqldex_sources

#avoid recursive make calls in sql directory
linked_server_sources:
	cd sql; rm -f mini_client_errors.c;@LN_CP_F@ ../libmysql/errmsg.c mini_client_errors.c
+36 −36
Original line number Diff line number Diff line
@@ -1071,42 +1071,42 @@ AC_DEFUN([MYSQL_CHECK_INNODB], [
dnl Some libs are listed several times, in order for gcc to sort out
dnl circular references.
      innodb_libs="\
 ../innobase/usr/libusr.a\
 ../innobase/odbc/libodbc.a\
 ../innobase/srv/libsrv.a\
 ../innobase/que/libque.a\
 ../innobase/srv/libsrv.a\
 ../innobase/dict/libdict.a\
 ../innobase/ibuf/libibuf.a\
 ../innobase/row/librow.a\
 ../innobase/pars/libpars.a\
 ../innobase/btr/libbtr.a\
 ../innobase/trx/libtrx.a\
 ../innobase/read/libread.a\
 ../innobase/usr/libusr.a\
 ../innobase/buf/libbuf.a\
 ../innobase/ibuf/libibuf.a\
 ../innobase/eval/libeval.a\
 ../innobase/log/liblog.a\
 ../innobase/fsp/libfsp.a\
 ../innobase/fut/libfut.a\
 ../innobase/fil/libfil.a\
 ../innobase/lock/liblock.a\
 ../innobase/mtr/libmtr.a\
 ../innobase/page/libpage.a\
 ../innobase/rem/librem.a\
 ../innobase/thr/libthr.a\
 ../innobase/com/libcom.a\
 ../innobase/sync/libsync.a\
 ../innobase/data/libdata.a\
 ../innobase/mach/libmach.a\
 ../innobase/ha/libha.a\
 ../innobase/dyn/libdyn.a\
 ../innobase/mem/libmem.a\
 ../innobase/sync/libsync.a\
 ../innobase/ut/libut.a\
 ../innobase/os/libos.a\
 ../innobase/ut/libut.a"
 $(top_builddir)/innobase/usr/libusr.a\
 $(top_builddir)/innobase/odbc/libodbc.a\
 $(top_builddir)/innobase/srv/libsrv.a\
 $(top_builddir)/innobase/que/libque.a\
 $(top_builddir)/innobase/srv/libsrv.a\
 $(top_builddir)/innobase/dict/libdict.a\
 $(top_builddir)/innobase/ibuf/libibuf.a\
 $(top_builddir)/innobase/row/librow.a\
 $(top_builddir)/innobase/pars/libpars.a\
 $(top_builddir)/innobase/btr/libbtr.a\
 $(top_builddir)/innobase/trx/libtrx.a\
 $(top_builddir)/innobase/read/libread.a\
 $(top_builddir)/innobase/usr/libusr.a\
 $(top_builddir)/innobase/buf/libbuf.a\
 $(top_builddir)/innobase/ibuf/libibuf.a\
 $(top_builddir)/innobase/eval/libeval.a\
 $(top_builddir)/innobase/log/liblog.a\
 $(top_builddir)/innobase/fsp/libfsp.a\
 $(top_builddir)/innobase/fut/libfut.a\
 $(top_builddir)/innobase/fil/libfil.a\
 $(top_builddir)/innobase/lock/liblock.a\
 $(top_builddir)/innobase/mtr/libmtr.a\
 $(top_builddir)/innobase/page/libpage.a\
 $(top_builddir)/innobase/rem/librem.a\
 $(top_builddir)/innobase/thr/libthr.a\
 $(top_builddir)/innobase/com/libcom.a\
 $(top_builddir)/innobase/sync/libsync.a\
 $(top_builddir)/innobase/data/libdata.a\
 $(top_builddir)/innobase/mach/libmach.a\
 $(top_builddir)/innobase/ha/libha.a\
 $(top_builddir)/innobase/dyn/libdyn.a\
 $(top_builddir)/innobase/mem/libmem.a\
 $(top_builddir)/innobase/sync/libsync.a\
 $(top_builddir)/innobase/ut/libut.a\
 $(top_builddir)/innobase/os/libos.a\
 $(top_builddir)/innobase/ut/libut.a"

      AC_CHECK_LIB(rt, aio_read, [innodb_libs="$innodb_libs -lrt"])
      ;;
+9 −0
Original line number Diff line number Diff line
@@ -248,6 +248,7 @@ static COMMANDS commands[] = {
};

static const char *load_default_groups[]= { "mysql","client",0 };
static const char *server_default_groups[]= { "server", "mysql_SERVER", 0 };

#ifdef HAVE_READLINE
extern "C" void add_history(char *command); /* From readline directory */
@@ -275,6 +276,7 @@ int main(int argc,char *argv[])
{
  char buff[80];

  mysql_server_init(0, NULL, server_default_groups);
  MY_INIT(argv[0]);
  DBUG_ENTER("main");
  DBUG_PROCESS(argv[0]);
@@ -368,6 +370,7 @@ int main(int argc,char *argv[])
  if (opt_outfile)
    end_tee();
  mysql_end(0);
  mysql_server_end();
#ifndef _lint
  DBUG_RETURN(0);				// Keep compiler happy
#endif
@@ -377,9 +380,11 @@ sig_handler mysql_end(int sig)
{
  if (connected)
    mysql_close(&mysql);
#ifdef HAVE_OPENSSL
  else
    mysql_ssl_clear(&mysql); /* SSL data structres should be freed 
				even if connection was not made */
#endif
#ifdef HAVE_READLINE
  if (!status.batch && !quick && !opt_html && !opt_xml)
  {
@@ -2217,9 +2222,11 @@ sql_real_connect(char *host,char *database,char *user,char *password,
    mysql_close(&mysql);
    connected= 0;
  }
#ifdef HAVE_OPENSSL
  else
    mysql_ssl_clear(&mysql); /* SSL data structres should be freed 
				even if connection was not made */
#endif
  mysql_init(&mysql);
  if (opt_connect_timeout)
  {
@@ -2571,6 +2578,7 @@ static void mysql_end_timer(ulong start_time,char *buff)
  strmov(strend(buff),")");
}

#ifndef EMBEDDED_SERVER
/* Keep sql_string library happy */

gptr sql_alloc(unsigned int Size)
@@ -2582,3 +2590,4 @@ void sql_element_free(void *ptr)
{
  my_free((gptr) ptr,MYF(0));
}
#endif /* EMBEDDED_SERVER */
+15 −0
Original line number Diff line number Diff line
@@ -1931,12 +1931,26 @@ static void init_var_hash()
  var_from_env("BIG_TEST", opt_big_test ? "1" : "0");
}

static const char *embedded_server_args[] = {
  "",	/* XXX: argv[0] is program name - we should fix the API */
  "--datadir=.",
  "--language=/home/tim/my/4/sql/share/english",
  "--skip-innodb",
  NullS
};
static const char *embedded_server_groups[] = {
  "mysql-test-server",
  NullS
};

int main(int argc, char** argv)
{
  int error = 0;
  struct st_query* q;
  my_bool require_file=0, q_send_flag=0;
  char save_file[FN_REFLEN];
  mysql_server_init(sizeof(embedded_server_args) / sizeof(char *) - 1,
		    embedded_server_args, embedded_server_groups);
  MY_INIT(argv[0]);

  save_file[0]=0;
@@ -2100,6 +2114,7 @@ int main(int argc, char** argv)
      printf("ok\n");
  }

  mysql_server_end();
  free_used_memory();
  exit(error ? 1 : 0);
  return error ? 1 : 0;				/* Keep compiler happy */
Loading