Commit 0f660db3 authored by unknown's avatar unknown

merge

parents 3967b6cf 5f26e738
......@@ -280,7 +280,7 @@ dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_CONFIGURE_PLUGINS
dnl
dnl SYNOPSIS
dnl MYSQL_PLUGIN_DEPENDS([name,name...])
dnl MYSQL_CONFIGURE_PLUGINS([name,name...])
dnl
dnl DESCRIPTION
dnl Used last, emits all required shell code to configure the plugins
......@@ -735,13 +735,13 @@ dnl Emits shell script for checking configure arguments
dnl Arguments to this macro is default value for selected plugins
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_ARG_WITH([plugins],
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.])
AS_HELP_STRING([],
[Available configurations are:] dnl
......
......@@ -2387,7 +2387,7 @@ MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support],
dnl -- ndbcluster requires partition to be enabled
MYSQL_CONFIGURE_PLUGINS([none])
MYSQL_CONFIGURE_PLUGINS([default])
# Only build client code?
AC_ARG_WITH(server,
......
......@@ -4,6 +4,9 @@
# API: set mel_keep_control_file=1 if want to keep control file;
# uses vardir, port and socket.
connection default;
let $default_db=`select database()`;
connection admin;
-- echo * shut down mysqld, removed logs, restarted it
......@@ -71,4 +74,4 @@ EOF
connection default;
# the effect of "use" is lost after a restart so we are back into 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 session storage_engine=maria;
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/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`;
set global storage_engine=maria;
set session storage_engine=maria;
......@@ -47,6 +60,7 @@ insert into t2 select * from t1;
insert into t1 select * from t2;
set global maria_log_file_size=16777216;
# force a checkpoint to allow log purge
eval set global maria_checkpoint_interval=$def_checkinterval;
--replace_regex /Size +[0-9]+ ; .+master-data/master-data/
SHOW ENGINE maria logs;
......
......@@ -384,7 +384,7 @@
fun:calloc
fun:_dlerror_run
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
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_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_statrec.c ma_packrec.c ma_dynrec.c
ma_blockrec.c ma_bitmap.c
......
......@@ -28,9 +28,9 @@
10 ended transactions since last time it was called.
*/
#include <maria_def.h>
#include "maria_def.h"
#include "trnman.h"
#include <ma_blockrec.h>
#include "ma_blockrec.h"
/**
@brief Setup initial start-of-transaction state for a table
......
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_STATIC(maria, [libmaria.a])
# 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)
}
#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")
#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 abort(T) trnman_abort_trn(trn[T])
......@@ -122,6 +123,7 @@ void run_test(const char *test, pthread_handler handler, int n, int m)
void test_trnman_read_from()
{
TRN *trn[Ntrns];
TrID trid[Ntrns];
pthread_mutex_t mutexes[Ntrns];
pthread_cond_t conds[Ntrns];
int i;
......@@ -142,6 +144,7 @@ void test_trnman_read_from()
ok_read_from(3, 0, 1);
ok_read_from(3, 1, 0);
ok_read_from(3, 2, 0);
ok_read_from(3, 3, 1);
commit(1); /* commit trn2 */
ok_read_from(3, 1, 0);
commit(3); /* commit trn5 */
......@@ -158,7 +161,7 @@ int main(int argc __attribute__((unused)), char **argv)
MY_INIT(argv[0]);
my_init();
plan(6);
plan(7);
if (my_atomic_initialize())
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