Merge xiphis.org:/home/antony/work2/wl3201.3

into  xiphis.org:/home/antony/work2/wl3201.merge
This commit is contained in:
acurtis@xiphis.org 2006-04-24 13:36:15 -07:00
commit 53d4594cfe
56 changed files with 1490 additions and 748 deletions

View File

@ -147,18 +147,9 @@ static_link="$static_link --with-client-ldflags=-all-static"
local_infile_configs="--enable-local-infile"
max_configs="--with-innodb --with-berkeley-db"
max_configs="$max_configs --with-archive-storage-engine"
max_configs="$max_configs --with-big-tables"
max_configs="$max_configs --with-blackhole-storage-engine"
max_configs="$max_configs --with-federated-storage-engine"
max_configs="$max_configs --with-csv-storage-engine"
max_configs="$max_configs --with-example-storage-engine"
max_configs="$max_configs --with-partition $SSL_LIBRARY"
max_no_embedded_configs="$max_configs --with-ndbcluster"
max_no_ndb_configs="$max_configs --without-ndbcluster --with-embedded-server"
max_configs="$max_configs --with-ndbcluster --with-embedded-server"
max_no_embedded_configs="$SSL_LIBRARY --with-modules=max"
max_no_ndb_configs="$SSL_LIBRARY --with-modules=max-no-ndb --with-embedded-server"
max_configs="$SSL_LIBRARY --with-modules=max --with-embedded-server"
#
# CPU and platform specific compilation flags.

View File

@ -26,7 +26,6 @@ SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
@thread_dirs@ pstack \
@sql_union_dirs@ storage \
@sql_server@ scripts @man_dirs@ tests \
@mysql_se_plugins@ \
netware @libmysqld_dirs@ \
mysql-test support-files @tools_dirs@ \
plugin unittest win

View File

@ -9,56 +9,53 @@ SET(WITH_CSV_STORAGE_ENGINE TRUE)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
SET(WITH_HEAP_STORAGE_ENGINE TRUE)
ADD_DEFINITIONS(-D WITH_HEAP_STORAGE_ENGINE)
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
SET(WITH_MYISAM_STORAGE_ENGINE TRUE)
ADD_DEFINITIONS(-D WITH_MYISAM_STORAGE_ENGINE)
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisam_plugin")
SET(WITH_MYISAMMRG_STORAGE_ENGINE TRUE)
ADD_DEFINITIONS(-D WITH_MYISAMMRG_STORAGE_ENGINE)
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisammrg_plugin")
IF(WITH_ARCHIVE_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_ARCHIVE_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &archive_hton")
SET (mysql_se_decls "${mysql_se_decls}, archive_hton")
SET (mysql_se_ha_src ${mysql_se_ha_src} "../sql/ha_archive.cc")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_archive_plugin")
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_BLACKHOLE_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &blackhole_hton")
SET (mysql_se_decls "${mysql_se_decls}, blackhole_hton")
SET (mysql_se_ha_src ${mysql_se_ha_src} "../sql/ha_blackhole.cc")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_blackhole_plugin")
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
IF(WITH_CSV_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_CSV_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &tina_hton")
SET (mysql_se_decls "${mysql_se_decls}, tina_hton")
SET (mysql_se_ha_src ${mysql_se_ha_src} "../storage/csv/ha_tina.cc")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_csv_plugin")
ENDIF(WITH_CSV_STORAGE_ENGINE)
IF(WITH_EXAMPLE_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_EXAMPLE_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &example_hton")
SET (mysql_se_decls "${mysql_se_decls}, example_hton")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_example_plugin")
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
IF(WITH_INNOBASE_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_INNOBASE_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &innobase_hton")
SET (mysql_se_decls "${mysql_se_decls}, innobase_hton")
SET (mysql_se_ha_src ${mysql_se_ha_src} "../sql/ha_innodb.cc")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_innobase_plugin")
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
IF(WITH_PARTITION_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_PARTITION_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &partition_hton")
SET (mysql_se_decls "${mysql_se_decls}, partition_hton")
SET (mysql_se_ha_src ${mysql_se_ha_src} "../sql/ha_partition.cc")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
ENDIF(WITH_PARTITION_STORAGE_ENGINE)
IF(WITH_FEDERATED_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_FEDERATED_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &federated_hton")
SET (mysql_se_decls "${mysql_se_decls}, federated_hton")
SET (mysql_se_ha_src ${mysql_se_ha_src} "../sql/ha_federated.cc")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_federated_plugin")
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
IF(WITH_BERKELEY_STORAGE_ENGINE)
ADD_DEFINITIONS(-D WITH_BERKELEY_STORAGE_ENGINE)
SET (mysql_se_htons "${mysql_se_htons}, &berkeley_hton")
SET (mysql_se_decls "${mysql_se_decls}, berkeley_hton")
SET (mysql_se_ha_src ${mysql_se_ha_src} "../sql/ha_berkeley.cc")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_berkeley_plugin")
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/handlerton.cc.in
${CMAKE_SOURCE_DIR}/sql/handlerton.cc @ONLY)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc @ONLY)
SET(localstatedir "C:\\mysql\\data")
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
@ -137,6 +134,12 @@ ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
IF(WITH_BERKELEY_STORAGE_ENGINE)
ADD_SUBDIRECTORY(storage/bdb)
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
ADD_SUBDIRECTORY(storage/blackhole)
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
IF(WITH_CSV_STORAGE_ENGINE)
ADD_SUBDIRECTORY(storage/csv)
ENDIF(WITH_CSV_STORAGE_ENGINE)
IF(WITH_EXAMPLE_STORAGE_ENGINE)
ADD_SUBDIRECTORY(storage/example)
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)

View File

@ -1,29 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CHECK_ARCHIVEDB
dnl Sets HAVE_ARCHIVE_DB if --with-archive-storage-engine is used
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CHECK_ARCHIVEDB], [
AC_ARG_WITH([archive-storage-engine],
[
--with-archive-storage-engine
Enable the Archive Storage Engine],
[archivedb="$withval"],
[archivedb=no])
AC_MSG_CHECKING([for archive storage engine])
case "$archivedb" in
yes )
AC_DEFINE([HAVE_ARCHIVE_DB], [1], [Builds Archive Storage Engine])
AC_MSG_RESULT([yes])
[archivedb=yes]
;;
* )
AC_MSG_RESULT([no])
[archivedb=no]
;;
esac
])
dnl ---------------------------------------------------------------------------
dnl END OF MYSQL_CHECK_ARCHIVE SECTION
dnl ---------------------------------------------------------------------------

View File

@ -120,12 +120,9 @@ AC_DEFUN([MYSQL_SETUP_BERKELEY_DB], [
sh $rel_srcdir/$bdb/dist/configure $bdb_conf_flags) || \
AC_MSG_ERROR([could not configure Berkeley DB])
mysql_se_libs="$mysql_se_libs $bdb_libs_with_path"
AC_SUBST(bdb_includes)
AC_SUBST(bdb_libs)
AC_SUBST(bdb_libs_with_path)
AC_CONFIG_FILES(storage/bdb/Makefile)
])
AC_DEFUN([MYSQL_CHECK_INSTALLED_BDB], [

View File

@ -1,29 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CHECK_BLACKHOLEDB
dnl Sets HAVE_BLACKHOLE_DB if --with-blackhole-storage-engine is used
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CHECK_BLACKHOLEDB], [
AC_ARG_WITH([blackhole-storage-engine],
[
--with-blackhole-storage-engine
Enable the Blackhole Storage Engine],
[blackholedb="$withval"],
[blackholedb=no])
AC_MSG_CHECKING([for blackhole storage engine])
case "$blackholedb" in
yes )
AC_DEFINE([HAVE_BLACKHOLE_DB], [1], [Builds Blackhole Storage Engine])
AC_MSG_RESULT([yes])
[blackholedb=yes]
;;
* )
AC_MSG_RESULT([no])
[blackholedb=no]
;;
esac
])
dnl ---------------------------------------------------------------------------
dnl END OF MYSQL_CHECK_BLACKHOLE SECTION
dnl ---------------------------------------------------------------------------

View File

@ -1,30 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CHECK_EXAMPLEDB
dnl Sets HAVE_EXAMPLE_DB if --with-example-storage-engine is used
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CHECK_EXAMPLEDB], [
AC_ARG_WITH([example-storage-engine],
[
--with-example-storage-engine
Enable the Example Storage Engine],
[exampledb="$withval"],
[exampledb=no])
AC_MSG_CHECKING([for example storage engine])
case "$exampledb" in
yes )
AC_DEFINE([HAVE_EXAMPLE_DB], [1], [Builds Example DB])
AC_MSG_RESULT([yes])
[exampledb=yes]
;;
* )
AC_MSG_RESULT([no])
[exampledb=no]
;;
esac
])
dnl ---------------------------------------------------------------------------
dnl END OF MYSQL_CHECK_EXAMPLE SECTION
dnl ---------------------------------------------------------------------------

View File

@ -1,29 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CHECK_FEDERATED
dnl Sets HAVE_FEDERATED if --with-federated-storage-engine is used
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CHECK_FEDERATED], [
AC_ARG_WITH([federated-storage-engine],
[
--with-federated-storage-engine
Enable the MySQL Federated Storage Engine],
[federateddb="$withval"],
[federateddb=no])
AC_MSG_CHECKING([for MySQL federated storage engine])
case "$federateddb" in
yes )
AC_DEFINE([HAVE_FEDERATED_DB], [1], [Define to enable Federated Handler])
AC_MSG_RESULT([yes])
[federateddb=yes]
;;
* )
AC_MSG_RESULT([no])
[federateddb=no]
;;
esac
])
dnl ---------------------------------------------------------------------------
dnl END OF MYSQL_CHECK_FEDERATED SECTION
dnl ---------------------------------------------------------------------------

View File

@ -1,77 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CHECK_INNODB
dnl Sets HAVE_INNOBASE_DB if --with-innodb is used
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CHECK_INNODB], [
AC_ARG_WITH([innodb],
[
--without-innodb Do not include the InnoDB table handler],
[innodb="$withval"],
[innodb=yes])
AC_MSG_CHECKING([for Innodb])
have_innodb=no
innodb_includes=
innodb_libs=
case "$innodb" in
yes )
AC_MSG_RESULT([Using Innodb])
AC_DEFINE([HAVE_INNOBASE_DB], [1], [Using Innobase DB])
have_innodb="yes"
innodb_includes="-I\$(top_builddir)/innobase/include"
innodb_system_libs=""
dnl Some libs are listed several times, in order for gcc to sort out
dnl circular references.
innodb_libs="\
\$(top_builddir)/storage/innobase/usr/libusr.a\
\$(top_builddir)/storage/innobase/srv/libsrv.a\
\$(top_builddir)/storage/innobase/dict/libdict.a\
\$(top_builddir)/storage/innobase/que/libque.a\
\$(top_builddir)/storage/innobase/srv/libsrv.a\
\$(top_builddir)/storage/innobase/ibuf/libibuf.a\
\$(top_builddir)/storage/innobase/row/librow.a\
\$(top_builddir)/storage/innobase/pars/libpars.a\
\$(top_builddir)/storage/innobase/btr/libbtr.a\
\$(top_builddir)/storage/innobase/trx/libtrx.a\
\$(top_builddir)/storage/innobase/read/libread.a\
\$(top_builddir)/storage/innobase/usr/libusr.a\
\$(top_builddir)/storage/innobase/buf/libbuf.a\
\$(top_builddir)/storage/innobase/ibuf/libibuf.a\
\$(top_builddir)/storage/innobase/eval/libeval.a\
\$(top_builddir)/storage/innobase/log/liblog.a\
\$(top_builddir)/storage/innobase/fsp/libfsp.a\
\$(top_builddir)/storage/innobase/fut/libfut.a\
\$(top_builddir)/storage/innobase/fil/libfil.a\
\$(top_builddir)/storage/innobase/lock/liblock.a\
\$(top_builddir)/storage/innobase/mtr/libmtr.a\
\$(top_builddir)/storage/innobase/page/libpage.a\
\$(top_builddir)/storage/innobase/rem/librem.a\
\$(top_builddir)/storage/innobase/thr/libthr.a\
\$(top_builddir)/storage/innobase/sync/libsync.a\
\$(top_builddir)/storage/innobase/data/libdata.a\
\$(top_builddir)/storage/innobase/mach/libmach.a\
\$(top_builddir)/storage/innobase/ha/libha.a\
\$(top_builddir)/storage/innobase/dyn/libdyn.a\
\$(top_builddir)/storage/innobase/mem/libmem.a\
\$(top_builddir)/storage/innobase/sync/libsync.a\
\$(top_builddir)/storage/innobase/ut/libut.a\
\$(top_builddir)/storage/innobase/os/libos.a\
\$(top_builddir)/storage/innobase/ut/libut.a"
AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"])
;;
* )
AC_MSG_RESULT([Not using Innodb])
;;
esac
AC_SUBST(innodb_includes)
AC_SUBST(innodb_libs)
AC_SUBST(innodb_system_libs)
])
dnl ---------------------------------------------------------------------------
dnl END OF MYSQL_CHECK_INNODB SECTION
dnl ---------------------------------------------------------------------------

View File

@ -191,7 +191,6 @@ AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [
ndbcluster_libs="\$(top_builddir)/storage/ndb/src/.libs/libndbclient.a"
ndbcluster_system_libs=""
ndb_mgmclient_libs="\$(top_builddir)/storage/ndb/src/mgmclient/libndbmgmclient.la"
mysql_se_objs="$mysql_se_objs ha_ndbcluster_binlog.o"
MYSQL_CHECK_NDB_OPTIONS
NDBCLUSTER_WORKAROUNDS
@ -282,9 +281,6 @@ AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [
ndb_bin_am_ldflags=""
fi
mysql_se_libs="$mysql_se_libs $ndbcluster_libs $ndbcluster_system_libs"
mysql_se_libs="$mysql_se_libs $NDB_SCI_LIBS"
AC_SUBST(NDB_VERSION_MAJOR)
AC_SUBST(NDB_VERSION_MINOR)
AC_SUBST(NDB_VERSION_BUILD)
@ -302,6 +298,7 @@ AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [
AC_SUBST(ndbcluster_libs)
AC_SUBST(ndbcluster_system_libs)
AC_SUBST(ndb_mgmclient_libs)
AC_SUBST(NDB_SCI_LIBS)
AC_SUBST(ndb_transporter_opt_objs)
AC_SUBST(ndb_port)

View File

@ -1,33 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CHECK_PARTITIONDB
dnl Sets HAVE_PARTITION_DB if --with-partition is used
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CHECK_PARTITIONDB], [
AC_ARG_WITH([partition],
[
--with-partition
Enable the Partition Storage Engine],
[partitiondb="$withval"],
[partitiondb=no])
AC_MSG_CHECKING([for partition])
dnl case "$partitiondb" in
dnl yes )
dnl AC_DEFINE([HAVE_PARTITION_DB], [1], [Builds Partition DB])
dnl AC_MSG_RESULT([yes])
dnl [partitiondb=yes]
dnl ;;
dnl * )
dnl AC_MSG_RESULT([no])
dnl [partitiondb=no]
dnl ;;
dnl esac
AC_DEFINE([HAVE_PARTITION_DB], [1], [Builds Partition DB])
AC_MSG_RESULT([yes])
[partitiondb=yes]
])
dnl ---------------------------------------------------------------------------
dnl END OF MYSQL_CHECK_PARTITION SECTION
dnl ---------------------------------------------------------------------------

View File

@ -1,29 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CHECK_CSVDB
dnl Sets HAVE_CSV_DB if --with-csv-storage-engine is used
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CHECK_CSVDB], [
AC_ARG_WITH([csv-storage-engine],
[
--with-csv-storage-engine
Enable the CSV Storage Engine],
[csvdb="$withval"],
[csvdb=no])
AC_MSG_CHECKING([for csv storage engine])
case "$csvdb" in
yes )
AC_DEFINE([HAVE_CSV_DB], [1], [Builds the CSV Storage Engine])
AC_MSG_RESULT([yes])
[csvdb=yes]
;;
* )
AC_MSG_RESULT([no])
[csvdb=no]
;;
esac
])
dnl ---------------------------------------------------------------------------
dnl END OF MYSQL_CHECK_CSV SECTION
dnl ---------------------------------------------------------------------------

665
config/ac-macros/plugins.m4 Normal file
View File

@ -0,0 +1,665 @@
dnl ===========================================================================
dnl Support for plugable mysql server modules
dnl ===========================================================================
dnl
dnl WorkLog#3201
dnl
dnl Framework for pluggable static and dynamic modules for mysql
dnl
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE
dnl
dnl Syntax:
dnl MYSQL_MODULE([name],[Plugin module name],
dnl [Plugin module description],
dnl [group,group...])
dnl
dnl What it does:
dnl First declaration for a plugin module (mandatory).
dnl Adds module as member to configuration groups (if specified)
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE],[ dnl
_MYSQL_MODULE(
[$1],
[__MYSQL_MODULE_]AS_TR_CPP([$1])[__],
m4_default([$2], [$1 plugin]),
m4_default([$3], [plugin for $1]),
m4_default([$4], []),
) dnl
])
AC_DEFUN([_MYSQL_MODULE],[ dnl
m4_ifdef([$2], [ dnl
AC_FATAL([[Duplicate MYSQL_MODULE declaration for ]][$3]) dnl
],[ dnl
m4_define([$2], [$1]) dnl
_MYSQL_PLUGAPPEND([__mysql_plugin_list__],[$1]) dnl
m4_define([MYSQL_MODULE_NAME_]AS_TR_CPP([$1]), [$3]) dnl
m4_define([MYSQL_MODULE_DESC_]AS_TR_CPP([$1]), [$4]) dnl
ifelse([$5], [], [], [ dnl
_MYSQL_PLUGAPPEND_OPTS([$1], $5) dnl
]) dnl
]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_STORAGE_ENGINE
dnl
dnl What it does:
dnl Short cut for storage engine declarations
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_STORAGE_ENGINE],[ dnl
MYSQL_MODULE([$1], [$3], [$4], [[$5]]) dnl
MYSQL_MODULE_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE]) dnl
ifelse([$2],[no],[],[ dnl
_MYSQL_LEGACY_STORAGE_ENGINE([$1],m4_default([$2], [$1-storage-engine])) dnl
]) dnl
])
AC_DEFUN([_MYSQL_LEGACY_STORAGE_ENGINE],[
if test "[${with_]m4_bpatsubst($2, -, _)[+set}]" = set; then
[with_module_]m4_bpatsubst($1, -, _)="[$with_]m4_bpatsubst($2, -, _)"
fi dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_DEFINE
dnl
dnl What it does:
dnl When a plugin module is to be statically linked, define the C macro
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_DEFINE],[ dnl
REQUIRE_PLUGIN([$1]) dnl
m4_define([MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]), [$2]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_DIRECTORY
dnl
dnl What it does:
dnl Adds a directory to the build process
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_DIRECTORY],[ dnl
REQUIRE_PLUGIN([$1]) dnl
m4_define([MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]), [$2]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_STATIC
dnl
dnl What it does:
dnl Declare the name for the static library
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_STATIC],[ dnl
REQUIRE_PLUGIN([$1]) dnl
m4_define([MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]), [$2]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_DYNAMIC
dnl
dnl What it does:
dnl Declare the name for the shared library
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_DYNAMIC],[ dnl
REQUIRE_PLUGIN([$1]) dnl
m4_define([MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]), [$2]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_MANDATORY
dnl
dnl What it does:
dnl Marks the specified plugin as a mandatory module
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_MANDATORY],[ dnl
REQUIRE_PLUGIN([$1]) dnl
_MYSQL_MODULE_MANDATORY([$1],
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1])
) dnl
])
AC_DEFUN([_MYSQL_MODULE_MANDATORY],[ dnl
m4_define([$2], [yes]) dnl
m4_ifdef([$3], [ dnl
AC_WARNING([syntax],[Mandatory plugin $1 has been disabled]) dnl
m4_undefine([$2]) dnl
]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_DISABLED
dnl
dnl What it does:
dnl Marks the specified plugin as a disabled module
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_DISABLED],[ dnl
REQUIRE_PLUGIN([$1]) dnl
_MYSQL_MODULE_DISABLED([$1],
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1])
) dnl
])
AC_DEFUN([_MYSQL_MODULE_DISABLED],[ dnl
m4_define([$2], [yes]) dnl
m4_ifdef([$3], [ dnl
AC_FATAL([attempt to disable mandatory plugin $1]) dnl
m4_undefine([$2]) dnl
]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_DEPENDS
dnl
dnl What it does:
dnl Enables other modules neccessary for this module
dnl Dependency checking is not recursive so if any
dnl required module requires further modules, list them
dnl here too!
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_DEPENDS],[ dnl
REQUIRE_PLUGIN([$1]) dnl
ifelse($#, 0, [], $#, 1, [ dnl
AC_FATAL([[bad number of arguments]]) dnl
], $#, 2, [ dnl
_MYSQL_MODULE_DEPEND([$1],[$2]) dnl
],[ dnl
_MYSQL_MODULE_DEPEND([$1],[$2]) dnl
MYSQL_MODULE_DEPENDS([$1], m4_shift(m4_shift($@))) dnl
])
])
AC_DEFUN([_MYSQL_MODULE_DEPEND],[ dnl
REQUIRE_PLUGIN([$2]) dnl
_MYSQL_PLUGAPPEND([__mysql_plugdepends_$1__],[$2]) dnl
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_MODULE_ACTIONS
dnl
dnl What it does:
dnl Declares additional actions required to configure the module
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_MODULE_ACTIONS],[ dnl
REQUIRE_PLUGIN([$1]) dnl
m4_ifdef([$2],[ dnl
m4_define([MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1]),m4_defn([$2])) dnl
],[ dnl
m4_define([MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1]), [$2]) dnl
])
])
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CONFIGURE_PLUGINS
dnl
dnl What it does:
dnl Called last, emits all required shell code to configure the modules
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_CONFIGURE_PLUGINS],[ dnl
m4_ifdef([__mysql_plugin_configured__],[ dnl
AC_FATAL([cannot call [MYSQL_CONFIGURE_PLUGINS] multiple times]) dnl
],[ dnl
m4_define([__mysql_plugin_configured__],[done]) dnl
m4_ifdef([__mysql_plugin_list__],[ dnl
_MYSQL_CHECK_PLUGIN_ARGS([$1])
_MYSQL_CONFIGURE_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
_MYSQL_DO_PLUGIN_ACTIONS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
]) dnl
]) dnl
])
AC_DEFUN([_MYSQL_CONFIGURE_PLUGINS],[ dnl
ifelse($#, 0, [], $#, 1, [ dnl
_MYSQL_CHECK_PLUGIN([$1]) dnl
],[ dnl
_MYSQL_CHECK_PLUGIN([$1]) dnl
_MYSQL_CONFIGURE_PLUGINS(m4_shift($@)) dnl
])
])
AC_DEFUN([_MYSQL_CHECK_PLUGIN],[ dnl
_DO_MYSQL_CHECK_PLUGIN(
[$1],
[$1-plugin],
[MYSQL_MODULE_NAME_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DESC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]),
[MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])
) dnl
])
AC_DEFUN([_DO_MYSQL_CHECK_PLUGIN],[ dnl
m4_ifdef([$5],[ dnl
AH_TEMPLATE($5, [Include ]$4[ into mysqld])
])
AC_MSG_CHECKING([whether to use ]$3) dnl
m4_ifdef([$10],[
if test "[$mysql_module_]m4_bpatsubst([$1], -, _)" = yes -a \
"[$with_module_]m4_bpatsubst([$1], -, _)" != no -o \
"[$with_module_]m4_bpatsubst([$1], -, _)" = yes; then
AC_MSG_ERROR([disabled])
fi
AC_MSG_RESULT([no]) dnl
],[ dnl
m4_ifdef([$9],[
if test "[$with_module_]m4_bpatsubst([$1], -, _)" = no; then
AC_MSG_ERROR([cannot disable mandatory module])
fi
[mysql_module_]m4_bpatsubst([$1], -, _)=yes dnl
])
if test "[$with_module_]m4_bpatsubst([$1], -, _)" != no; then
if test "[$mysql_module_]m4_bpatsubst([$1], -, _)" != yes -a \
"[$with_module_]m4_bpatsubst([$1], -, _)" != yes; then dnl
m4_ifdef([$8],[ dnl
m4_ifdef([$6],[
mysql_plugin_dirs="$mysql_plugin_dirs $6" dnl
])
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_shared_target], "$8")
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_static_target], [""])
[with_module_]m4_bpatsubst([$1], -, _)=yes
AC_MSG_RESULT([plugin]) dnl
],[
[with_module_]m4_bpatsubst([$1], -, _)=no
AC_MSG_RESULT([no]) dnl
])
else dnl
m4_ifdef([$7],[
ifelse(m4_bregexp($7, [^lib[^.]+\.a$]), -2, [ dnl
m4_ifdef([$6],[
mysql_plugin_dirs="$mysql_plugin_dirs $6"
mysql_plugin_libs="$mysql_plugin_libs -L[\$(top_builddir)]/$6" dnl
])
mysql_plugin_libs="$mysql_plugin_libs dnl
[-l]m4_bregexp($7, [^lib\([^.]+\)], [\1])" dnl
], m4_bregexp($7, [^\\\$]), 0, [ dnl
m4_ifdef([$6],[
mysql_plugin_dirs="$mysql_plugin_dirs $6" dnl
])
mysql_plugin_libs="$mysql_plugin_libs $7" dnl
], [ dnl
m4_ifdef([$6],[
mysql_plugin_dirs="$mysql_plugin_dirs $6"
mysql_plugin_libs="$mysql_plugin_libs \$(top_builddir)/$6/$7" dnl
],[
mysql_plugin_libs="$mysql_plugin_libs $7" dnl
]) dnl
]) dnl
m4_ifdef([$5],[
AC_DEFINE($5) dnl
])
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_static_target], "$7")
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_shared_target], [""]) dnl
],[ dnl
m4_ifdef([$6],[
AC_FATAL([plugin directory specified without library for ]$3) dnl
],[ dnl
m4_ifdef([$5],[
AC_DEFINE($5)
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_static_target], ["yes"])
AC_SUBST([plugin_]m4_bpatsubst([$1], -, _)[_shared_target], [""]) dnl
]) dnl
]) dnl
])
mysql_plugin_defs="$mysql_plugin_defs, [builtin_]m4_bpatsubst([$2], -, _)"
[with_module_]m4_bpatsubst([$1], -, _)=yes
AC_MSG_RESULT([yes])
fi
else
AC_MSG_RESULT([no])
fi dnl
]) dnl
])
AC_DEFUN([_MYSQL_DO_PLUGIN_ACTIONS],[ dnl
ifelse($#, 0, [], $#, 1, [ dnl
_MYSQL_PLUGIN_ACTIONS([$1]) dnl
],[ dnl
_MYSQL_PLUGIN_ACTIONS([$1]) dnl
_MYSQL_DO_PLUGIN_ACTIONS(m4_shift($@)) dnl
])
])
AC_DEFUN([_MYSQL_PLUGIN_ACTIONS],[ dnl
_DO_MYSQL_PLUGIN_ACTIONS(
[$1],
[$1-plugin],
[MYSQL_MODULE_NAME_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DESC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]),
[MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])
) dnl
])
AC_DEFUN([_DO_MYSQL_PLUGIN_ACTIONS],[ dnl
m4_ifdef([$10], [], [
if test "[$with_module_]m4_bpatsubst([$1], -, _)" = yes; then
if test -z "[$plugin_]m4_bpatsubst([$1], -, _)[_static_target]" -a \
-z "[$plugin_]m4_bpatsubst([$1], -, _)[_shared_target]"; then
AC_MSG_ERROR([thats strange, $1 failed sanity check])
fi
$11
fi dnl
]) dnl
])
dnl ===========================================================================
dnl Private helper macros
dnl ===========================================================================
AC_DEFUN([REQUIRE_PLUGIN],[ dnl
_REQUIRE_PLUGIN([$1], [__MYSQL_MODULE_]AS_TR_CPP([$1])[__]) dnl
])
define([_REQUIRE_PLUGIN],[ dnl
ifdef([$2],[ dnl
ifelse($2, [$1], [], [ dnl
AC_FATAL([[Misspelt MYSQL_MODULE declaration for ]][$1]) dnl
]) dnl
],[ dnl
AC_FATAL([[Missing MYSQL_MODULE declaration for ]][$1]) dnl
])
])
dnl ---------------------------------------------------------------------------
AC_DEFUN([_MYSQL_MODULE_META_CHECK], [ifelse($#, 0, [], $#, 1, dnl
[_MYSQL_CHECK_PLUGIN_META([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__]) dnl
], dnl
[_MYSQL_CHECK_PLUGIN_META([$1], [__mysql_]m4_bpatsubst($1, -, _)[_plugins__]) dnl
_MYSQL_MODULE_META_CHECK(m4_shift($@))]) dnl
])
AC_DEFUN([_MYSQL_CHECK_PLUGIN_META], [
[$1] ) dnl
m4_ifdef([$2], [
mysql_modules='m4_bpatsubst($2, :, [ ])' dnl
],[
mysql_modules='' dnl
])
;; dnl
])
dnl ---------------------------------------------------------------------------
AC_DEFUN([_MYSQL_PLUGAPPEND],[ dnl
m4_ifdef([$1],[ dnl
m4_define([__plugin_append_tmp__], m4_defn([$1])) dnl
m4_undefine([$1]) dnl
m4_define([$1], __plugin_append_tmp__[:$2]) dnl
m4_undefine([__plugin_append_tmp__]) dnl
],[ dnl
m4_define([$1], [$2]) dnl
$3 dnl
]) dnl
])
AC_DEFUN([_MYSQL_PLUGAPPEND_OPTS],[ dnl
ifelse($#, 0, [], $#, 1, [ dnl
AC_FATAL([[bad number of args]])
], $#, 2, [ dnl
_MYSQL_PLUGAPPEND_OPTONE([$1],[$2]) dnl
],[ dnl
_MYSQL_PLUGAPPEND_OPTONE([$1],[$2]) dnl
_MYSQL_PLUGAPPEND_OPTS([$1], m4_shift(m4_shift($@)))
])
])
AC_DEFUN([_MYSQL_PLUGAPPEND_OPTONE],[ dnl
ifelse([$2], [all], [ dnl
AC_FATAL([[protected plugin group: all]]) dnl
],[ dnl
ifelse([$2], [none], [ dnl
AC_FATAL([[protected plugin group: none]]) dnl
],[ dnl
_MYSQL_PLUGAPPEND([__mysql_$1_configs__],[$2]) dnl
_MYSQL_PLUGAPPEND([__mysql_]m4_bpatsubst($2, -, _)[_plugins__],[$1], [ dnl
_MYSQL_PLUGAPPEND([__mysql_metaplugin_list__],[$2]) dnl
]) dnl
]) dnl
]) dnl
])
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_LIST_PLUGINS],[ dnl
m4_ifdef([__mysql_plugin_list__],[ dnl
_MYSQL_LIST_PLUGINS(m4_bpatsubst(__mysql_plugin_list__, :, [,])) dnl
]) dnl
])
AC_DEFUN([_MYSQL_LIST_PLUGINS],[ dnl
ifelse($#, 0, [], $#, 1, [ dnl
MYSQL_SHOW_PLUGIN([$1]) dnl
],[ dnl
MYSQL_SHOW_PLUGIN([$1]) dnl
_MYSQL_LIST_PLUGINS(m4_shift($@)) dnl
]) dnl
])
AC_DEFUN([MYSQL_SHOW_PLUGIN],[ dnl
_MYSQL_SHOW_PLUGIN(
[$1],
[$1-plugin],
[MYSQL_MODULE_NAME_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DESC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DEFINE_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DIRECTORY_]AS_TR_CPP([$1]),
[MYSQL_MODULE_STATIC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DYNAMIC_]AS_TR_CPP([$1]),
[MYSQL_MODULE_MANDATORY_]AS_TR_CPP([$1]),
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1]),
__mysql_[$1]_configs__,
)
])
AC_DEFUN([_MYSQL_SHOW_PLUGIN],[
=== Plug-in: $3 ===
Module Name: [$1]
Description: $4
Supports build: _PLUGIN_BUILD_TYPE([$7],[$8]) dnl
m4_ifdef([$12],[
Configurations: m4_bpatsubst($12, :, [, ])]) dnl
m4_ifdef([$10],[
Status: disabled], [ dnl
m4_ifdef([$9],[
Status: mandatory])])])
AC_DEFUN([_PLUGIN_BUILD_TYPE], dnl
[m4_ifdef([$1],[ifelse($1,[no],[],[static ]m4_ifdef([$2],[and dnl
]))])[]m4_ifdef([$2],[dynamic],[m4_ifdef([$1],[],[static])])])
dnl ---------------------------------------------------------------------------
AC_DEFUN([_MYSQL_MODULE_ARGS_CHECK],[ dnl
ifelse($#, 0, [], $#, 1, [ dnl
_MYSQL_CHECK_PLUGIN_ARG([$1],
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])) dnl
],[ dnl
_MYSQL_CHECK_PLUGIN_ARG([$1],
[MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),
[MYSQL_MODULE_ACTIONS_]AS_TR_CPP([$1])) dnl
_MYSQL_MODULE_ARGS_CHECK(m4_shift($@)) dnl
]) dnl
])
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARG],[ dnl
m4_ifdef([$3], [], [m4_define([$3],[ ])])
[$1] ) dnl
m4_ifdef([$2],[
AC_MSG_ERROR([plugin $1 is disabled]) dnl
],[
[mysql_module_]m4_bpatsubst([$1], -, _)=yes dnl
])
;; dnl
])
AC_DEFUN([_MYSQL_SANE_VARS], [ dnl
ifelse($#, 0, [], $#, 1, [ dnl
_MYSQL_SANEVAR([$1]) dnl
],[ dnl
_MYSQL_SANEVAR([$1]) dnl
_MYSQL_SANE_VARS(m4_shift($@)) dnl
]) dnl
])
AC_DEFUN([_MYSQL_SANEVAR], [
test -z "[$mysql_module_]m4_bpatsubst([$1], -, _)" && dnl
[mysql_module_]m4_bpatsubst([$1], -, _)='.'
test -z "[$with_module_]m4_bpatsubst([$1], -, _)" && dnl
[with_module_]m4_bpatsubst([$1], -, _)='.' dnl
])
AC_DEFUN([_MYSQL_CHECK_DEPENDENCIES], [ dnl
ifelse($#, 0, [], $#, 1, [ dnl
_MYSQL_CHECK_DEPENDS([$1],[__mysql_plugdepends_$1__]) dnl
],[ dnl
_MYSQL_CHECK_DEPENDS([$1],[__mysql_plugdepends_$1__]) dnl
_MYSQL_CHECK_DEPENDENCIES(m4_shift($@)) dnl
]) dnl
])
AC_DEFUN([_MYSQL_CHECK_DEPENDS], [ dnl
m4_ifdef([$2], [
if test "[$mysql_module_]m4_bpatsubst([$1], -, _)" = yes -a \
"[$with_module_]m4_bpatsubst([$1], -, _)" != no -o \
"[$with_module_]m4_bpatsubst([$1], -, _)" = yes; then dnl
_MYSQL_GEN_DEPENDS(m4_bpatsubst($2, :, [,]))
fi dnl
]) dnl
])
AC_DEFUN([_MYSQL_GEN_DEPENDS], [ dnl
ifelse($#, 0, [], $#, 1, [ dnl
_MYSQL_GEN_DEPEND([$1]) dnl
],[ dnl
_MYSQL_GEN_DEPEND([$1]) dnl
_MYSQL_GEN_DEPENDS(m4_shift($@)) dnl
]) dnl
])
AC_DEFUN([_MYSQL_GEN_DEPEND], [ dnl
m4_ifdef([MYSQL_MODULE_DISABLED_]AS_TR_CPP([$1]),[
AC_MSG_ERROR([depends upon disabled module $1]) dnl
],[
[mysql_module_]m4_bpatsubst([$1], -, _)=yes
if test "[$with_module_]m4_bpatsubst([$1], -, _)" = no; then
AC_MSG_ERROR([depends upon disabled module $1])
fi dnl
]) dnl
])
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[
AC_ARG_WITH([modules], [
--with-modules=PLUGIN[[,PLUGIN..]]
m4_text_wrap([Plugin modules to include in mysqld. (default is: $1)
Must be configuration name or a comma seperated list of modules.],
[ ])
m4_text_wrap([Available configurations are: ]
m4_bpatsubst(m4_ifdef([__mysql_metaplugin_list__], dnl
none:all:__mysql_metaplugin_list__,none:all), :, [ ])[.],
[ ])
m4_text_wrap([Available plugin modules are: ] dnl
m4_bpatsubst(__mysql_plugin_list__, :, [ ])[.], [ ])
--without-module-PLUGIN
m4_text_wrap([Disable the named module from being built. Otherwise,
for modules which are not selected for inclusion in mysqld will be
built dynamically (if supported)],[ ])
],[mysql_modules="`echo $withval | tr ',.:;*[]' ' '`"],
[mysql_modules=['$1']])
m4_divert_once([HELP_VAR_END],[
Description of plugin modules:
m4_indir([MYSQL_LIST_PLUGINS])
])
case "$mysql_modules" in
all )
mysql_modules='m4_bpatsubst(__mysql_plugin_list__, :, [ ])'
;;
none )
mysql_modules=''
;; dnl
m4_ifdef([__mysql_metaplugin_list__],[ dnl
_MYSQL_MODULE_META_CHECK(m4_bpatsubst(__mysql_metaplugin_list__, :, [,])) dnl
])
esac
for plugin in $mysql_modules; do
case "$plugin" in
all )
AC_MSG_ERROR([bad module name: $plugin])
;;
none )
AC_MSG_ERROR([bad module name: $plugin])
;; dnl
_MYSQL_MODULE_ARGS_CHECK(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
* )
AC_MSG_ERROR([unknown plugin module: $plugin])
;;
esac
done
_MYSQL_SANE_VARS(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
_MYSQL_CHECK_DEPENDENCIES(m4_bpatsubst(__mysql_plugin_list__, :, [,]))
])
dnl ===========================================================================

View File

@ -1,55 +0,0 @@
dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_STORAGE_ENGINE
dnl
dnl What it does:
dnl creates --with-xxx configure option
dnl adds HAVE_XXX to config.h
dnl appends &xxx_hton, to the list of hanldertons
dnl appends a dir to the list of source directories
dnl appends ha_xxx.cc to the list of handler files
dnl
dnl all names above are configurable with reasonable defaults.
dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_STORAGE_ENGINE],
[_MYSQL_STORAGE_ENGINE(
[$1], dnl name
m4_default([$2], [$1 storage engine]), dnl verbose name
m4_default([$3], [$1-storage-engine]), dnl with-name
m4_default([$4], no), dnl default
m4_default([$5], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE]),
m4_default([$6], $1[_hton]), dnl hton
m4_default([$7], []), dnl path to the code
m4_default([$8], [ha_$1.o]), dnl path to the handler in
m4_default([$9], []), dnl path to extra libraries
[$10], dnl code-if-set
)])
AC_DEFUN([_MYSQL_STORAGE_ENGINE],
[
AC_ARG_WITH([$3], AS_HELP_STRING([--with-$3], [enable $2 (default is $4)]),
[], [ [with_]m4_bpatsubst([$3], -, _)=['$4']])
AC_CACHE_CHECK([whether to use $2], [mysql_cv_use_]m4_bpatsubst([$3], -, _),
[mysql_cv_use_]m4_bpatsubst([$3], -, _)=[$with_]m4_bpatsubst([$3], -, _))
AH_TEMPLATE([$5], [Build $2])
if test "[$mysql_cv_use_]m4_bpatsubst([$3], -, _)" != no; then
if test "$6" != "no"
then
AC_DEFINE([$5])
mysql_se_decls="${mysql_se_decls},$6"
mysql_se_htons="${mysql_se_htons},&$6"
if test "$8" != "no"
then
mysql_se_objs="$mysql_se_objs $8"
fi
mysql_se_dirs="$mysql_se_dirs $7"
mysql_se_libs="$mysql_se_libs $9"
else
mysql_se_plugins="$mysql_se_plugins $7"
fi
$10
fi
])
dnl ---------------------------------------------------------------------------

