Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
15985c19
Commit
15985c19
authored
Jan 12, 2008
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-maria
into janus.mylan:/usr/home/serg/Abk/mysql-maria
parents
917b4e42
3d4fff18
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
117 additions
and
25 deletions
+117
-25
KNOWN_BUGS.txt
KNOWN_BUGS.txt
+79
-0
mysql-test/r/create.result
mysql-test/r/create.result
+1
-1
mysql-test/t/create.test
mysql-test/t/create.test
+1
-1
mysql-test/t/maria.test
mysql-test/t/maria.test
+5
-0
mysys/my_getsystime.c
mysys/my_getsystime.c
+27
-19
storage/maria/ma_check.c
storage/maria/ma_check.c
+0
-1
storage/maria/ma_loghandler.c
storage/maria/ma_loghandler.c
+2
-2
storage/maria/ma_open.c
storage/maria/ma_open.c
+2
-1
No files found.
KNOWN_BUGS.txt
0 → 100644
View file @
15985c19
This file should contain all know fatal bugs in the Maria storage
engine for the last source or binary release. Minor bugs, extensions
and feature request and bugs found since this release can be find in the
MySQL bugs databases at: http://bugs.mysql.com/
There shouldn't normally be any bugs that affects normal operations in
any Maria release. Still, there are always exceptions and edge cases
and that's what this file is for.
For the first few Alpha releases of Maria there may be some edge cases
that crashes during recovery; We don't like that but we think it's
better to get the Maria alpha out early to get things tested and get
more developers on the code early than wait until these are fixed. We
do however think that the bugs are not seriously enough to stop anyone
from starting to test and even use Maria for real (as long as they are
prepared to upgrade to next MySQL-Maria release ASAP).
If you have found a bug that is not listed here, please add it to
http://bugs.mysql.com/ so that we can either fix it for next release
or in the worst case add it here for others to know!
Known bugs that are planned to be fixed before next minor release
=================================================================
- If mysqld crashed or is killed during REPAIR or OPTIMIZE, Maria will not
be able to automaticly repair the table again; You must manually run
REPAIR on the table again after mysqld is started.
- If mysqld crashes during batch insert into an empty table,
(This includes LOAD DATA INFILE, SELECT ... INSERT and INSERT (many rows))
Maria repair may not be able to recreate the empty table. In this case
You must manually run either REPAIR TABLE or TRUNCATE to fix the table.
- If the log files are damaged or inconsistent, Maria may fail to start.
We should fix that if this happens and mysqld is restarted (thanks to
mysqld_safe, instance manager or other script) it should disregard the
old logs, start anyway and automaticly repair any tables that was found
to be crashed on open.
Temporary fix is to remove or maria_log.???????? files from the data
directory, restart mysqld and run CHECK TABLE / REPAIR TABLE or
mysqlcheck on your Maria tables
Known bugs that are planned to be fixed before Beta
===================================================
- If we get a write failure on disk (disk full or disk error) for the
log, we should stop all usage of transactional tables and mark all
transactional tables that are changed as crashed.
For the moment, if this happens, you have to take down mysqld,
remove all logs, restart mysqld and repair your tables.
If you get the related error:
"Disk is full writing '/usr/local/mysql/var/maria_log.????????' (Errcode: 28)
Waiting for someone to free space..."
you should either free disk space, in which Maria will continue as before
or kill mysqld, remove logs and repair tables.
Missing features that is planned to fix before Beta
===================================================
- We will add an maria-recover option to automaticly repair any
crashed tables on open. (This is needed for not transactional tables
and also in edge cases for transactional tables when the table
crashed because of a bug in MySQL or Maria code)
- Multiple concurrent inserts & multiple concurrent readers at same time
with full MVCC control. Note that UPDATE and DELETE will still be
blocking (as with MyISAM)
- COUNT(*) and TABLE CHECKSUM under MVCC (ie, they are instant and kept up
to date even with multiple inserter)
- Recovery of fulltext and GIS indexes.
Features planned for future releases
====================================
http://forge.mysql.com/worklog/
mysql-test/r/create.result
View file @
15985c19
...
...
@@ -1717,7 +1717,7 @@ t1 CREATE TABLE `t1` (
`TIME` bigint(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
`INFO` longtext
)
ENGINE=MARIA
DEFAULT CHARSET=utf8
) DEFAULT CHARSET=utf8
drop table t1;
create temporary table t1 like information_schema.processlist;
show create table t1;
...
...
mysql-test/t/create.test
View file @
15985c19
...
...
@@ -1332,7 +1332,7 @@ drop function f1;
# Bug#25629 CREATE TABLE LIKE does not work with INFORMATION_SCHEMA
#
create
table
t1
like
information_schema
.
processlist
;
--
replace_result
ENGINE
=
MyISAM
""
ENGINE
=
M
aria
""
" PAGE_CHECKSUM=1"
""
--
replace_result
ENGINE
=
MyISAM
""
ENGINE
=
M
ARIA
""
" PAGE_CHECKSUM=1"
""
show
create
table
t1
;
drop
table
t1
;
create
temporary
table
t1
like
information_schema
.
processlist
;
...
...
mysql-test/t/maria.test
View file @
15985c19
...
...
@@ -989,7 +989,9 @@ connect (session2,localhost,root,,);
connection
session1
;
disable_query_log
;
disable_warnings
;
eval
create
temporary
table
t1
(
a
int
)
data
directory
=
"
$MYSQLTEST_VARDIR
/tmp"
select
9
a
;
enable_warnings
;
enable_query_log
;
disable_result_log
;
show
create
table
t1
;
...
...
@@ -997,7 +999,10 @@ enable_result_log;
connection
session2
;
disable_query_log
;
disable_warnings
;
eval
create
temporary
table
t1
(
a
int
)
data
directory
=
"
$MYSQLTEST_VARDIR
/tmp"
select
99
a
;
enable_warnings
;
enable_query_log
;
disable_result_log
;
show
create
table
t1
;
...
...
mysys/my_getsystime.c
View file @
15985c19
...
...
@@ -35,9 +35,9 @@ ulonglong my_getsystime()
if
(
query_performance_frequency
)
{
QueryPerformanceCounter
(
&
t_cnt
);
return
(
t_cnt
.
QuadPart
/
query_performance_frequency
*
10000000
+
t_cnt
.
QuadPart
%
query_performance_frequency
*
10000000
/
query_performance_frequency
+
query_performance_offset
);
return
(
(
t_cnt
.
QuadPart
/
query_performance_frequency
*
10000000
)
+
(
t_cnt
.
QuadPart
%
query_performance_frequency
*
10000000
/
query_performance_frequency
)
+
query_performance_offset
);
}
return
0
;
#elif defined(__NETWARE__)
...
...
@@ -108,16 +108,20 @@ ulonglong my_micro_time()
if
(
query_performance_frequency
)
{
QueryPerformanceCounter
((
LARGE_INTEGER
*
)
&
newtime
);
newtime
/=
(
query_performance_frequency
*
1000000
);
newtime
=
((
new_time
/
query_performance_frequency
*
10000000
)
+
(
new_time
%
query_performance_frequency
*
10000000
/
query_performance_frequency
));
}
else
newtime
=
(
GetTickCount
()
*
1000
);
/* GetTickCount only returns millisec
onds
*/
newtime
=
(
GetTickCount
()
*
1000
);
/* GetTickCount only returns millisec
.
*/
return
newtime
;
#elif defined(HAVE_GETHRTIME)
return
gethrtime
()
/
1000
;
#else
struct
timeval
t
;
/* The following loop is here because gettimeofday may fail on some systems */
/*
The following loop is here because gettimeofday may fail on some systems
*/
while
(
gettimeofday
(
&
t
,
NULL
)
!=
0
)
{}
newtime
=
(
ulonglong
)
t
.
tv_sec
*
1000000
+
t
.
tv_usec
;
...
...
@@ -131,18 +135,18 @@ ulonglong my_micro_time()
SYNOPSIS
my_micro_time_and_time()
time_arg Will be set to seconds since epoch (00:00:00 UTC,
January 1,
1970)
time_arg Will be set to seconds since epoch (00:00:00 UTC,
January 1,
1970)
NOTES
This function is to be useful when we need both the time and microtime.
For example in MySQL this is used to get the query time start of a query
and
to measure the time of a query (for the slow query log)
For example in MySQL this is used to get the query time start of a query
and
to measure the time of a query (for the slow query log)
IMPLEMENTATION
Value of time is as in time() call.
Value of microtime is same as my_micro_time(), which may be totally
unrealated
to time()
Value of microtime is same as my_micro_time(), which may be totally
unrealated
to time()
RETURN
Value in microseconds from some undefined point in time
...
...
@@ -157,16 +161,18 @@ ulonglong my_micro_time_and_time(time_t *time_arg)
if
(
query_performance_frequency
)
{
QueryPerformanceCounter
((
LARGE_INTEGER
*
)
&
newtime
);
newtime
/=
(
query_performance_frequency
*
1000000
);
newtime
=
((
new_time
/
query_performance_frequency
*
10000000
)
+
(
new_time
%
query_performance_frequency
*
10000000
/
query_performance_frequency
));
}
else
newtime
=
(
GetTickCount
()
*
1000
);
/* GetTickCount only returns millisec
onds
*/
newtime
=
(
GetTickCount
()
*
1000
);
/* GetTickCount only returns millisec
.
*/
(
void
)
time
(
time_arg
);
return
newtime
;
#elif defined(HAVE_GETHRTIME)
/*
Solaris has a very slow time() call. We optimize this by using the very
fast
gethrtime() call and only calling time() every 1/2 second
Solaris has a very slow time() call. We optimize this by using the very
fast
gethrtime() call and only calling time() every 1/2 second
*/
static
hrtime_t
prev_gethrtime
=
0
;
static
time_t
cur_time
=
0
;
...
...
@@ -184,7 +190,9 @@ ulonglong my_micro_time_and_time(time_t *time_arg)
return
cur_gethrtime
/
1000
;
#else
struct
timeval
t
;
/* The following loop is here because gettimeofday may fail on some systems */
/*
The following loop is here because gettimeofday may fail on some systems
*/
while
(
gettimeofday
(
&
t
,
NULL
)
!=
0
)
{}
*
time_arg
=
t
.
tv_sec
;
...
...
@@ -203,8 +211,8 @@ ulonglong my_micro_time_and_time(time_t *time_arg)
NOTES
This function returns the current time. The microtime argument is only used
if my_micro_time() uses a function that can safely be converted to the
current
time.
if my_micro_time() uses a function that can safely be converted to the
current
time.
RETURN
current time
...
...
storage/maria/ma_check.c
View file @
15985c19
...
...
@@ -5907,7 +5907,6 @@ static my_bool create_new_data_handle(MARIA_SORT_PARAM *param, File new_file)
HA_OPEN_COPY
|
HA_OPEN_FOR_REPAIR
)))
DBUG_RETURN
(
1
);
info
->
s
->
now_transactional
=
0
;
new_info
=
sort_info
->
new_info
;
_ma_bitmap_set_pagecache_callbacks
(
&
new_info
->
s
->
bitmap
.
file
,
new_info
->
s
);
...
...
storage/maria/ma_loghandler.c
View file @
15985c19
...
...
@@ -2239,7 +2239,7 @@ static uint16 translog_get_total_chunk_length(uchar *page, uint16 offset)
DBUG_PRINT
(
"info"
,
(
"TRANSLOG_CHUNK_LSN"
));
rec_len
=
translog_variable_record_1group_decode_len
(
&
ptr
);
chunk_len
=
uint2korr
(
ptr
);
header_len
=
(
ptr
-
start
)
+
2
;
header_len
=
(
uint16
)
(
ptr
-
start
)
+
2
;
DBUG_PRINT
(
"info"
,
(
"rec len: %lu chunk len: %u header len: %u"
,
(
ulong
)
rec_len
,
(
uint
)
chunk_len
,
(
uint
)
header_len
));
if
(
chunk_len
)
...
...
@@ -3002,7 +3002,7 @@ static uint16 translog_get_chunk_header_length(uchar *chunk)
DBUG_PRINT
(
"info"
,
(
"TRANSLOG_CHUNK_LSN"
));
rec_len
=
translog_variable_record_1group_decode_len
(
&
ptr
);
chunk_len
=
uint2korr
(
ptr
);
header_len
=
(
ptr
-
start
)
+
2
;
header_len
=
(
uint16
)
(
ptr
-
start
)
+
2
;
DBUG_PRINT
(
"info"
,
(
"rec len: %lu chunk len: %u header len: %u"
,
(
ulong
)
rec_len
,
(
uint
)
chunk_len
,
(
uint
)
header_len
));
if
(
chunk_len
)
...
...
storage/maria/ma_open.c
View file @
15985c19
...
...
@@ -396,7 +396,8 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
goto
err
;
}
if
(
share
->
state
.
changed
&
STATE_NOT_MOVABLE
&&
if
((
share
->
state
.
changed
&
STATE_NOT_MOVABLE
)
&&
share
->
now_transactional
&&
!
(
open_flags
&
HA_OPEN_IGNORE_MOVED_STATE
)
&&
memcmp
(
share
->
base
.
uuid
,
maria_uuid
,
MY_UUID_SIZE
))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment