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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
df046728
Commit
df046728
authored
Jan 09, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge baker@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into zim.(none):/home/brian/mysql/archive-5.1
parents
e8595bb5
c9f5a5cc
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
435 additions
and
94 deletions
+435
-94
mysql-test/r/archive.result
mysql-test/r/archive.result
+90
-31
mysql-test/t/archive.test
mysql-test/t/archive.test
+80
-32
sql/field.h
sql/field.h
+9
-1
sql/ha_archive.cc
sql/ha_archive.cc
+239
-25
sql/ha_archive.h
sql/ha_archive.h
+17
-5
No files found.
mysql-test/r/archive.result
View file @
df046728
...
...
@@ -4,13 +4,13 @@ Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
Varor_period smallint(4) unsigned DEFAULT '0' NOT NULL
) ENGINE=archive;
INSERT INTO t1 VALUES (9410,9412);
select period
from
t1;
select period
FROM
t1;
period
9410
select *
from
t1;
select *
FROM
t1;
Period Varor_period
9410 9412
select t1.*
from
t1;
select t1.*
FROM
t1;
Period Varor_period
9410 9412
CREATE TABLE t2 (
...
...
@@ -22,13 +22,13 @@ fld4 char(35) DEFAULT '' NOT NULL,
fld5 char(35) DEFAULT '' NOT NULL,
fld6 char(4) DEFAULT '' NOT NULL
) ENGINE=archive;
select t2.fld3
from
t2 where companynr = 58 and fld3 like "%imaginable%";
select t2.fld3
FROM
t2 where companynr = 58 and fld3 like "%imaginable%";
fld3
imaginable
select fld3
from
t2 where fld3 like "%cultivation" ;
select fld3
FROM
t2 where fld3 like "%cultivation" ;
fld3
cultivation
select t2.fld3,companynr
from
t2 where companynr = 57+1 order by fld3;
select t2.fld3,companynr
FROM
t2 where companynr = 57+1 order by fld3;
fld3 companynr
concoct 58
druggists 58
...
...
@@ -53,7 +53,7 @@ synergy 58
thanking 58
tying 58
unlocks 58
select fld3,companynr
from
t2 where companynr = 58 order by fld3;
select fld3,companynr
FROM
t2 where companynr = 58 order by fld3;
fld3 companynr
concoct 58
druggists 58
...
...
@@ -78,7 +78,7 @@ synergy 58
thanking 58
tying 58
unlocks 58
select fld3
from
t2 order by fld3 desc limit 10;
select fld3
FROM
t2 order by fld3 desc limit 10;
fld3
youthfulness
yelped
...
...
@@ -90,49 +90,49 @@ Winsett
Willy
willed
wildcats
select fld3
from
t2 order by fld3 desc limit 5;
select fld3
FROM
t2 order by fld3 desc limit 5;
fld3
youthfulness
yelped
Wotan
workers
Witt
select fld3
from
t2 order by fld3 desc limit 5,5;
select fld3
FROM
t2 order by fld3 desc limit 5,5;
fld3
witchcraft
Winsett
Willy
willed
wildcats
select t2.fld3
from
t2 where fld3 = 'honeysuckle';
select t2.fld3
FROM
t2 where fld3 = 'honeysuckle';
fld3
honeysuckle
select t2.fld3
from
t2 where fld3 LIKE 'honeysuckl_';
select t2.fld3
FROM
t2 where fld3 LIKE 'honeysuckl_';
fld3
honeysuckle
select t2.fld3
from
t2 where fld3 LIKE 'hon_ysuckl_';
select t2.fld3
FROM
t2 where fld3 LIKE 'hon_ysuckl_';
fld3
honeysuckle
select t2.fld3
from
t2 where fld3 LIKE 'honeysuckle%';
select t2.fld3
FROM
t2 where fld3 LIKE 'honeysuckle%';
fld3
honeysuckle
select t2.fld3
from
t2 where fld3 LIKE 'h%le';
select t2.fld3
FROM
t2 where fld3 LIKE 'h%le';
fld3
honeysuckle
select t2.fld3
from
t2 where fld3 LIKE 'honeysuckle_';
select t2.fld3
FROM
t2 where fld3 LIKE 'honeysuckle_';
fld3
select t2.fld3
from
t2 where fld3 LIKE 'don_t_find_me_please%';
select t2.fld3
FROM
t2 where fld3 LIKE 'don_t_find_me_please%';
fld3
select t2.fld3
from
t2 where fld3 >= 'honeysuckle' and fld3 <= 'honoring' order by fld3;
select t2.fld3
FROM
t2 where fld3 >= 'honeysuckle' and fld3 <= 'honoring' order by fld3;
fld3
honeysuckle
honoring
select fld1,fld3
from
t2 where fld3="Colombo" or fld3 = "nondecreasing" order by fld3;
select fld1,fld3
FROM
t2 where fld3="Colombo" or fld3 = "nondecreasing" order by fld3;
fld1 fld3
148504 Colombo
068305 Colombo
000000 nondecreasing
select fld1,fld3
from
t2 where companynr = 37 and fld3 like 'f%';
select fld1,fld3
FROM
t2 where companynr = 37 and fld3 like 'f%';
fld1 fld3
012001 flanking
013602 foldout
...
...
@@ -165,37 +165,37 @@ fld1 fld3
232102 forgivably
238007 filial
238008 fixedly
select fld3
from
t2 where fld3 like "L%" and fld3 = "ok";
select fld3
FROM
t2 where fld3 like "L%" and fld3 = "ok";
fld3
select fld3
from
t2 where (fld3 like "C%" and fld3 = "Chantilly");
select fld3
FROM
t2 where (fld3 like "C%" and fld3 = "Chantilly");
fld3
Chantilly
select fld1,fld3
from
t2 where fld1 like "25050%";
select fld1,fld3
FROM
t2 where fld1 like "25050%";
fld1 fld3
250501 poisoning
250502 Iraqis
250503 heaving
250504 population
250505 bomb
select fld1,fld3
from
t2 where fld1 like "25050_";
select fld1,fld3
FROM
t2 where fld1 like "25050_";
fld1 fld3
250501 poisoning
250502 Iraqis
250503 heaving
250504 population
250505 bomb
create table t3 engine=archive select *
from
t2;
select *
from
t3 where fld3='bonfire';
create table t3 engine=archive select *
FROM
t2;
select *
FROM
t3 where fld3='bonfire';
auto fld1 companynr fld3 fld4 fld5 fld6
1191 068504 00 bonfire corresponds positively
select count(*)
from
t3;
select count(*)
FROM
t3;
count(*)
1199
rename table t3 to t4;
select *
from
t4 where fld3='bonfire';
select *
FROM
t4 where fld3='bonfire';
auto fld1 companynr fld3 fld4 fld5 fld6
1191 068504 00 bonfire corresponds positively
select count(*)
from
t4;
select count(*)
FROM
t4;
count(*)
1199
INSERT INTO t2 VALUES (1,000001,00,'Omaha','teethe','neat','');
...
...
@@ -11130,7 +11130,7 @@ t2 CREATE TABLE `t2` (
`fld4` char(35) NOT NULL default '',
`fld5` char(35) NOT NULL default ''
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
SELECT *
from
t2;
SELECT *
FROM
t2;
auto fld1 companynr fld3 fld4 fld5
1 000001 00 Omaha teethe neat
2 011401 37 breaking dreaded Steinberg
...
...
@@ -12346,4 +12346,63 @@ auto fld1 companynr fld3 fld4 fld5
3 011402 37 Romans scholastics jarring
4 011403 37 intercepted audiology tinily
4 011403 37 intercepted audiology tinily
drop table t1, t2, t4;
CREATE TABLE `t5` (
`a` int(11) NOT NULL auto_increment,
b char(12),
PRIMARY KEY (`a`)
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (32, "foo");
INSERT INTO t5 VALUES (23, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (3, "foo");
ERROR 23000: Can't write; duplicate key in table 't5'
INSERT INTO t5 VALUES (0, "foo");
SELECT * FROM t5;
a b
1 foo
2 foo
3 foo
4 foo
5 foo
32 foo
23 foo
33 foo
34 foo
35 foo
DROP TABLE t5;
CREATE TABLE `t5` (
`a` int(11) NOT NULL auto_increment,
b char(12),
KEY (`a`)
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (32, "foo");
INSERT INTO t5 VALUES (23, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (0, "foo");
INSERT INTO t5 VALUES (3, "foo");
INSERT INTO t5 VALUES (0, "foo");
SELECT * FROM t5;
a b
1 foo
2 foo
3 foo
4 foo
5 foo
32 foo
23 foo
33 foo
34 foo
3 foo
35 foo
drop table t1, t2, t4, t5;
mysql-test/t/archive.test
View file @
df046728
#
# Simple test for archive example
# Taken
from
the select test
# Taken
FROM
the select test
#
--
source
include
/
have_archive
.
inc
...
...
@@ -15,9 +15,9 @@ CREATE TABLE t1 (
INSERT
INTO
t1
VALUES
(
9410
,
9412
);
select
period
from
t1
;
select
*
from
t1
;
select
t1
.*
from
t1
;
select
period
FROM
t1
;
select
*
FROM
t1
;
select
t1
.*
FROM
t1
;
#
# Create test table
...
...
@@ -1243,64 +1243,64 @@ INSERT INTO t2 VALUES (1193,000000,00,'nondecreasing','implant','thrillingly',''
# Search with a key
#
select
t2
.
fld3
from
t2
where
companynr
=
58
and
fld3
like
"%imaginable%"
;
select
fld3
from
t2
where
fld3
like
"%cultivation"
;
select
t2
.
fld3
FROM
t2
where
companynr
=
58
and
fld3
like
"%imaginable%"
;
select
fld3
FROM
t2
where
fld3
like
"%cultivation"
;
#
# Search with a key using sorting and limit the same time
#
select
t2
.
fld3
,
companynr
from
t2
where
companynr
=
57
+
1
order
by
fld3
;
select
fld3
,
companynr
from
t2
where
companynr
=
58
order
by
fld3
;
select
t2
.
fld3
,
companynr
FROM
t2
where
companynr
=
57
+
1
order
by
fld3
;
select
fld3
,
companynr
FROM
t2
where
companynr
=
58
order
by
fld3
;
select
fld3
from
t2
order
by
fld3
desc
limit
10
;
select
fld3
from
t2
order
by
fld3
desc
limit
5
;
select
fld3
from
t2
order
by
fld3
desc
limit
5
,
5
;
select
fld3
FROM
t2
order
by
fld3
desc
limit
10
;
select
fld3
FROM
t2
order
by
fld3
desc
limit
5
;
select
fld3
FROM
t2
order
by
fld3
desc
limit
5
,
5
;
#
# Search with a key having a constant with each unique key.
# The table is read directly with read-next on fld3
#
select
t2
.
fld3
from
t2
where
fld3
=
'honeysuckle'
;
select
t2
.
fld3
from
t2
where
fld3
LIKE
'honeysuckl_'
;
select
t2
.
fld3
from
t2
where
fld3
LIKE
'hon_ysuckl_'
;
select
t2
.
fld3
from
t2
where
fld3
LIKE
'honeysuckle%'
;
select
t2
.
fld3
from
t2
where
fld3
LIKE
'h%le'
;
select
t2
.
fld3
FROM
t2
where
fld3
=
'honeysuckle'
;
select
t2
.
fld3
FROM
t2
where
fld3
LIKE
'honeysuckl_'
;
select
t2
.
fld3
FROM
t2
where
fld3
LIKE
'hon_ysuckl_'
;
select
t2
.
fld3
FROM
t2
where
fld3
LIKE
'honeysuckle%'
;
select
t2
.
fld3
FROM
t2
where
fld3
LIKE
'h%le'
;
select
t2
.
fld3
from
t2
where
fld3
LIKE
'honeysuckle_'
;
select
t2
.
fld3
from
t2
where
fld3
LIKE
'don_t_find_me_please%'
;
select
t2
.
fld3
FROM
t2
where
fld3
LIKE
'honeysuckle_'
;
select
t2
.
fld3
FROM
t2
where
fld3
LIKE
'don_t_find_me_please%'
;
#
# Test sorting with a used key (there is no need for sorting)
#
select
t2
.
fld3
from
t2
where
fld3
>=
'honeysuckle'
and
fld3
<=
'honoring'
order
by
fld3
;
select
fld1
,
fld3
from
t2
where
fld3
=
"Colombo"
or
fld3
=
"nondecreasing"
order
by
fld3
;
select
t2
.
fld3
FROM
t2
where
fld3
>=
'honeysuckle'
and
fld3
<=
'honoring'
order
by
fld3
;
select
fld1
,
fld3
FROM
t2
where
fld3
=
"Colombo"
or
fld3
=
"nondecreasing"
order
by
fld3
;
#
# Search with a key with LIKE constant
# If the like starts with a certain letter key will be used.
#
select
fld1
,
fld3
from
t2
where
companynr
=
37
and
fld3
like
'f%'
;
select
fld3
from
t2
where
fld3
like
"L%"
and
fld3
=
"ok"
;
select
fld3
from
t2
where
(
fld3
like
"C%"
and
fld3
=
"Chantilly"
);
select
fld1
,
fld3
from
t2
where
fld1
like
"25050%"
;
select
fld1
,
fld3
from
t2
where
fld1
like
"25050_"
;
select
fld1
,
fld3
FROM
t2
where
companynr
=
37
and
fld3
like
'f%'
;
select
fld3
FROM
t2
where
fld3
like
"L%"
and
fld3
=
"ok"
;
select
fld3
FROM
t2
where
(
fld3
like
"C%"
and
fld3
=
"Chantilly"
);
select
fld1
,
fld3
FROM
t2
where
fld1
like
"25050%"
;
select
fld1
,
fld3
FROM
t2
where
fld1
like
"25050_"
;
#
# Test rename of table
#
create
table
t3
engine
=
archive
select
*
from
t2
;
select
*
from
t3
where
fld3
=
'bonfire'
;
select
count
(
*
)
from
t3
;
create
table
t3
engine
=
archive
select
*
FROM
t2
;
select
*
FROM
t3
where
fld3
=
'bonfire'
;
select
count
(
*
)
FROM
t3
;
# Clean up path in error message
--
replace_result
$MYSQL_TEST_DIR
.
/
var
/
master
-
data
/
/
rename
table
t3
to
t4
;
select
*
from
t4
where
fld3
=
'bonfire'
;
select
count
(
*
)
from
t4
;
select
*
FROM
t4
where
fld3
=
'bonfire'
;
select
count
(
*
)
FROM
t4
;
# End of 4.1 tests
...
...
@@ -1351,10 +1351,58 @@ INSERT DELAYED INTO t2 VALUES (4,011403,37,'intercepted','audiology','tinily',''
# Adding test for alter table
ALTER
TABLE
t2
DROP
COLUMN
fld6
;
SHOW
CREATE
TABLE
t2
;
SELECT
*
from
t2
;
SELECT
*
FROM
t2
;
# Adding tests for autoincrement
# First the simple stuff
CREATE
TABLE
`t5`
(
`a`
int
(
11
)
NOT
NULL
auto_increment
,
b
char
(
12
),
PRIMARY
KEY
(
`a`
)
)
ENGINE
=
ARCHIVE
DEFAULT
CHARSET
=
latin1
;
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
32
,
"foo"
);
INSERT
INTO
t5
VALUES
(
23
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
--
error
1022
INSERT
INTO
t5
VALUES
(
3
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
SELECT
*
FROM
t5
;
DROP
TABLE
t5
;
CREATE
TABLE
`t5`
(
`a`
int
(
11
)
NOT
NULL
auto_increment
,
b
char
(
12
),
KEY
(
`a`
)
)
ENGINE
=
ARCHIVE
DEFAULT
CHARSET
=
latin1
;
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
32
,
"foo"
);
INSERT
INTO
t5
VALUES
(
23
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
INSERT
INTO
t5
VALUES
(
3
,
"foo"
);
INSERT
INTO
t5
VALUES
(
0
,
"foo"
);
SELECT
*
FROM
t5
;
#
# Cleanup, test is over
#
drop
table
t1
,
t2
,
t4
;
--
disable_warnings
drop
table
t1
,
t2
,
t4
,
t5
;
--
enable_warnings
sql/field.h
View file @
df046728
...
...
@@ -253,7 +253,15 @@ public:
ptr
-=
row_offset
;
return
tmp
;
}
inline
longlong
val_int
(
char
*
new_ptr
)
{
char
*
old_ptr
=
ptr
;
longlong
return_value
;
ptr
=
new_ptr
;
return_value
=
val_int
();
ptr
=
old_ptr
;
return
return_value
;
}
inline
String
*
val_str
(
String
*
str
,
char
*
new_ptr
)
{
char
*
old_ptr
=
ptr
;
...
...
sql/ha_archive.cc
View file @
df046728
This diff is collapsed.
Click to expand it.
sql/ha_archive.h
View file @
df046728
...
...
@@ -18,6 +18,7 @@
#pragma interface
/* gcc class implementation */
#endif
#include <values.h>
#include <zlib.h>
#include "../storage/archive/azlib.h"
...
...
@@ -38,13 +39,14 @@ typedef struct st_archive_share {
bool
dirty
;
/* Flag for if a flush should occur */
bool
crashed
;
/* Meta file is crashed */
ha_rows
rows_recorded
;
/* Number of rows in tables */
ulonglong
auto_increment_value
;
}
ARCHIVE_SHARE
;
/*
Version for file format.
1 - Initial Version
*/
#define ARCHIVE_VERSION
1
#define ARCHIVE_VERSION
2
class
ha_archive
:
public
handler
{
...
...
@@ -68,13 +70,22 @@ public:
const
char
**
bas_ext
()
const
;
ulong
table_flags
()
const
{
return
(
HA_REC_NOT_IN_SEQ
|
HA_NOT_EXACT_COUNT
|
HA_NO_AUTO_INCREMENT
|
return
(
HA_REC_NOT_IN_SEQ
|
HA_NOT_EXACT_COUNT
|
HA_FILE_BASED
|
HA_CAN_INSERT_DELAYED
|
HA_CAN_GEOMETRY
);
}
ulong
index_flags
(
uint
idx
,
uint
part
,
bool
all_parts
)
const
{
return
0
;
return
HA_ONLY_WHOLE_INDEX
;
}
ulonglong
get_auto_increment
();
uint
max_supported_keys
()
const
{
return
1
;
}
uint
max_supported_key_length
()
const
{
return
sizeof
(
ulonglong
);
}
uint
max_supported_key_part_length
()
const
{
return
sizeof
(
ulonglong
);
}
int
index_init
(
uint
keynr
,
bool
sorted
);
virtual
int
index_read
(
byte
*
buf
,
const
byte
*
key
,
uint
key_len
,
enum
ha_rkey_function
find_flag
);
virtual
int
index_read_idx
(
byte
*
buf
,
uint
index
,
const
byte
*
key
,
uint
key_len
,
enum
ha_rkey_function
find_flag
);
int
open
(
const
char
*
name
,
int
mode
,
uint
test_if_locked
);
int
close
(
void
);
int
write_row
(
byte
*
buf
);
...
...
@@ -84,8 +95,9 @@ public:
int
rnd_next
(
byte
*
buf
);
int
rnd_pos
(
byte
*
buf
,
byte
*
pos
);
int
get_row
(
azio_stream
*
file_to_read
,
byte
*
buf
);
int
read_meta_file
(
File
meta_file
,
ha_rows
*
rows
);
int
write_meta_file
(
File
meta_file
,
ha_rows
rows
,
bool
dirty
);
int
read_meta_file
(
File
meta_file
,
ha_rows
*
rows
,
ulonglong
*
auto_increment
);
int
write_meta_file
(
File
meta_file
,
ha_rows
rows
,
ulonglong
auto_increment
,
bool
dirty
);
ARCHIVE_SHARE
*
get_share
(
const
char
*
table_name
,
TABLE
*
table
);
int
free_share
(
ARCHIVE_SHARE
*
share
);
bool
auto_repair
()
const
{
return
1
;
}
// For the moment we just do this
...
...
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