View File

@ -31,7 +31,7 @@ sinclude(config/ac-macros/alloca.m4)
sinclude(config/ac-macros/check_cpu.m4)
sinclude(config/ac-macros/character_sets.m4)
sinclude(config/ac-macros/compiler_flag.m4)
sinclude(config/ac-macros/storage.m4)
sinclude(config/ac-macros/plugins.m4)
sinclude(config/ac-macros/ha_berkeley.m4)
sinclude(config/ac-macros/ha_ndbcluster.m4)
sinclude(config/ac-macros/large_file.m4)
@ -48,6 +48,92 @@ czech danish dutch english estonian french german greek hungarian \
italian japanese korean norwegian norwegian-ny polish portuguese \
romanian russian serbian slovak spanish swedish ukrainian"
#--------------------------------------------------------------------
# Declare our plugin modules
#--------------------------------------------------------------------
MYSQL_STORAGE_ENGINE(archive,, [Archive Storage Engine],
[Archive Storage Engine], [max,max-no-ndb])
MYSQL_MODULE_DIRECTORY(archive, [storage/archive])
MYSQL_MODULE_STATIC(archive, [libarchive.a])
MYSQL_MODULE_DYNAMIC(archive, [ha_archive.la])
MYSQL_STORAGE_ENGINE(berkeley, berkeley-db, [BerkeleyDB Storage Engine],
[Transactional Tables using BerkeleyDB], [max,max-no-ndb])
MYSQL_MODULE_DIRECTORY(berkeley,[storage/bdb])
MYSQL_MODULE_STATIC(berkeley, [[\$(bdb_libs_with_path)]])
MYSQL_MODULE_ACTIONS(berkeley, [MYSQL_SETUP_BERKELEY_DB])
MYSQL_STORAGE_ENGINE(blackhole,,[Blackhole Storage Engine],
[Basic Write-only Read-never tables], [max,max-no-ndb])
MYSQL_MODULE_DIRECTORY(blackhole, [storage/blackhole])
MYSQL_MODULE_STATIC(blackhole, [libblackhole.a])
MYSQL_MODULE_DYNAMIC(blackhole, [ha_blackhole.la])
MYSQL_STORAGE_ENGINE(csv,, [CSV Storage Engine],
[Stores tables in text CSV format])
MYSQL_MODULE_DIRECTORY(csv, [storage/csv])
MYSQL_MODULE_STATIC(csv, [libcsv.a])
MYSQL_STORAGE_ENGINE(example,, [Example Storage Engine],
[Skeleton for Storage Engines for developers], [max,max-no-ndb])
MYSQL_MODULE_DIRECTORY(example, [storage/example])
MYSQL_MODULE_STATIC(example, [libexample.a])
MYSQL_MODULE_DYNAMIC(example, [ha_example.la])
MYSQL_STORAGE_ENGINE(federated,,[Federated Storage Engine],
[Connects to tables on remote MySQL servers], [max,max-no-ndb])
MYSQL_MODULE(ftexample, [Simple Parser],
[Simple full-text parser plugin])
MYSQL_MODULE_DIRECTORY(ftexample, [plugin/fulltext])
MYSQL_MODULE_STATIC(ftexample, [libftexample.a])
MYSQL_MODULE_DYNAMIC(ftexample, [ft_example.la])
MYSQL_STORAGE_ENGINE(heap,no, [Memory Storage Engine],
[In memory hashed tables])
MYSQL_MODULE_DIRECTORY(heap, [storage/heap])
MYSQL_MODULE_STATIC(heap, [libheap.a])
MYSQL_STORAGE_ENGINE(innobase, innodb, [InnoDB Storage Engine],
[Transactional Tables using InnoDB], [max,max-no-ndb])
MYSQL_MODULE_DIRECTORY(innobase, [storage/innobase])
MYSQL_MODULE_STATIC(innobase, [libinnobase.a])
MYSQL_MODULE_ACTIONS(innobase, [
AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"])
AC_SUBST(innodb_includes)
AC_SUBST(innodb_libs)
AC_SUBST(innodb_system_libs)
other_configures="$other_configures storage/innobase/configure"
])
MYSQL_STORAGE_ENGINE(myisam,no, [MyISAM Storage Engine],
[Traditional non-transactional MySQL tables])
MYSQL_MODULE_DIRECTORY(myisam, [storage/myisam])
MYSQL_MODULE_STATIC(myisam, [libmyisam.a])
MYSQL_STORAGE_ENGINE(myisammrg,no,[MyISAM MERGE Engine],
[Merge multiple MySQL tables into one])
MYSQL_MODULE_DIRECTORY(myisammrg,[storage/myisammrg])
MYSQL_MODULE_STATIC(myisammrg, [libmyisammrg.a])
MYSQL_STORAGE_ENGINE(ndbcluster, ndbcluster, [Cluster Storage Engine],
[High Availability Clustered tables], [max])
MYSQL_MODULE_DIRECTORY(ndbcluster,[storage/ndb])
MYSQL_MODULE_STATIC(ndbcluster, [[\$(ndbcluster_libs) \$(ndbcluster_system_libs) \$(NDB_SCI_LIBS)]])
MYSQL_MODULE_ACTIONS(ndbcluster,[MYSQL_SETUP_NDBCLUSTER])
MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support],
[MySQL Partitioning Support], [max,max-no-ndb])
MYSQL_MODULE_MANDATORY(csv) dnl Used for logging
MYSQL_MODULE_MANDATORY(heap) dnl Memory tables
MYSQL_MODULE_MANDATORY(myisam) dnl Default
MYSQL_MODULE_MANDATORY(myisammrg)
dnl -- ndbcluster requires partition to be enabled
MYSQL_MODULE_DEPENDS(ndbcluster, partition)
#####
#####
@ -672,6 +758,16 @@ MYSQL_SYS_LARGEFILE
# Types that must be checked AFTER large file support is checked
AC_TYPE_SIZE_T
#--------------------------------------------------------------------
# Check for requested features
#--------------------------------------------------------------------
MYSQL_CHECK_BIG_TABLES
MYSQL_CHECK_MAX_INDEXES
MYSQL_CHECK_REPLICATION
MYSQL_CONFIGURE_PLUGINS([none])
#--------------------------------------------------------------------
# Check for system header files
#--------------------------------------------------------------------
@ -2421,73 +2517,6 @@ AC_SUBST(readline_basedir)
AC_SUBST(readline_link)
AC_SUBST(readline_h_ln_cmd)
MYSQL_CHECK_BIG_TABLES
MYSQL_CHECK_MAX_INDEXES
MYSQL_CHECK_REPLICATION
MYSQL_STORAGE_ENGINE(innobase,,innodb,,,,innobase,ha_innodb.o,[ dnl
\$(top_builddir)/storage/innobase/usr/libusr.a dnl
\$(top_builddir)/storage/innobase/srv/libsrv.a dnl
\$(top_builddir)/storage/innobase/dict/libdict.a dnl
\$(top_builddir)/storage/innobase/que/libque.a dnl
\$(top_builddir)/storage/innobase/srv/libsrv.a dnl
\$(top_builddir)/storage/innobase/ibuf/libibuf.a dnl
\$(top_builddir)/storage/innobase/row/librow.a dnl
\$(top_builddir)/storage/innobase/pars/libpars.a dnl
\$(top_builddir)/storage/innobase/btr/libbtr.a dnl
\$(top_builddir)/storage/innobase/trx/libtrx.a dnl
\$(top_builddir)/storage/innobase/read/libread.a dnl
\$(top_builddir)/storage/innobase/usr/libusr.a dnl
\$(top_builddir)/storage/innobase/buf/libbuf.a dnl
\$(top_builddir)/storage/innobase/ibuf/libibuf.a dnl
\$(top_builddir)/storage/innobase/eval/libeval.a dnl
\$(top_builddir)/storage/innobase/log/liblog.a dnl
\$(top_builddir)/storage/innobase/fsp/libfsp.a dnl
\$(top_builddir)/storage/innobase/fut/libfut.a dnl
\$(top_builddir)/storage/innobase/fil/libfil.a dnl
\$(top_builddir)/storage/innobase/lock/liblock.a dnl
\$(top_builddir)/storage/innobase/mtr/libmtr.a dnl
\$(top_builddir)/storage/innobase/page/libpage.a dnl
\$(top_builddir)/storage/innobase/rem/librem.a dnl
\$(top_builddir)/storage/innobase/thr/libthr.a dnl
\$(top_builddir)/storage/innobase/sync/libsync.a dnl
\$(top_builddir)/storage/innobase/data/libdata.a dnl
\$(top_builddir)/storage/innobase/mach/libmach.a dnl
\$(top_builddir)/storage/innobase/ha/libha.a dnl
\$(top_builddir)/storage/innobase/dyn/libdyn.a dnl
\$(top_builddir)/storage/innobase/mem/libmem.a dnl
\$(top_builddir)/storage/innobase/sync/libsync.a dnl
\$(top_builddir)/storage/innobase/ut/libut.a dnl
\$(top_builddir)/storage/innobase/os/libos.a dnl
\$(top_builddir)/storage/innobase/ut/libut.a],[
AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"])
AC_SUBST(innodb_includes)
AC_SUBST(innodb_libs)
AC_SUBST(innodb_system_libs)
other_configures="$other_configures storage/innobase/configure"
])
MYSQL_STORAGE_ENGINE(berkeley,,berkeley-db,,,,bdb,,,[
MYSQL_SETUP_BERKELEY_DB
])
MYSQL_STORAGE_ENGINE(example,,,,,,example,no,
\$(top_builddir)/storage/example/libexample.a,[
AC_CONFIG_FILES(storage/example/Makefile)
])
MYSQL_STORAGE_ENGINE(archive,,,,,,archive,,
\$(top_builddir)/storage/archive/libarchive.a, [
AC_CONFIG_FILES(storage/archive/Makefile)
])
MYSQL_STORAGE_ENGINE(csv,,,"yes",,tina_hton,csv,no,
\$(top_builddir)/storage/csv/libcsv.a,[
AC_CONFIG_FILES(storage/csv/Makefile)
])
MYSQL_STORAGE_ENGINE(blackhole)
MYSQL_STORAGE_ENGINE(federated)
MYSQL_STORAGE_ENGINE(ndbcluster,,ndbcluster,,,,ndb,,,[
MYSQL_SETUP_NDBCLUSTER
])
MYSQL_STORAGE_ENGINE(partition,,partition)
# If we have threads generate some library functions and test programs
sql_server_dirs=
@ -2544,7 +2573,7 @@ then
AC_SUBST(THREAD_LOBJECTS)
server_scripts="mysqld_safe mysql_install_db"
sql_server_dirs="strings mysys dbug extra regex"
mysql_se_dirs="myisam myisammrg heap $mysql_se_dirs"
sql_server="$sql_server vio sql"
fi
@ -2560,12 +2589,9 @@ AC_SUBST(sql_server)
AC_SUBST(thread_dirs)
AC_SUBST(server_scripts)
AC_SUBST(mysql_se_dirs)
AC_SUBST(mysql_se_libs)
AC_SUBST(mysql_se_objs)
AC_SUBST(mysql_se_htons)
AC_SUBST(mysql_se_decls)
AC_SUBST(mysql_se_plugins)
AC_SUBST(mysql_plugin_dirs)
AC_SUBST(mysql_plugin_libs)
AC_SUBST(mysql_plugin_defs)
# Now that sql_client_dirs and sql_server_dirs are stable, determine the union.
@ -2610,12 +2636,15 @@ AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl
unittest/Makefile dnl
unittest/mytap/Makefile unittest/mytap/t/Makefile dnl
unittest/mysys/Makefile unittest/examples/Makefile dnl
strings/Makefile regex/Makefile storage/Makefile storage/heap/Makefile dnl
strings/Makefile regex/Makefile dnl
storage/Makefile dnl
storage/archive/Makefile storage/bdb/Makefile storage/blackhole/Makefile dnl
storage/csv/Makefile storage/example/Makefile storage/heap/Makefile dnl
storage/myisam/Makefile storage/myisammrg/Makefile dnl
man/Makefile BUILD/Makefile vio/Makefile dnl
libmysql/Makefile client/Makefile dnl
pstack/Makefile pstack/aout/Makefile sql/Makefile sql/share/Makefile dnl
sql/handlerton.cc sql-common/Makefile dnl
sql/sql_builtin.cc sql-common/Makefile dnl
dbug/Makefile scripts/Makefile dnl
include/Makefile dnl
server-tools/Makefile server-tools/instance-manager/Makefile dnl

View File

@ -37,10 +37,25 @@
be a st_mysql_plugin struct for each plugin to be declared.
*/
#define mysql_declare_plugin \
int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
int _mysql_sizeof_struct_st_plugin_= sizeof(struct st_mysql_plugin); \
#ifndef MYSQL_DYNAMIC_PLUGIN
#define __DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \
int VERSION= MYSQL_PLUGIN_INTERFACE_VERSION; \
int PSIZE= sizeof(struct st_mysql_plugin); \
struct st_mysql_plugin DECLS[]= {
#else
#define __DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \
int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
int _mysql_sizeof_struct_st_plugin_= sizeof(struct st_mysql_plugin); \
struct st_mysql_plugin _mysql_plugin_declarations_[]= {
#endif
#define _DECLARE_PLUGIN(NAME) \
__DECLARE_PLUGIN(NAME, builtin_ ## NAME ## _plugin_interface_version, \
builtin_ ## NAME ## _sizeof_struct_st_plugin, \
builtin_ ## NAME ## _plugin)
#define mysql_declare_plugin(NAME) _DECLARE_PLUGIN(NAME)
#define mysql_declare_plugin_end ,{0,0,0,0,0,0,0,0,0}}
/*

View File

@ -44,7 +44,10 @@ libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \
noinst_HEADERS = embedded_priv.h emb_qcache.h
sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
ha_heap.cc ha_myisam.cc ha_myisammrg.cc handler.cc sql_handler.cc \
ha_heap.cc ha_myisam.cc ha_myisammrg.cc \
ha_innodb.cc ha_berkeley.cc ha_federated.cc ha_ndbcluster.cc \
ha_ndbcluster_binlog.cc ha_partition.cc \
handler.cc sql_handler.cc \
hostname.cc init.cc password.c \
item.cc item_buff.cc item_cmpfunc.cc item_create.cc \
item_func.cc item_strfunc.cc item_sum.cc item_timefunc.cc \
@ -65,17 +68,12 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
spatial.cc gstream.cc sql_help.cc tztime.cc sql_cursor.cc \
sp_head.cc sp_pcontext.cc sp.cc sp_cache.cc sp_rcontext.cc \
parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
event_executor.cc event.cc event_timed.cc \
rpl_filter.cc sql_partition.cc handlerton.cc sql_plugin.cc \
sql_tablespace.cc \
rpl_injector.cc my_user.c partition_info.cc
event_executor.cc event.cc event_timed.cc \
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \
sql_tablespace.cc \
rpl_injector.cc my_user.c partition_info.cc
libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources)
EXTRA_libmysqld_a_SOURCES = ha_innodb.cc ha_berkeley.cc ha_archive.cc \
ha_blackhole.cc ha_federated.cc ha_ndbcluster.cc \
ha_ndbcluster_binlog.cc \
ha_partition.cc
libmysqld_a_DEPENDENCIES= @mysql_se_objs@
libmysqld_a_SOURCES=
sqlstoragesources = $(EXTRA_libmysqld_a_SOURCES)
@ -85,15 +83,11 @@ sql_yacc.cc sql_yacc.h: $(top_srcdir)/sql/sql_yacc.yy
# The following libraries should be included in libmysqld.a
INC_LIB= $(top_builddir)/regex/libregex.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/storage/myisammrg/libmyisammrg.a \
$(top_builddir)/storage/archive/libarchive.a \
$(top_builddir)/storage/heap/libheap.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/strings/libmystrings.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/vio/libvio.a \
@mysql_se_libs@ \
@mysql_plugin_libs@ \
$(yassl_las)
if HAVE_YASSL

View File

@ -1,6 +1,27 @@
SUBDIRS= fulltext
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# extra plugin example files are listed here, to
# keep its Makefile.am cleaner as a template
EXTRA_DIST= fulltext/configure.in
# Process this file with automake to create Makefile.in
AUTOMAKE_OPTIONS = foreign
# These are built from source in the Docs directory
EXTRA_DIST = fulltext/configure.in
SUBDIRS =
DIST_SUBDIRS = . fulltext
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -1,9 +1,44 @@
#Makefile.am example for a plugin
pkglibdir=$(libdir)/mysql
INCLUDES= -I$(top_builddir)/include -I$(top_srcdir)/include
noinst_LTLIBRARIES= mypluglib.la
#pkglib_LTLIBRARIES= mypluglib.la
mypluglib_la_SOURCES= plugin_example.c
mypluglib_la_LDFLAGS= -module -rpath $(pkglibdir)
#MYSQL_MODULE(ftexample, [Simple Parser],
# [Simple full-text parser plugin])
#MYSQL_MODULE_DIRECTORY(ftexample, [plugin/fulltext])
#MYSQL_MODULE_STATIC(ftexample, [libftexample.a])
#MYSQL_MODULE_DYNAMIC(ftexample, [ft_example.la])
#called from the top level Makefile
MYSQLDATAdir = $(localstatedir)
MYSQLSHAREdir = $(pkgdatadir)
MYSQLBASEdir= $(prefix)
MYSQLLIBdir= $(pkglibdir)
INCLUDES = -I$(top_srcdir)/include \
-I$(top_srcdir)/regex \
-I$(top_srcdir)/sql \
-I$(srcdir)
WRAPLIBS=
LDADD =
DEFS = @DEFS@
noinst_HEADERS =
EXTRA_LTLIBRARIES = ft_example.la
pkglib_LTLIBRARIES = @plugin_ftexample_shared_target@
ft_example_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
ft_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ft_example_la_CFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ft_example_la_SOURCES = plugin_example.c
EXTRA_LIBRARIES = libftexample.a
noinst_LIBRARIES = @plugin_ftexample_static_target@
libftexample_a_CXXFLAGS=$(AM_CFLAGS)
libftexample_a_CFLAGS = $(AM_CFLAGS)
libftexample_a_SOURCES= plugin_example.c
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -216,7 +216,7 @@ static struct st_mysql_show_var simple_status[]=
Plugin library descriptor
*/
mysql_declare_plugin
mysql_declare_plugin(ftexample)
{
MYSQL_FTPARSER_PLUGIN, /* type */
&simple_parser_descriptor, /* descriptor */

View File

@ -30,10 +30,7 @@ libexec_PROGRAMS = mysqld
noinst_PROGRAMS = gen_lex_hash
bin_PROGRAMS = mysql_tzinfo_to_sql
gen_lex_hash_LDFLAGS = @NOINST_LDFLAGS@
LDADD = $(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/storage/myisammrg/libmyisammrg.a \
$(top_builddir)/storage/heap/libheap.a \
$(top_builddir)/vio/libvio.a \
LDADD = $(top_builddir)/vio/libvio.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/regex/libregex.a \
@ -41,7 +38,7 @@ LDADD = $(top_builddir)/storage/myisam/libmyisam.a \
mysqld_LDADD = @MYSQLD_EXTRA_LDFLAGS@ \
@pstack_libs@ \
@mysql_se_objs@ @mysql_se_libs@ \
@mysql_plugin_libs@ \
$(LDADD) $(CXXLDFLAGS) $(WRAPLIBS) @LIBDL@ \
@yassl_libs@ @openssl_libs@
noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
@ -53,6 +50,9 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
sql_manager.h sql_map.h sql_string.h unireg.h \
sql_error.h field.h handler.h mysqld_suffix.h \
ha_heap.h ha_myisam.h ha_myisammrg.h ha_partition.h \
ha_innodb.h ha_berkeley.h ha_federated.h \
ha_ndbcluster.h ha_ndbcluster_binlog.h \
ha_ndbcluster_tables.h
opt_range.h protocol.h rpl_tblmap.h \
log.h sql_show.h rpl_rli.h \
sql_select.h structs.h table.h sql_udf.h hash_filo.h\
@ -61,12 +61,12 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
rpl_injector.h \
stacktrace.h sql_sort.h sql_cache.h set_var.h \
spatial.h gstream.h client_settings.h tzfile.h \
tztime.h my_decimal.h\
tztime.h my_decimal.h\
sp_head.h sp_pcontext.h sp_rcontext.h sp.h sp_cache.h \
parse_file.h sql_view.h sql_trigger.h \
sql_array.h sql_cursor.h event.h event_priv.h \
sql_plugin.h authors.h sql_partition.h \
partition_info.h partition_element.h
partition_info.h partition_element.h
mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
item.cc item_sum.cc item_buff.cc item_func.cc \
item_cmpfunc.cc item_strfunc.cc item_timefunc.cc \
@ -79,7 +79,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
mysqld.cc password.c hash_filo.cc hostname.cc \
set_var.cc sql_parse.cc sql_yacc.yy \
sql_base.cc table.cc sql_select.cc sql_insert.cc \
sql_prepare.cc sql_error.cc \
sql_prepare.cc sql_error.cc \
sql_update.cc sql_delete.cc uniques.cc sql_do.cc \
procedure.cc item_uniq.cc sql_test.cc \
log.cc log_event.cc init.cc derror.cc sql_acl.cc \
@ -87,6 +87,9 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
discover.cc time.cc opt_range.cc opt_sum.cc \
records.cc filesort.cc handler.cc \
ha_heap.cc ha_myisam.cc ha_myisammrg.cc \
ha_partition.cc ha_innodb.cc ha_berkeley.cc \
ha_federated.cc \
ha_ndbcluster.cc ha_ndbcluster_binlog.cc \
sql_db.cc sql_table.cc sql_rename.cc sql_crypt.cc \
sql_load.cc mf_iocache.cc field_conv.cc sql_show.cc \
sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \
@ -102,15 +105,9 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
sp_cache.cc parse_file.cc sql_trigger.cc \
event_executor.cc event.cc event_timed.cc \
sql_plugin.cc sql_binlog.cc \
handlerton.cc sql_tablespace.cc partition_info.cc
EXTRA_mysqld_SOURCES = ha_innodb.cc ha_berkeley.cc ha_archive.cc \
ha_innodb.h ha_berkeley.h ha_archive.h \
ha_blackhole.cc ha_federated.cc ha_ndbcluster.cc \
ha_blackhole.h ha_federated.h ha_ndbcluster.h \
ha_ndbcluster_binlog.cc ha_ndbcluster_binlog.h \
ha_ndbcluster_tables.h \
ha_partition.cc ha_partition.h
mysqld_DEPENDENCIES = @mysql_se_objs@
sql_builtin.cc sql_tablespace.cc partition_info.cc
gen_lex_hash_SOURCES = gen_lex_hash.cc
gen_lex_hash_LDADD = $(LDADD) $(CXXLDFLAGS)
mysql_tzinfo_to_sql_SOURCES = mysql_tzinfo_to_sql.cc
@ -162,6 +159,7 @@ sql_yacc.o: sql_yacc.cc sql_yacc.h $(HEADERS)
lex_hash.h: gen_lex_hash$(EXEEXT)
./gen_lex_hash$(EXEEXT) > $@
# the following three should eventually be moved out of this directory
ha_berkeley.o: ha_berkeley.cc ha_berkeley.h
$(CXXCOMPILE) @bdb_includes@ $(LM_CFLAGS) -c $<

View File

@ -16,7 +16,7 @@ SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/sql/message.rc
${CMAKE_SOURCE_DIR}/sql/sql_yacc.h
${CMAKE_SOURCE_DIR}/sql/sql_yacc.cc
${CMAKE_SOURCE_DIR}/include/mysql_version.h
${CMAKE_SOURCE_DIR}/sql/handlerton.cc
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
${CMAKE_SOURCE_DIR}/sql/lex_hash.h
${PROJECT_SOURCE_DIR}/include/mysqld_error.h
${PROJECT_SOURCE_DIR}/include/mysqld_ername.h
@ -29,7 +29,8 @@ ADD_DEFINITIONS(-DHAVE_ROW_BASED_REPLICATION -DMYSQL_SERVER
ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc
discover.cc ../libmysql/errmsg.c field.cc field_conv.cc
filesort.cc gstream.cc ha_heap.cc ha_myisam.cc ha_myisammrg.cc
${mysql_se_ha_src} handler.cc hash_filo.cc hash_filo.h
ha_innodb.cc ha_partition.cc ha_federated.cc ha_berkeley.cc
handler.cc hash_filo.cc hash_filo.h
hostname.cc init.cc item.cc item_buff.cc item_cmpfunc.cc
item_create.cc item_func.cc item_geofunc.cc item_row.cc
item_strfunc.cc item_subselect.cc item_sum.cc item_timefunc.cc
@ -59,13 +60,19 @@ ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc
${PROJECT_SOURCE_DIR}/include/mysqld_ername.h
${PROJECT_SOURCE_DIR}/include/sql_state.h
${PROJECT_SOURCE_DIR}/include/mysql_version.h
${PROJECT_SOURCE_DIR}/sql/handlerton.cc
${PROJECT_SOURCE_DIR}/sql/sql_builtin.cc
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
TARGET_LINK_LIBRARIES(mysqld heap myisam myisammrg mysys yassl zlib dbug yassl
taocrypt strings vio regex wsock32)
IF(WITH_ARCHIVE_STORAGE_ENGINE)
TARGET_LINK_LIBRARIES(mysqld archive)
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
TARGET_LINK_LIBRARIES(mysqld blackhole)
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
IF(WITH_CSV_STORAGE_ENGINE)
TARGET_LINK_LIBRARIES(mysqld csv)
ENDIF(WITH_CSV_STORAGE_ENGINE)
IF(WITH_EXAMPLE_STORAGE_ENGINE)
TARGET_LINK_LIBRARIES(mysqld example)
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)

View File

@ -56,10 +56,14 @@
#include <m_ctype.h>
#include <myisampack.h>
#include <hash.h>
#ifdef WITH_BERKELEY_STORAGE_ENGINE
#include "ha_berkeley.h"
#include "sql_manager.h"
#include <stdarg.h>
#include <mysql/plugin.h>
#define HA_BERKELEY_ROWS_IN_TABLE 10000 /* to get optimization right */
#define HA_BERKELEY_RANGE_COUNT 100
#define HA_BERKELEY_MAX_ROWS 10000000 /* Max rows in table */
@ -2725,3 +2729,17 @@ bool ha_berkeley::check_if_incompatible_data(HA_CREATE_INFO *info,
}
mysql_declare_plugin(berkeley)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&berkeley_hton,
berkeley_hton.name,
"MySQL AB",
"BerkeleyDB Storage Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;
#endif

View File

@ -351,9 +351,13 @@
#pragma implementation // gcc: Class implementation
#endif
#ifdef WITH_FEDERATED_STORAGE_ENGINE
#include "ha_federated.h"
#include "m_string.h"
#include <mysql/plugin.h>
/* Variables for federated share methods */
static HASH federated_open_tables; // To track open tables
pthread_mutex_t federated_mutex; // To init the hash
@ -2804,3 +2808,18 @@ int ha_federated::execute_simple_query(const char *query, int len)
DBUG_RETURN(0);
}
mysql_declare_plugin(federated)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&federated_hton,
federated_hton.name,
"Patrick Galbraith and Brian Aker, MySQL AB",
"Federated Storage Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;
#endif

View File

@ -706,3 +706,16 @@ bool ha_heap::check_if_incompatible_data(HA_CREATE_INFO *info,
return COMPATIBLE_DATA_NO;
return COMPATIBLE_DATA_YES;
}
mysql_declare_plugin(heap)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&heap_hton,
heap_hton.name,
NULL,
heap_hton.comment,
NULL,
NULL,
0
}
mysql_declare_plugin_end;

View File

@ -42,6 +42,7 @@ have disables the InnoDB inlining in this file. */
#define MAX_ULONG_BIT ((ulong) 1 << (sizeof(ulong)*8-1))
#ifdef WITH_INNOBASE_STORAGE_ENGINE
#include "ha_innodb.h"
pthread_mutex_t innobase_share_mutex, /* to protect innobase_open_files */
@ -7432,3 +7433,19 @@ bool ha_innobase::check_if_incompatible_data(
return COMPATIBLE_DATA_YES;
}
mysql_declare_plugin(innobase)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&innobase_hton,
innobase_hton.name,
"Innobase OY",
"InnoDB Storage Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;
#endif

View File

@ -31,6 +31,8 @@
#include "../storage/myisam/rt_index.h"
#endif
#include <mysql/plugin.h>
ulong myisam_recover_options= HA_RECOVER_NONE;
/* bits in myisam_recover_options */
@ -1787,3 +1789,17 @@ bool ha_myisam::check_if_incompatible_data(HA_CREATE_INFO *info,
return COMPATIBLE_DATA_NO;
return COMPATIBLE_DATA_YES;
}
mysql_declare_plugin(myisam)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&myisam_hton,
myisam_hton.name,
"MySQL AB",
"MyISAM Storage Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;

View File

@ -28,6 +28,8 @@
#include "../storage/myisammrg/myrg_def.h"
#endif
#include <mysql/plugin.h>
/*****************************************************************************
** MyISAM MERGE tables
*****************************************************************************/
@ -573,3 +575,16 @@ bool ha_myisammrg::check_if_incompatible_data(HA_CREATE_INFO *info,
*/
return COMPATIBLE_DATA_NO;
}
mysql_declare_plugin(myisammrg)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&myisammrg_hton,
myisammrg_hton.name,
"MySQL AB",
"MyISAMMRG Storage Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;

View File

@ -27,6 +27,7 @@
#include "mysql_priv.h"
#include <my_dir.h>
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
#include "ha_ndbcluster.h"
#include <ndbapi/NdbApi.hpp>
#include <ndbapi/NdbScanFilter.hpp>
@ -36,6 +37,8 @@
#include "ha_ndbcluster_binlog.h"
#include "ha_ndbcluster_tables.h"
#include <mysql/plugin.h>
#ifdef ndb_dynamite
#undef assert
#define assert(x) do { if(x) break; ::printf("%s %d: assert failed: %s\n", __FILE__, __LINE__, #x); ::fflush(stdout); ::signal(SIGABRT,SIG_DFL); ::abort(); ::kill(::getpid(),6); ::kill(::getpid(),9); } while (0)
@ -10253,3 +10256,19 @@ static int ndbcluster_fill_files_table(THD *thd, TABLE_LIST *tables, COND *cond)
}
DBUG_RETURN(0);
}
mysql_declare_plugin(ndbcluster)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&ndbcluster_hton,
ndbcluster_hton.name,
"MySQL AB",
"NDB Storage Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;
#endif

View File

@ -16,6 +16,7 @@
*/
#include "mysql_priv.h"
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
#include "ha_ndbcluster.h"
#ifdef HAVE_NDB_BINLOG
@ -3648,3 +3649,4 @@ ndbcluster_show_status_binlog(THD* thd, stat_print_fn *stat_print,
}
#endif /* HAVE_NDB_BINLOG */
#endif

View File

@ -54,8 +54,11 @@
#include "mysql_priv.h"
#ifdef WITH_PARTITION_STORAGE_ENGINE
#include "ha_partition.h"
#include <mysql/plugin.h>
static const char *ha_par_ext= ".par";
#ifdef NOT_USED
static int free_share(PARTITION_SHARE * share);
@ -5438,3 +5441,19 @@ static int free_share(PARTITION_SHARE *share)
return 0;
}
#endif /* NOT_USED */
mysql_declare_plugin(partition)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&partition_hton,
partition_hton.name,
"Mikael Ronstrom, MySQL AB",
"Partitioning Support",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;
#endif

View File

@ -35,6 +35,7 @@
#define NDB_MAX_ATTRIBUTES_IN_TABLE 128
#include "ha_ndbcluster.h"
#endif
#ifdef WITH_PARTITION_STORAGE_ENGINE
#include "ha_partition.h"
#endif
@ -43,7 +44,10 @@
#include "ha_innodb.h"
#endif
extern handlerton *sys_table_types[];
/* While we have legacy_db_type, we have this array to
check for dups and to find handlerton from legacy_db_type.
Remove when legacy_db_type is finally gone */
static handlerton *installed_htons[128];
#define BITMAP_STACKBUF_SIZE (128/8)
@ -138,30 +142,8 @@ handlerton *ha_resolve_by_name(THD *thd, LEX_STRING *name)
}
struct plugin_find_dbtype_st
{
enum legacy_db_type db_type;
handlerton *hton;
};
static my_bool plugin_find_dbtype(THD *unused, st_plugin_int *plugin,
void *arg)
{
handlerton *types= (handlerton *) plugin->plugin->info;
if (types->db_type == ((struct plugin_find_dbtype_st *)arg)->db_type)
{
((struct plugin_find_dbtype_st *)arg)->hton= types;
return TRUE;
}
return FALSE;
}
const char *ha_get_storage_engine(enum legacy_db_type db_type)
{
struct plugin_find_dbtype_st info;
switch (db_type)
{
case DB_TYPE_DEFAULT:
@ -169,13 +151,10 @@ const char *ha_get_storage_engine(enum legacy_db_type db_type)
case DB_TYPE_UNKNOWN:
return "UNKNOWN";
default:
info.db_type= db_type;
if (!plugin_foreach(NULL, plugin_find_dbtype,
MYSQL_STORAGE_ENGINE_PLUGIN, &info))
if (db_type > DB_TYPE_UNKNOWN && db_type < DB_TYPE_DEFAULT &&
installed_htons[db_type])
return installed_htons[db_type]->name;
return "*NONE*";
return info.hton->name;
}
}
@ -190,8 +169,6 @@ static handler *create_default(TABLE_SHARE *table)
handlerton *ha_resolve_by_legacy_type(THD *thd, enum legacy_db_type db_type)
{
struct plugin_find_dbtype_st info;
switch (db_type)
{
case DB_TYPE_DEFAULT:
@ -202,12 +179,9 @@ handlerton *ha_resolve_by_legacy_type(THD *thd, enum legacy_db_type db_type)
case DB_TYPE_UNKNOWN:
return NULL;
default:
info.db_type= db_type;
if (!plugin_foreach(NULL, plugin_find_dbtype,
MYSQL_STORAGE_ENGINE_PLUGIN, &info))
if (db_type > DB_TYPE_UNKNOWN && db_type < DB_TYPE_DEFAULT)
return installed_htons[db_type];
return NULL;
return info.hton;
}
}
@ -394,32 +368,77 @@ static int ha_finish_errors(void)
}
static void ha_was_inited_ok(handlerton *ht)
int ha_finalize_handlerton(st_plugin_int *plugin)
{
uint tmp= ht->savepoint_offset;
ht->savepoint_offset= savepoint_alloc_size;
savepoint_alloc_size+= tmp;
ht->slot= total_ha++;
if (ht->prepare)
total_ha_2pc++;
}
handlerton *hton;
DBUG_ENTER("ha_finalize_handlerton");
int ha_initialize_handlerton(handlerton *hton)
{
DBUG_ENTER("ha_initialize_handlerton");
if (hton == NULL)
if (!(hton= (handlerton *) plugin->plugin->info))
DBUG_RETURN(1);
switch (hton->state)
{
case SHOW_OPTION_NO:
case SHOW_OPTION_DISABLED:
break;
case SHOW_OPTION_YES:
if (hton->panic && hton->panic(HA_PANIC_CLOSE))
DBUG_RETURN(1);
if (installed_htons[hton->db_type] == hton)
installed_htons[hton->db_type]= NULL;
break;
};
DBUG_RETURN(0);
}
int ha_initialize_handlerton(st_plugin_int *plugin)
{
handlerton *hton;
DBUG_ENTER("ha_initialize_handlerton");
if (!(hton= (handlerton *) plugin->plugin->info))
DBUG_RETURN(1);
/* for the sake of sanity, we set the handlerton name to be the
same as the plugin name */
hton->name= plugin->name.str;
switch (hton->state) {
case SHOW_OPTION_NO:
break;
case SHOW_OPTION_YES:
if (!hton->init || !hton->init())
{
ha_was_inited_ok(hton);
uint tmp= hton->savepoint_offset;
hton->savepoint_offset= savepoint_alloc_size;
savepoint_alloc_size+= tmp;
hton->slot= total_ha++;
if (hton->prepare)
total_ha_2pc++;
/* now check the db_type for conflict */
if (hton->db_type <= DB_TYPE_UNKNOWN ||
hton->db_type >= DB_TYPE_DEFAULT ||
installed_htons[hton->db_type])
{
int idx= (int) DB_TYPE_FIRST_DYNAMIC;
while (idx < (int) DB_TYPE_DEFAULT && installed_htons[idx])
idx++;
if (idx == (int) DB_TYPE_DEFAULT)
{
sql_print_warning("Too many storage engines!");
DBUG_RETURN(1);
}
if (hton->db_type != DB_TYPE_UNKNOWN)
sql_print_warning("Storage engine '%s' has conflicting typecode. "
"Assigning value %d.", hton->name, idx);
hton->db_type= (enum legacy_db_type) idx;
}
installed_htons[hton->db_type]= hton;
break;
}
/* fall through */
@ -436,7 +455,7 @@ static my_bool init_handlerton(THD *unused1, st_plugin_int *plugin,
{
if (plugin->state == PLUGIN_IS_UNINITIALIZED)
{
ha_initialize_handlerton((handlerton *) plugin->plugin->info);
ha_initialize_handlerton(plugin);
plugin->state= PLUGIN_IS_READY;
}
return FALSE;
@ -447,12 +466,15 @@ int ha_init()
{
int error= 0;
total_ha= savepoint_alloc_size= 0;
DBUG_ENTER("ha_init");
bzero(installed_htons, sizeof(installed_htons));
if (ha_init_errors())
return 1;
DBUG_RETURN(1);
if (plugin_foreach(NULL, init_handlerton, MYSQL_STORAGE_ENGINE_PLUGIN, 0))
return 1;
DBUG_RETURN(1);
DBUG_ASSERT(total_ha < MAX_HA);
/*
@ -462,37 +484,7 @@ int ha_init()
*/
opt_using_transactions= total_ha>(ulong)opt_bin_log;
savepoint_alloc_size+= sizeof(SAVEPOINT);
return error;
}
int ha_register_builtin_plugins()
{
handlerton **hton;
uint size= 0;
struct st_mysql_plugin *plugin;
DBUG_ENTER("ha_register_builtin_plugins");
for (hton= sys_table_types; *hton; hton++)
size+= sizeof(struct st_mysql_plugin);
if (!(plugin= (struct st_mysql_plugin *)
my_once_alloc(size, MYF(MY_WME | MY_ZEROFILL))))
DBUG_RETURN(1);
for (hton= sys_table_types; *hton; hton++, plugin++)
{
plugin->type= MYSQL_STORAGE_ENGINE_PLUGIN;
plugin->info= *hton;
plugin->version= 0;
plugin->name= (*hton)->name;
plugin->author= NULL;
plugin->descr= (*hton)->comment;
if (plugin_register_builtin(plugin))
DBUG_RETURN(1);
}
DBUG_RETURN(0);
DBUG_RETURN(error);
}

View File

@ -233,6 +233,7 @@ enum legacy_db_type
DB_TYPE_BLACKHOLE_DB,
DB_TYPE_PARTITION_DB,
DB_TYPE_BINLOG,
DB_TYPE_FIRST_DYNAMIC=32,
DB_TYPE_DEFAULT=127 // Must be last
};
@ -1552,8 +1553,8 @@ static inline bool ha_storage_engine_is_enabled(const handlerton *db_type)
/* basic stuff */
int ha_init(void);
int ha_register_builtin_plugins();
int ha_initialize_handlerton(handlerton *hton);
int ha_initialize_handlerton(st_plugin_int *plugin);
int ha_finalize_handlerton(st_plugin_int *plugin);
TYPELIB *ha_known_exts(void);
int ha_panic(enum ha_panic_function flag);

View File

@ -1,72 +0,0 @@
#include "mysql_priv.h"
extern handlerton heap_hton;
extern handlerton myisam_hton;
extern handlerton myisammrg_hton;
extern handlerton binlog_hton;
#ifdef WITH_INNOBASE_STORAGE_ENGINE
extern handlerton innobase_hton;
#endif
#ifdef WITH_BERKELEY_STORAGE_ENGINE
extern handlerton berkeley_hton;
#endif
#ifdef WITH_EXAMPLE_STORAGE_ENGINE
extern handlerton example_hton;
#endif
#ifdef WITH_ARCHIVE_STORAGE_ENGINE
extern handlerton archive_hton;
#endif
#ifdef WITH_CSV_STORAGE_ENGINE
extern handlerton tina_hton;
#endif
#ifdef WITH_BLACKHOLE_STORAGE_ENGINE
extern handlerton blackhole_hton;
#endif
#ifdef WITH_FEDERATED_STORAGE_ENGINE
extern handlerton federated_hton;
#endif
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
extern handlerton ndbcluster_hton;
#endif
#ifdef WITH_PARTITION_STORAGE_ENGINE
extern handlerton partition_hton;
#endif
/*
This array is used for processing compiled in engines.
*/
handlerton *sys_table_types[]=
{
&heap_hton,
&myisam_hton,
#ifdef WITH_INNOBASE_STORAGE_ENGINE
&innobase_hton,
#endif
#ifdef WITH_BERKELEY_STORAGE_ENGINE
&berkeley_hton,
#endif
#ifdef WITH_EXAMPLE_STORAGE_ENGINE
&example_hton,
#endif
#ifdef WITH_ARCHIVE_STORAGE_ENGINE
&archive_hton,
#endif
#ifdef WITH_CSV_STORAGE_ENGINE
&tina_hton,
#endif
#ifdef WITH_BLACKHOLE_STORAGE_ENGINE
&blackhole_hton,
#endif
#ifdef WITH_FEDERATED_STORAGE_ENGINE
&federated_hton,
#endif
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
&ndbcluster_hton,
#endif
#ifdef WITH_PARTITION_STORAGE_ENGINE
&partition_hton,
#endif
&myisammrg_hton,
&binlog_hton,
NULL
};

View File

@ -1,14 +0,0 @@
#include "mysql_priv.h"
extern handlerton heap_hton,myisam_hton,myisammrg_hton,
binlog_hton@mysql_se_decls@;
/*
This array is used for processing compiled in engines.
*/
handlerton *sys_table_types[]=
{
&heap_hton,&myisam_hton@mysql_se_htons@,&myisammrg_hton,&binlog_hton,NULL
};

View File

@ -30,6 +30,8 @@
#include "message.h"
#endif
#include <mysql/plugin.h>
/* max size of the log message */
#define MAX_LOG_BUFFER_SIZE 1024
#define MAX_USER_HOST_SIZE 512
@ -4343,3 +4345,16 @@ err1:
return 1;
}
mysql_declare_plugin(binlog)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&binlog_hton,
binlog_hton.name,
"MySQL AB",
"Binlog Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;

View File

@ -2637,12 +2637,6 @@ static int init_common_variables(const char *conf_file_name, int argc,
return 1;
}
if (ha_register_builtin_plugins())
{
sql_print_error("Failed to register built-in storage engines.");
return 1;
}
load_defaults(conf_file_name, groups, &argc, &argv);
defaults_argv=argv;
get_options(argc,argv);
@ -3012,6 +3006,19 @@ static int init_server_components()
}
}
if (xid_cache_init())
{
sql_print_error("Out of memory");
unireg_abort(1);
}
/* We have to initialize the storage engines before CSV logging */
if (ha_init())
{
sql_print_error("Can't init databases");
unireg_abort(1);
}
#ifdef WITH_CSV_STORAGE_ENGINE
if (opt_bootstrap)
log_output_options= LOG_FILE;
@ -3175,17 +3182,6 @@ server.");
using_update_log=1;
}
if (xid_cache_init())
{
sql_print_error("Out of memory");
unireg_abort(1);
}
if (ha_init())
{
sql_print_error("Can't init databases");
unireg_abort(1);
}
/*
Check that the default storage engine is actually available.
*/

