Commit 0f660db3 authored by unknown's avatar unknown

merge

parents 3967b6cf 5f26e738
...@@ -280,7 +280,7 @@ dnl --------------------------------------------------------------------------- ...@@ -280,7 +280,7 @@ dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CONFIGURE_PLUGINS dnl Macro: MYSQL_CONFIGURE_PLUGINS
dnl dnl
dnl SYNOPSIS dnl SYNOPSIS
dnl MYSQL_PLUGIN_DEPENDS([name,name...]) dnl MYSQL_CONFIGURE_PLUGINS([name,name...])
dnl dnl
dnl DESCRIPTION dnl DESCRIPTION
dnl Used last, emits all required shell code to configure the plugins dnl Used last, emits all required shell code to configure the plugins
...@@ -735,13 +735,13 @@ dnl Emits shell script for checking configure arguments ...@@ -735,13 +735,13 @@ dnl Emits shell script for checking configure arguments
dnl Arguments to this macro is default value for selected plugins dnl Arguments to this macro is default value for selected plugins
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[ AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[
__MYSQL_CHECK_PLUGIN_ARGS(m4_default([$1], [none])) __MYSQL_CHECK_PLUGIN_ARGS(m4_default([$1], [default]))
]) ])
AC_DEFUN([__MYSQL_CHECK_PLUGIN_ARGS],[ AC_DEFUN([__MYSQL_CHECK_PLUGIN_ARGS],[
AC_ARG_WITH([plugins], AC_ARG_WITH([plugins],
AS_HELP_STRING([--with-plugins=PLUGIN[[[[[,PLUGIN..]]]]]], AS_HELP_STRING([--with-plugins=PLUGIN[[[[[,PLUGIN..]]]]]],
[Plugins to include in mysqld. (default is: $1) Must be a [Plugins to include in mysqld. Must be a
configuration name or a comma separated list of plugins.]) configuration name or a comma separated list of plugins.])
AS_HELP_STRING([], AS_HELP_STRING([],
[Available configurations are:] dnl [Available configurations are:] dnl
......
...@@ -2387,7 +2387,7 @@ MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support], ...@@ -2387,7 +2387,7 @@ MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support],
dnl -- ndbcluster requires partition to be enabled dnl -- ndbcluster requires partition to be enabled
MYSQL_CONFIGURE_PLUGINS([none]) MYSQL_CONFIGURE_PLUGINS([default])
# Only build client code? # Only build client code?
AC_ARG_WITH(server, AC_ARG_WITH(server,
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
# API: set mel_keep_control_file=1 if want to keep control file; # API: set mel_keep_control_file=1 if want to keep control file;
# uses vardir, port and socket. # uses vardir, port and socket.
connection default;
let $default_db=`select database()`;
connection admin; connection admin;
-- echo * shut down mysqld, removed logs, restarted it -- echo * shut down mysqld, removed logs, restarted it
...@@ -71,4 +74,4 @@ EOF ...@@ -71,4 +74,4 @@ EOF
connection default; connection default;
# the effect of "use" is lost after a restart so we are back into db "test", # the effect of "use" is lost after a restart so we are back into db "test",
# because connection 'default' was created with db "test". # because connection 'default' was created with db "test".
use mysqltest; eval use $default_db;
set global maria_log_file_size=4294967295;
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
set global maria_checkpoint_interval=0;
create table t2 (a varchar(100)) engine=myisam;
insert into t2 select repeat('z',100);
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
* shut down mysqld, removed logs, restarted it
use mysqltest;
create table t1 (a varchar(100)) engine=maria transactional=1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(100) DEFAULT NULL
) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
show engine maria logs;
Type Name Status
MARIA Size 16384 maria_log.00000001 unknown
insert into t1 values('a');
insert into t1 select * from t2;
show engine maria logs;
Type Name Status
MARIA Size 24576 maria_log.00000001 unknown
* shut down mysqld, removed logs, restarted it
use mysqltest;
truncate table t1;
insert into t1 select * from t2;
show engine maria logs;
Type Name Status
MARIA Size 16384 maria_log.00000001 unknown
drop table t1;
* shut down mysqld, removed logs, restarted it
use mysqltest;
create table t1 (a varchar(100)) engine=maria transactional=1;
insert into t1 values('a');
create table if not exists t1 select * from t2;
Warnings:
Note 1050 Table 't1' already exists
show engine maria logs;
Type Name Status
MARIA Size 24576 maria_log.00000001 unknown
* shut down mysqld, removed logs, restarted it
use mysqltest;
drop table t1;
create table t1 engine=maria transactional=1 select * from t2;
show engine maria logs;
Type Name Status
MARIA Size 16384 maria_log.00000001 unknown
drop database mysqltest;
* shut down mysqld, removed logs, restarted it
use test;
set global storage_engine=maria; set global storage_engine=maria;
set session storage_engine=maria; set session storage_engine=maria;
set global maria_log_file_size=4294967295; set global maria_log_file_size=4294967295;
......
# test of cases where we can safely disable logging
--source include/have_maria.inc
set global maria_log_file_size=4294967295;
--disable_warnings
drop database if exists mysqltest;
--enable_warnings
create database mysqltest;
connect (admin, 127.0.0.1, root,,mysqltest,,);
--enable_reconnect
connection default;
use mysqltest;
--enable_reconnect
# checkpoints can make log unrepeatable
let $def_checkinterval=`select @@global.maria_checkpoint_interval`;
set global maria_checkpoint_interval=0;
# Prepare table to help for big load
create table t2 (a varchar(100)) engine=myisam;
insert into t2 select repeat('z',100);
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
# INSERT SELECT
# no optimization because table not empty
# SHOW ENGINE MARIA LOGS could be influenced by older logs
-- source include/maria_empty_logs.inc
create table t1 (a varchar(100)) engine=maria transactional=1;
show create table t1;
--replace_regex /; .+maria_log/maria_log/
show engine maria logs;
insert into t1 values('a');
insert into t1 select * from t2;
--replace_regex /; .+maria_log/maria_log/
show engine maria logs;
# optimization because table is empty
-- source include/maria_empty_logs.inc
truncate table t1;
insert into t1 select * from t2;
--replace_regex /; .+maria_log/maria_log/
show engine maria logs;
drop table t1;
# same for CREATE SELECT
# no optimization because table not empty
-- source include/maria_empty_logs.inc
create table t1 (a varchar(100)) engine=maria transactional=1;
insert into t1 values('a');
create table if not exists t1 select * from t2;
--replace_regex /; .+maria_log/maria_log/
show engine maria logs;
# optimization because table is empty
-- source include/maria_empty_logs.inc
drop table t1;
create table t1 engine=maria transactional=1 select * from t2;
--replace_regex /; .+maria_log/maria_log/
show engine maria logs;
drop database mysqltest;
--disable_result_log
--disable_query_log
eval set global maria_checkpoint_interval=$def_checkinterval;
--enable_result_log
--enable_query_log
-- source include/have_maria.inc -- source include/have_maria.inc
-- source include/big_test.inc -- source include/big_test.inc
# pre-requisites for maria_empty_logs
connect (admin, 127.0.0.1, root,,test,,);
--enable_reconnect
connection default;
--enable_reconnect
# end of pre-requisites
# SHOW ENGINE MARIA LOGS could be influenced by older logs
# Also, possibly automatic checkpoints (see if that happens in
# practice)
-- source include/maria_empty_logs.inc
let $default=`select @@global.storage_engine`; let $default=`select @@global.storage_engine`;
set global storage_engine=maria; set global storage_engine=maria;
set session storage_engine=maria; set session storage_engine=maria;
...@@ -47,6 +60,7 @@ insert into t2 select * from t1; ...@@ -47,6 +60,7 @@ insert into t2 select * from t1;
insert into t1 select * from t2; insert into t1 select * from t2;
set global maria_log_file_size=16777216; set global maria_log_file_size=16777216;
# force a checkpoint to allow log purge
eval set global maria_checkpoint_interval=$def_checkinterval; eval set global maria_checkpoint_interval=$def_checkinterval;
--replace_regex /Size +[0-9]+ ; .+master-data/master-data/ --replace_regex /Size +[0-9]+ ; .+master-data/master-data/
SHOW ENGINE maria logs; SHOW ENGINE maria logs;
......
...@@ -384,7 +384,7 @@ ...@@ -384,7 +384,7 @@
fun:calloc fun:calloc
fun:_dlerror_run fun:_dlerror_run
fun:dlclose fun:dlclose
fun:plugin_dl_del fun:plugin_dl_del(st_mysql_lex_string const*)
} }
{ {
......
...@@ -24,7 +24,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib ...@@ -24,7 +24,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
SET(MARIA_SOURCES ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c SET(MARIA_SOURCES ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c
ma_rnext.c ma_rnext_same.c ma_rnext.c ma_rnext_same.c
ma_search.c ma_page.c ma_key_recover.c ma_key.c ma_search.c ma_page.c ma_key_recover.c ma_key.c
ma_locking.c ma_locking.c ma_state.c
ma_rrnd.c ma_scan.c ma_cache.c ma_rrnd.c ma_scan.c ma_cache.c
ma_statrec.c ma_packrec.c ma_dynrec.c ma_statrec.c ma_packrec.c ma_dynrec.c
ma_blockrec.c ma_bitmap.c ma_blockrec.c ma_bitmap.c
......
...@@ -28,9 +28,9 @@ ...@@ -28,9 +28,9 @@
10 ended transactions since last time it was called. 10 ended transactions since last time it was called.
*/ */
#include <maria_def.h> #include "maria_def.h"
#include "trnman.h" #include "trnman.h"
#include <ma_blockrec.h> #include "ma_blockrec.h"
/** /**
@brief Setup initial start-of-transaction state for a table @brief Setup initial start-of-transaction state for a table
......
MYSQL_STORAGE_ENGINE(maria,, [Maria Storage Engine], MYSQL_STORAGE_ENGINE(maria,, [Maria Storage Engine],
[Crash-safe tables with MyISAM heritage], [max,max-no-ndb]) [Crash-safe tables with MyISAM heritage], [default,max,max-no-ndb])
MYSQL_PLUGIN_DIRECTORY(maria, [storage/maria]) MYSQL_PLUGIN_DIRECTORY(maria, [storage/maria])
MYSQL_PLUGIN_STATIC(maria, [libmaria.a]) MYSQL_PLUGIN_STATIC(maria, [libmaria.a])
# Maria will probably go first into max builds, not all builds, # Maria will probably go first into max builds, not all builds,
......
...@@ -111,10 +111,11 @@ void run_test(const char *test, pthread_handler handler, int n, int m) ...@@ -111,10 +111,11 @@ void run_test(const char *test, pthread_handler handler, int n, int m)
} }
#define ok_read_from(T1, T2, RES) \ #define ok_read_from(T1, T2, RES) \
i= trnman_can_read_from(trn[T1], trn[T2]->trid); \ i= trnman_can_read_from(trn[T1], trid[T2]); \
ok(i == RES, "trn" #T1 " %s read from trn" #T2, i ? "can" : "cannot") ok(i == RES, "trn" #T1 " %s read from trn" #T2, i ? "can" : "cannot")
#define start_transaction(T) \ #define start_transaction(T) \
trn[T]= trnman_new_trn(&mutexes[T], &conds[T], &i + STACK_SIZE) trn[T]= trnman_new_trn(&mutexes[T], &conds[T], &i + STACK_SIZE); \
trid[T]= trn[T]->trid
#define commit(T) trnman_commit_trn(trn[T]) #define commit(T) trnman_commit_trn(trn[T])
#define abort(T) trnman_abort_trn(trn[T]) #define abort(T) trnman_abort_trn(trn[T])
...@@ -122,6 +123,7 @@ void run_test(const char *test, pthread_handler handler, int n, int m) ...@@ -122,6 +123,7 @@ void run_test(const char *test, pthread_handler handler, int n, int m)
void test_trnman_read_from() void test_trnman_read_from()
{ {
TRN *trn[Ntrns]; TRN *trn[Ntrns];
TrID trid[Ntrns];
pthread_mutex_t mutexes[Ntrns]; pthread_mutex_t mutexes[Ntrns];
pthread_cond_t conds[Ntrns]; pthread_cond_t conds[Ntrns];
int i; int i;
...@@ -142,6 +144,7 @@ void test_trnman_read_from() ...@@ -142,6 +144,7 @@ void test_trnman_read_from()
ok_read_from(3, 0, 1); ok_read_from(3, 0, 1);
ok_read_from(3, 1, 0); ok_read_from(3, 1, 0);
ok_read_from(3, 2, 0); ok_read_from(3, 2, 0);
ok_read_from(3, 3, 1);
commit(1); /* commit trn2 */ commit(1); /* commit trn2 */
ok_read_from(3, 1, 0); ok_read_from(3, 1, 0);
commit(3); /* commit trn5 */ commit(3); /* commit trn5 */
...@@ -158,7 +161,7 @@ int main(int argc __attribute__((unused)), char **argv) ...@@ -158,7 +161,7 @@ int main(int argc __attribute__((unused)), char **argv)
MY_INIT(argv[0]); MY_INIT(argv[0]);
my_init(); my_init();
plan(6); plan(7);
if (my_atomic_initialize()) if (my_atomic_initialize())
return exit_status(); return exit_status();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment