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
de44001a
Commit
de44001a
authored
Jan 09, 2006
by
brian@zim.(none)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Corrections from code review for auto_increment. Added test cases.
parent
be693382
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
177 additions
and
70 deletions
+177
-70
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/ha_archive.cc
sql/ha_archive.cc
+7
-7
No files found.
mysql-test/r/archive.result
View file @
de44001a
...
...
@@ -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 @
de44001a
#
# 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/ha_archive.cc
View file @
de44001a
...
...
@@ -599,7 +599,6 @@ int ha_archive::create(const char *name, TABLE *table_arg,
{
Field
*
field
=
key_part
->
field
;
DBUG_PRINT
(
"info"
,
(
"Looking at field index%s"
,
field
->
field_name
));
if
(
!
(
field
->
flags
&
AUTO_INCREMENT_FLAG
))
{
error
=
-
1
;
...
...
@@ -720,8 +719,6 @@ int ha_archive::write_row(byte *buf)
KEY
*
mkey
=
&
table
->
s
->
key_info
[
0
];
// We only support one key right now
update_auto_increment
();
temp_auto
=
table
->
next_number_field
->
val_int
();
DBUG_PRINT
(
"info"
,
(
"archive would see %d and %d"
,
temp_auto
,
share
->
auto_increment_value
));
/*
Bad news, this will cause a search for the unique value which is very
...
...
@@ -765,13 +762,15 @@ int ha_archive::write_row(byte *buf)
/*
Now we read and check all of the rows.
if (!memcmp(table->next_number_field->ptr, mfield->ptr, mfield->max_length()))
if ((longlong)temp_auto ==
mfield->val_int((char*)(read_buf + mfield->offset())))
*/
Field
*
mfield
=
table
->
next_number_field
;
while
(
!
(
get_row
(
&
archive
,
read_buf
)))
{
if
(
(
longlong
)
temp_auto
==
mfield
->
val_int
((
char
*
)(
read_buf
+
mfield
->
offset
()
)))
if
(
!
memcmp
(
read_buf
+
mfield
->
offset
(),
table
->
next_number_field
->
ptr
,
mfield
->
max_length
(
)))
{
rc
=
HA_ERR_FOUND_DUPP_KEY
;
goto
error
;
...
...
@@ -780,7 +779,8 @@ int ha_archive::write_row(byte *buf)
}
else
{
auto_increment_value
=
share
->
auto_increment_value
=
temp_auto
;
if
(
temp_auto
>
share
->
auto_increment_value
)
auto_increment_value
=
share
->
auto_increment_value
=
temp_auto
;
}
}
...
...
@@ -802,7 +802,7 @@ error:
ulonglong
ha_archive
::
get_auto_increment
()
{
return
auto_increment_value
=
++
share
->
auto_increment_value
;
return
share
->
auto_increment_value
+
1
;
}
/* Initialized at each key walk (called multiple times unlike rnd_init()) */
...
...
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