View File

@ -21,9 +21,10 @@
#endif
#include "mysql_priv.h"
#include "ha_partition.h"
#ifdef WITH_PARTITION_STORAGE_ENGINE
#include "ha_partition.h"
partition_info *partition_info::get_clone()
{

13
sql/sql_builtin.cc.in Normal file
View File

@ -0,0 +1,13 @@
#include <mysql/plugin.h>
typedef struct st_mysql_plugin builtin_plugin[];
extern builtin_plugin
builtin_binlog_plugin@mysql_plugin_defs@;
struct st_mysql_plugin *mysqld_builtins[]=
{
builtin_binlog_plugin@mysql_plugin_defs@,(struct st_mysql_plugin *)0
};

View File

@ -21,7 +21,9 @@
*/
#include "mysql_priv.h"
#ifdef WITH_INNOBASE_STORAGE_ENGINE
#include "ha_innodb.h"
#endif
#include "sql_select.h"
#include "sp_head.h"
#include "sql_trigger.h"

View File

@ -19,6 +19,8 @@
#define REPORT_TO_LOG 1
#define REPORT_TO_USER 2
extern struct st_mysql_plugin *mysqld_builtins[];
char *opt_plugin_dir_ptr;
char opt_plugin_dir[FN_REFLEN];
LEX_STRING plugin_type_names[]=
@ -548,6 +550,53 @@ err:
DBUG_RETURN(1);
}
static int plugin_finalize(THD *thd, struct st_plugin_int *plugin)
{
int rc;
DBUG_ENTER("plugin_finalize");
if (plugin->ref_count)
{
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
"Plugin is busy and will be uninstalled on shutdown");
goto err;
}
switch (plugin->plugin->type)
{
case MYSQL_STORAGE_ENGINE_PLUGIN:
if (ha_finalize_handlerton(plugin))
{
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
"Storage engine shutdown failed. "
"It will be uninstalled on shutdown");
sql_print_warning("Storage engine '%s' shutdown failed. "
"It will be uninstalled on shutdown", plugin->name.str);
goto err;
}
break;
default:
break;
}
if (plugin->plugin->deinit)
{
if ((rc= plugin->plugin->deinit()))
{
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
"Plugin deinit failed. "
"It will be uninstalled on shutdown");
sql_print_warning("Plugin '%s' deinit failed. "
"It will be uninstalled on shutdown", plugin->name.str);
goto err;
}
}
DBUG_RETURN(0);
err:
DBUG_RETURN(1);
}
static void plugin_call_initializer(void)
{
uint i;
@ -606,6 +655,8 @@ static byte *get_hash_key(const byte *buff, uint *length,
int plugin_init(void)
{
int i;
struct st_mysql_plugin **builtins;
struct st_mysql_plugin *plugin;
DBUG_ENTER("plugin_init");
if (initialized)
@ -625,6 +676,16 @@ int plugin_init(void)
get_hash_key, NULL, 0))
goto err;
}
/* Register all the built-in plugins */
for (builtins= mysqld_builtins; *builtins; builtins++)
{
for (plugin= *builtins; plugin->info; plugin++)
{
if (plugin_register_builtin(plugin))
goto err;
}
}
initialized= 1;
@ -831,18 +892,10 @@ my_bool mysql_uninstall_plugin(THD *thd, LEX_STRING *name)
goto err;
}
if (plugin->ref_count)
{
plugin->state= PLUGIN_IS_DELETED;
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0,
"Plugin is not deleted, waiting on tables.");
}
else
{
if (plugin->plugin->deinit)
plugin->plugin->deinit();
if (!plugin_finalize(thd, plugin))
plugin_del(name);
}
else
plugin->state= PLUGIN_IS_DELETED;
table->field[0]->store(name->str, name->length, system_charset_info);
table->file->extra(HA_EXTRA_RETRIEVE_ALL_COLS);

View File

@ -111,6 +111,10 @@ static my_bool show_plugins(THD *thd, st_plugin_int *plugin,
CHARSET_INFO *cs= system_charset_info;
char version_buf[20];
/* we normally hide all the built-in plugins */
if (!plugin->plugin_dl && !thd->lex->verbose)
return 0;
restore_record(table, s->default_values);
table->field[0]->store(plugin->name.str, plugin->name.length, cs);
@ -3000,46 +3004,53 @@ int fill_schema_charsets(THD *thd, TABLE_LIST *tables, COND *cond)
}
int fill_schema_engines(THD *thd, TABLE_LIST *tables, COND *cond)
static my_bool iter_schema_engines(THD *thd, st_plugin_int *plugin,
void *ptable)
{
TABLE *table= (TABLE *) ptable;
handlerton *hton= (handlerton *) plugin->plugin->info;
const char *wild= thd->lex->wild ? thd->lex->wild->ptr() : NullS;
TABLE *table= tables->table;
CHARSET_INFO *scs= system_charset_info;
handlerton **types;
DBUG_ENTER("iter_schema_engines");
DBUG_ENTER("fill_schema_engines");
for (types= sys_table_types; *types; types++)
if (!(hton->flags & HTON_HIDDEN))
{
if ((*types)->flags & HTON_HIDDEN)
continue;
if (!(wild && wild[0] &&
wild_case_compare(scs, (*types)->name,wild)))
wild_case_compare(scs, hton->name,wild)))
{
const char *tmp;
restore_record(table, s->default_values);
table->field[0]->store((*types)->name, strlen((*types)->name), scs);
tmp= (*types)->state ? "DISABLED" : "ENABLED";
table->field[0]->store(hton->name, strlen(hton->name), scs);
tmp= hton->state ? "DISABLED" : "ENABLED";
table->field[1]->store( tmp, strlen(tmp), scs);
table->field[2]->store((*types)->comment, strlen((*types)->comment), scs);
tmp= (*types)->commit ? "YES" : "NO";
table->field[2]->store(hton->comment, strlen(hton->comment), scs);
tmp= hton->commit ? "YES" : "NO";
table->field[3]->store( tmp, strlen(tmp), scs);
tmp= (*types)->prepare ? "YES" : "NO";
tmp= hton->prepare ? "YES" : "NO";
table->field[4]->store( tmp, strlen(tmp), scs);
tmp= (*types)->savepoint_set ? "YES" : "NO";
tmp= hton->savepoint_set ? "YES" : "NO";
table->field[5]->store( tmp, strlen(tmp), scs);
if (schema_table_store_record(thd, table))
DBUG_RETURN(1);
}
}
DBUG_RETURN(0);
}
int fill_schema_engines(THD *thd, TABLE_LIST *tables, COND *cond)
{
const char *wild= thd->lex->wild ? thd->lex->wild->ptr() : NullS;
TABLE *table= tables->table;
CHARSET_INFO *scs= system_charset_info;
return plugin_foreach(thd, iter_schema_engines,
MYSQL_STORAGE_ENGINE_PLUGIN, table);
}
int fill_schema_collation(THD *thd, TABLE_LIST *tables, COND *cond)
{
CHARSET_INFO **cs;

View File

@ -8119,7 +8119,7 @@ show_param:
if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES))
YYABORT;
}
| PLUGIN_SYM
| opt_full PLUGIN_SYM
{
LEX *lex= Lex;
WARN_DEPRECATED(yythd, "5.2", "SHOW PLUGIN", "'SHOW PLUGINS'");

View File

@ -14,20 +14,48 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
@ZLIB_INCLUDES@
#called from the top level Makefile
LDADD = libarchive.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a \
@ZLIB_LIBS@
pkglib_LIBRARIES = libarchive.a
MYSQLDATAdir = $(localstatedir)
MYSQLSHAREdir = $(pkgdatadir)
MYSQLBASEdir= $(prefix)
MYSQLLIBdir= $(pkglibdir)
INCLUDES = -I$(top_srcdir)/include \
-I$(top_srcdir)/regex \
-I$(top_srcdir)/sql \
-I$(srcdir) @ZLIB_INCLUDES@
WRAPLIBS=
LDADD =
DEFS = @DEFS@
noinst_HEADERS = ha_archive.h azlib.h
noinst_PROGRAMS = archive_test
EXTRA_LTLIBRARIES = ha_archive.la
pkglib_LTLIBRARIES = @plugin_archive_shared_target@
ha_archive_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
ha_archive_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_archive_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_archive_la_SOURCES = ha_archive.cc azio.c
EXTRA_LIBRARIES = libarchive.a
noinst_LIBRARIES = @plugin_archive_static_target@
libarchive_a_CXXFLAGS = $(AM_CFLAGS)
libarchive_a_CFLAGS = $(AM_CFLAGS)
libarchive_a_SOURCES = ha_archive.cc azio.c
archive_test_SOURCES = archive_test.c azio.c
archive_test_CFLAGS = $(AM_CFLAGS)
archive_test_LDADD = $(top_srcdir)/mysys/libmysys.a \
$(top_srcdir)/dbug/libdbug.a \
$(top_srcdir)/strings/libmystrings.a \
@ZLIB_LIBS@
archive_test_LDFLAGS = @NOINST_LDFLAGS@
noinst_HEADERS = azlib.h
libarchive_a_SOURCES = azio.c
EXTRA_DIST = cmakelists.txt
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -2,5 +2,5 @@ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib)
ADD_LIBRARY(archive azio.c)
ADD_LIBRARY(archive azio.c ha_archive.cc ha_archive.h)
TARGET_LINK_LIBRARIES(archive zlib mysys dbug strings)

View File

@ -19,10 +19,13 @@
#endif
#include "mysql_priv.h"
#include <myisam.h>
#include "ha_archive.h"
#include <my_dir.h>
#include <mysql/plugin.h>
/*
First, if you want to understand storage engines you should look at
ha_example.cc and ha_example.h.
@ -214,6 +217,8 @@ static byte* archive_get_key(ARCHIVE_SHARE *share,uint *length,
bool archive_db_init()
{
DBUG_ENTER("archive_db_init");
if (archive_inited)
DBUG_RETURN(FALSE);
if (pthread_mutex_init(&archive_mutex, MY_MUTEX_INIT_FAST))
goto error;
if (hash_init(&archive_open_tables, system_charset_info, 32, 0, 0,
@ -227,7 +232,6 @@ bool archive_db_init()
DBUG_RETURN(FALSE);
}
error:
have_archive_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
DBUG_RETURN(TRUE);
}
@ -235,14 +239,14 @@ error:
Release the archive handler.
SYNOPSIS
archive_db_end()
archive_db_done()
void
RETURN
FALSE OK
*/
int archive_db_end(ha_panic_function type)
int archive_db_done()
{
if (archive_inited)
{
@ -253,6 +257,12 @@ int archive_db_end(ha_panic_function type)
return 0;
}
int archive_db_end(ha_panic_function type)
{
return archive_db_done();
}
ha_archive::ha_archive(TABLE_SHARE *table_arg)
:handler(&archive_hton, table_arg), delayed_insert(0), bulk_insert(0)
{
@ -830,7 +840,7 @@ int ha_archive::write_row(byte *buf)
if (share->crashed)
DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE);
statistic_increment(table->in_use->status_var.ha_write_count, &LOCK_status);
ha_statistic_increment(&SSV::ha_write_count);
if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_INSERT)
table->timestamp_field->set_time();
pthread_mutex_lock(&share->mutex);
@ -1147,8 +1157,7 @@ int ha_archive::rnd_next(byte *buf)
DBUG_RETURN(HA_ERR_END_OF_FILE);
scan_rows--;
statistic_increment(table->in_use->status_var.ha_read_rnd_next_count,
&LOCK_status);
ha_statistic_increment(&SSV::ha_read_rnd_next_count);
current_position= aztell(&archive);
rc= get_row(&archive, buf);
@ -1184,8 +1193,7 @@ void ha_archive::position(const byte *record)
int ha_archive::rnd_pos(byte * buf, byte *pos)
{
DBUG_ENTER("ha_archive::rnd_pos");
statistic_increment(table->in_use->status_var.ha_read_rnd_next_count,
&LOCK_status);
ha_statistic_increment(&SSV::ha_read_rnd_next_count);
current_position= (my_off_t)my_get_ptr(pos, ref_length);
(void)azseek(&archive, current_position, SEEK_SET);
@ -1369,8 +1377,8 @@ THR_LOCK_DATA **ha_archive::store_lock(THD *thd,
*/
if ((lock_type >= TL_WRITE_CONCURRENT_INSERT &&
lock_type <= TL_WRITE) && !thd->in_lock_tables
&& !thd->tablespace_op)
lock_type <= TL_WRITE) && !thd_in_lock_tables(thd)
&& !thd_tablespace_op(thd))
lock_type = TL_WRITE_ALLOW_WRITE;
/*
@ -1381,7 +1389,7 @@ THR_LOCK_DATA **ha_archive::store_lock(THD *thd,
concurrent inserts to t2.
*/
if (lock_type == TL_READ_NO_INSERT && !thd->in_lock_tables)
if (lock_type == TL_READ_NO_INSERT && !thd_in_lock_tables(thd))
lock_type = TL_READ;
lock.type=lock_type;
@ -1494,11 +1502,11 @@ int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
{
int rc= 0;
byte *buf;
const char *old_proc_info=thd->proc_info;
const char *old_proc_info;
ha_rows count= share->rows_recorded;
DBUG_ENTER("ha_archive::check");
thd->proc_info= "Checking table";
old_proc_info= thd_proc_info(thd, "Checking table");
/* Flush any waiting data */
azflush(&(share->archive_write), Z_SYNC_FLUSH);
share->forced_flushes++;
@ -1523,7 +1531,7 @@ int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
my_free((char*)buf, MYF(0));
thd->proc_info= old_proc_info;
thd_proc_info(thd, old_proc_info);
if ((rc && rc != HA_ERR_END_OF_FILE) || count)
{
@ -1548,3 +1556,17 @@ bool ha_archive::check_and_repair(THD *thd)
DBUG_RETURN(repair(thd, &check_opt));
}
mysql_declare_plugin(archive)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&archive_hton,
archive_hton.name,
"Brian Aker, MySQL AB",
"Archive Storage Engine",
NULL, /* Plugin Init */
archive_db_done, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;

View File

@ -19,7 +19,7 @@
#endif
#include <zlib.h>
#include "../storage/archive/azlib.h"
#include "azlib.h"
/*
Please read ha_archive.cc first. If you are looking for more general

View File

@ -0,0 +1,51 @@
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#called from the top level Makefile
MYSQLDATAdir = $(localstatedir)
MYSQLSHAREdir = $(pkgdatadir)
MYSQLBASEdir= $(prefix)
MYSQLLIBdir= $(pkglibdir)
INCLUDES = -I$(top_srcdir)/include \
-I$(top_srcdir)/regex \
-I$(top_srcdir)/sql \
-I$(srcdir)
WRAPLIBS=
LDADD =
DEFS = @DEFS@
noinst_HEADERS = ha_blackhole.h
EXTRA_LTLIBRARIES = ha_blackhole.la
pkglib_LTLIBRARIES = @plugin_blackhole_shared_target@
ha_blackhole_la_LDFLAGS=-module -rpath $(MYSQLLIBdir)
ha_blackhole_la_CXXFLAGS=$(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_blackhole_la_CFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_blackhole_la_SOURCES=ha_blackhole.cc
EXTRA_LIBRARIES = libblackhole.a
noinst_LIBRARIES = @plugin_blackhole_static_target@
libblackhole_a_CXXFLAGS=$(AM_CFLAGS)
libblackhole_a_CFLAGS = $(AM_CFLAGS)
libblackhole_a_SOURCES= ha_blackhole.cc
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -0,0 +1,5 @@
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
ADD_LIBRARY(blackhole ha_blackhole.cc ha_blackhole.h)

View File

@ -22,6 +22,8 @@
#include "mysql_priv.h"
#include "ha_blackhole.h"
#include <mysql/plugin.h>
/* Static declarations for handlerton */
static handler *blackhole_create_handler(TABLE_SHARE *table);
@ -250,3 +252,15 @@ int ha_blackhole::index_last(byte * buf)
DBUG_RETURN(HA_ERR_END_OF_FILE);
}
mysql_declare_plugin(blackhole)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&blackhole_hton,
blackhole_hton.name,
"MySQL AB",
"Blackhole Storage Engine",
NULL, /* Plugin Init */
NULL, /* Plugin Deinit */
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;

View File

@ -25,15 +25,20 @@ INCLUDES = -I$(top_builddir)/include \
-I$(top_srcdir)/regex \
-I$(top_srcdir)/sql \
-I$(srcdir)
pkglib_LIBRARIES = libcsv.a
LDADD =
DEFS = @DEFS@
noinst_HEADERS = ha_tina.h
EXTRA_LTLIBRARIES = ha_csv.la
pkglib_LTLIBRARIES = @plugin_csv_shared_target@
ha_csv_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
ha_csv_la_CXXFLAGS = $(AM_CFLAGS) -DMYSQL_PLUGIN
ha_csv_la_SOURCES = ha_tina.cc
EXTRA_LIBRARIES = libcsv.a
noinst_LIBRARIES = @plugin_csv_static_target@
libcsv_a_CXXFLAGS = $(AM_CFLAGS)
noinst_HEADERS = ha_tina.h
libcsv_a_SOURCES = ha_tina.cc
# Don't update the files from bitkeeper

View File

@ -1398,8 +1398,8 @@ bool ha_tina::check_if_incompatible_data(HA_CREATE_INFO *info,
return COMPATIBLE_DATA_YES;
}
#ifdef MYSQL_PLUGIN
mysql_declare_plugin
mysql_declare_plugin(csv)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&tina_hton,
@ -1411,4 +1411,4 @@ mysql_declare_plugin
0x0100 /* 1.0 */,
}
mysql_declare_plugin_end;
#endif

View File

@ -1,15 +1,15 @@
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@ -26,14 +26,26 @@ INCLUDES = -I$(top_srcdir)/include \
-I$(srcdir)
WRAPLIBS=
pkglib_LIBRARIES = libexample.a
noinst_HEADERS = ha_example.h
libexample_a_SOURCES = ha_example.cc
EXTRA_DIST = cmakelists.txt
LDADD =
DEFS = -DMYSQL_SERVER @DEFS@
DEFS = @DEFS@
noinst_HEADERS = ha_example.h
EXTRA_LTLIBRARIES = ha_example.la
pkglib_LTLIBRARIES = @plugin_example_shared_target@
ha_example_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
ha_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_example_la_SOURCES = ha_example.cc
EXTRA_LIBRARIES = libexample.a
noinst_LIBRARIES = @plugin_example_static_target@
libexample_a_CXXFLAGS = $(AM_CFLAGS)
libexample_a_CFLAGS = $(AM_CFLAGS)
libexample_a_SOURCES= ha_example.cc
# Don't update the files from bitkeeper
%::SCCS/s.%

View File

@ -742,8 +742,8 @@ int ha_example::create(const char *name, TABLE *table_arg,
DBUG_RETURN(0);
}
#ifdef MYSQL_PLUGIN
mysql_declare_plugin
mysql_declare_plugin(example)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&example_hton,
@ -755,4 +755,4 @@ mysql_declare_plugin
0x0001 /* 0.1 */,
}
mysql_declare_plugin_end;
#endif

View File

@ -79,5 +79,34 @@ EXTRA_DIST = include/btr0btr.h include/btr0btr.ic include/btr0cur.h include/btr
include/ut0sort.h include/ut0ut.h include/ut0ut.ic include/ut0vec.h include/ut0vec.ic \
cmakelists.txt
noinst_LIBRARIES = libinnobase.a
libinnobase_a_LIBADD = usr/libusr.a srv/libsrv.a dict/libdict.a \
que/libque.a srv/libsrv.a ibuf/libibuf.a \
row/librow.a pars/libpars.a btr/libbtr.a \
trx/libtrx.a read/libread.a usr/libusr.a \
buf/libbuf.a ibuf/libibuf.a eval/libeval.a \
log/liblog.a fsp/libfsp.a fut/libfut.a \
fil/libfil.a lock/liblock.a mtr/libmtr.a \
page/libpage.a rem/librem.a thr/libthr.a \
sync/libsync.a data/libdata.a mach/libmach.a \
ha/libha.a dyn/libdyn.a mem/libmem.a \
ut/libut.a os/libos.a ut/libut.a
libinnobase_a_SOURCES =
libinnobase.a: $(libinnobase_a_LIBADD)
-rm -f $@
if test "$(host_os)" = "netware" ; \
then \
$(libmysqld_a_AR) $@ $(libinnobase_a_LIBADD) ; \
else \
(for arc in $(libinnobase_a_LIBADD); do \
arpath=`echo $$arc|sed 's|[^/]*$$||'`; \
$(AR) t $$arc|xargs -n 1 find $$arpath -name; \
$(AR) t $$arc|xargs -n 1 find `dirname $$arpath` -path \*/`basename $$arpath`/\* -name; \
done ) | sort -u | xargs $(AR) cq $@ ; \
$(RANLIB) $@ ; \
fi
# Don't update the files from bitkeeper
%::SCCS/s.%