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
b484e292
Commit
b484e292
authored
Jan 28, 2005
by
brian@zim.(none)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup for lost file descriptors on close table for ha_archive.
parent
594ee4c0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
16 additions
and
11 deletions
+16
-11
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+1
-0
sql/examples/ha_archive.cc
sql/examples/ha_archive.cc
+15
-11
No files found.
BitKeeper/etc/logging_ok
View file @
b484e292
...
@@ -33,6 +33,7 @@ bk@mysql.r18.ru
...
@@ -33,6 +33,7 @@ bk@mysql.r18.ru
brian@avenger.(none)
brian@avenger.(none)
brian@brian-akers-computer.local
brian@brian-akers-computer.local
brian@private-client-ip-101.oz.net
brian@private-client-ip-101.oz.net
brian@zim.(none)
carsten@tsort.bitbybit.dk
carsten@tsort.bitbybit.dk
davida@isil.mysql.com
davida@isil.mysql.com
dellis@goetia.(none)
dellis@goetia.(none)
...
...
sql/examples/ha_archive.cc
View file @
b484e292
...
@@ -42,18 +42,20 @@
...
@@ -42,18 +42,20 @@
handle bulk inserts as well (that is if someone was trying to read at
handle bulk inserts as well (that is if someone was trying to read at
the same time since we would want to flush).
the same time since we would want to flush).
A "meta" file is kept. All this file does is contain information on
A "meta" file is kept alongside the data file. This file serves two purpose.
the number of rows.
The first purpose is to track the number of rows in the table. The second
purpose is to determine if the table was closed properly or not. When the
meta file is first opened it is marked as dirty. It is opened when the table
itself is opened for writing. When the table is closed the new count for rows
is written to the meta file and the file is marked as clean. If the meta file
is opened and it is marked as dirty, it is assumed that a crash occured. At
this point an error occurs and the user is told to rebuild the file.
A rebuild scans the rows and rewrites the meta file. If corruption is found
in the data file then the meta file is not repaired.
No attempts at durability are made. You can corrupt your data. A repair
At some point a recovery method for such a drastic case needs to be divised.
method was added to repair the meta file that stores row information,
but if your data file gets corrupted I haven't solved that. I could
create a repair that would solve this, but do you want to take a
chance of loosing your data?
Locks are row level, and you will get a consistant read. Transactions
Locks are row level, and you will get a consistant read.
will be added later (they are not that hard to add at this
stage).
For performance as far as table scans go it is quite fast. I don't have
For performance as far as table scans go it is quite fast. I don't have
good numbers but locally it has out performed both Innodb and MyISAM. For
good numbers but locally it has out performed both Innodb and MyISAM. For
...
@@ -88,7 +90,6 @@
...
@@ -88,7 +90,6 @@
compression but may speed up ordered searches).
compression but may speed up ordered searches).
Checkpoint the meta file to allow for faster rebuilds.
Checkpoint the meta file to allow for faster rebuilds.
Dirty open (right now the meta file is repaired if a crash occured).
Dirty open (right now the meta file is repaired if a crash occured).
Transactions.
Option to allow for dirty reads, this would lower the sync calls, which would make
Option to allow for dirty reads, this would lower the sync calls, which would make
inserts a lot faster, but would mean highly arbitrary reads.
inserts a lot faster, but would mean highly arbitrary reads.
...
@@ -333,6 +334,7 @@ ARCHIVE_SHARE *ha_archive::get_share(const char *table_name, TABLE *table)
...
@@ -333,6 +334,7 @@ ARCHIVE_SHARE *ha_archive::get_share(const char *table_name, TABLE *table)
opposite.
opposite.
*/
*/
(
void
)
write_meta_file
(
share
->
meta_file
,
share
->
rows_recorded
,
TRUE
);
(
void
)
write_meta_file
(
share
->
meta_file
,
share
->
rows_recorded
,
TRUE
);
/*
/*
It is expensive to open and close the data files and since you can't have
It is expensive to open and close the data files and since you can't have
a gzip file that can be both read and written we keep a writer open
a gzip file that can be both read and written we keep a writer open
...
@@ -379,6 +381,8 @@ int ha_archive::free_share(ARCHIVE_SHARE *share)
...
@@ -379,6 +381,8 @@ int ha_archive::free_share(ARCHIVE_SHARE *share)
(
void
)
write_meta_file
(
share
->
meta_file
,
share
->
rows_recorded
,
FALSE
);
(
void
)
write_meta_file
(
share
->
meta_file
,
share
->
rows_recorded
,
FALSE
);
if
(
gzclose
(
share
->
archive_write
)
==
Z_ERRNO
)
if
(
gzclose
(
share
->
archive_write
)
==
Z_ERRNO
)
rc
=
1
;
rc
=
1
;
if
(
my_close
(
share
->
meta_file
,
MYF
(
0
)))
rc
=
1
;
my_free
((
gptr
)
share
,
MYF
(
0
));
my_free
((
gptr
)
share
,
MYF
(
0
));
}
}
pthread_mutex_unlock
(
&
archive_mutex
);
pthread_mutex_unlock
(
&
archive_mutex
);
...
...
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