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
7f4b27cf
Commit
7f4b27cf
authored
Mar 06, 2006
by
gluh@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/gluh/MySQL/Merge/5.0
parents
321eb3dc
ee97bebc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
107 additions
and
21 deletions
+107
-21
mysql-test/r/federated.result
mysql-test/r/federated.result
+43
-0
mysql-test/t/federated.test
mysql-test/t/federated.test
+55
-0
sql/ha_federated.cc
sql/ha_federated.cc
+9
-20
sql/ha_federated.h
sql/ha_federated.h
+0
-1
No files found.
mysql-test/r/federated.result
View file @
7f4b27cf
...
...
@@ -1558,6 +1558,49 @@ id
3
4
5
DROP TABLE IF EXISTS federated.bug_17377_table;
CREATE TABLE federated.bug_17377_table (
`fld_cid` bigint(20) NOT NULL auto_increment,
`fld_name` varchar(255) NOT NULL default '',
`fld_parentid` bigint(20) NOT NULL default '0',
`fld_delt` int(1) NOT NULL default '0',
PRIMARY KEY (`fld_cid`),
KEY `fld_parentid` (`fld_parentid`),
KEY `fld_delt` (`fld_delt`),
KEY `fld_cid` (`fld_cid`)
) ENGINE=MyISAM;
insert into federated.bug_17377_table( fld_name )
values
("Mats"), ("Sivert"), ("Sigvard"), ("Torgny"), ("Torkel");
DROP TABLE IF EXISTS federated.t1;
CREATE TABLE federated.t1 (
`fld_cid` bigint(20) NOT NULL auto_increment,
`fld_name` varchar(255) NOT NULL default '',
`fld_parentid` bigint(20) NOT NULL default '0',
`fld_delt` int(1) NOT NULL default '0',
PRIMARY KEY (`fld_cid`),
KEY `fld_parentid` (`fld_parentid`),
KEY `fld_delt` (`fld_delt`),
KEY `fld_cid` (`fld_cid`)
) ENGINE=FEDERATED
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/bug_17377_table';
select * from federated.t1 where fld_parentid=0 and fld_delt=0
order by fld_name;
fld_cid fld_name fld_parentid fld_delt
1 Mats 0 0
3 Sigvard 0 0
2 Sivert 0 0
4 Torgny 0 0
5 Torkel 0 0
select * from federated.t1 where fld_parentid=0 and fld_delt=0;
fld_cid fld_name fld_parentid fld_delt
1 Mats 0 0
2 Sivert 0 0
3 Sigvard 0 0
4 Torgny 0 0
5 Torkel 0 0
DROP TABLE federated.t1;
DROP TABLE federated.bug_17377_table;
DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated;
DROP TABLE IF EXISTS federated.t1;
...
...
mysql-test/t/federated.test
View file @
7f4b27cf
...
...
@@ -1255,4 +1255,59 @@ INSERT INTO federated.t1 VALUES ();
SELECT
LAST_INSERT_ID
();
SELECT
*
FROM
federated
.
t1
;
#
# Bug#17377 Federated Engine returns wrong Data, always the rows
# with the highest ID
#
connection
slave
;
--
disable_warnings
DROP
TABLE
IF
EXISTS
federated
.
bug_17377_table
;
--
enable_warnings
CREATE
TABLE
federated
.
bug_17377_table
(
`fld_cid`
bigint
(
20
)
NOT
NULL
auto_increment
,
`fld_name`
varchar
(
255
)
NOT
NULL
default
''
,
`fld_parentid`
bigint
(
20
)
NOT
NULL
default
'0'
,
`fld_delt`
int
(
1
)
NOT
NULL
default
'0'
,
PRIMARY
KEY
(
`fld_cid`
),
KEY
`fld_parentid`
(
`fld_parentid`
),
KEY
`fld_delt`
(
`fld_delt`
),
KEY
`fld_cid`
(
`fld_cid`
)
)
ENGINE
=
MyISAM
;
# Insert some test-data
insert
into
federated
.
bug_17377_table
(
fld_name
)
values
(
"Mats"
),
(
"Sivert"
),
(
"Sigvard"
),
(
"Torgny"
),
(
"Torkel"
);
connection
master
;
--
disable_warnings
DROP
TABLE
IF
EXISTS
federated
.
t1
;
--
enable_warnings
--
replace_result
$SLAVE_MYPORT
SLAVE_PORT
eval
CREATE
TABLE
federated
.
t1
(
`fld_cid`
bigint
(
20
)
NOT
NULL
auto_increment
,
`fld_name`
varchar
(
255
)
NOT
NULL
default
''
,
`fld_parentid`
bigint
(
20
)
NOT
NULL
default
'0'
,
`fld_delt`
int
(
1
)
NOT
NULL
default
'0'
,
PRIMARY
KEY
(
`fld_cid`
),
KEY
`fld_parentid`
(
`fld_parentid`
),
KEY
`fld_delt`
(
`fld_delt`
),
KEY
`fld_cid`
(
`fld_cid`
)
)
ENGINE
=
FEDERATED
CONNECTION
=
'mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/bug_17377_table'
;
select
*
from
federated
.
t1
where
fld_parentid
=
0
and
fld_delt
=
0
order
by
fld_name
;
select
*
from
federated
.
t1
where
fld_parentid
=
0
and
fld_delt
=
0
;
DROP
TABLE
federated
.
t1
;
connection
slave
;
DROP
TABLE
federated
.
bug_17377_table
;
source
include
/
federated_cleanup
.
inc
;
sql/ha_federated.cc
View file @
7f4b27cf
...
...
@@ -740,7 +740,7 @@ static int parse_url(FEDERATED_SHARE *share, TABLE *table,
ha_federated
::
ha_federated
(
TABLE
*
table_arg
)
:
handler
(
&
federated_hton
,
table_arg
),
mysql
(
0
),
stored_result
(
0
),
scan_flag
(
0
),
mysql
(
0
),
stored_result
(
0
),
ref_length
(
sizeof
(
MYSQL_ROW_OFFSET
)),
current_position
(
0
)
{}
...
...
@@ -2243,7 +2243,7 @@ int ha_federated::rnd_init(bool scan)
containing the correct record, hence update the wrong row!
*/
scan_flag
=
scan
;
if
(
scan
)
{
DBUG_PRINT
(
"info"
,
(
"share->select_query %s"
,
share
->
select_query
));
...
...
@@ -2365,24 +2365,13 @@ void ha_federated::position(const byte *record)
int
ha_federated
::
rnd_pos
(
byte
*
buf
,
byte
*
pos
)
{
DBUG_ENTER
(
"ha_federated::rnd_pos"
);
/*
we do not need to do any of this if there has been a scan performed
already, or if this is an update and index_read_idx already has a result
set in which to build it's update query from
*/
if
(
scan_flag
)
{
int
retval
;
statistic_increment
(
table
->
in_use
->
status_var
.
ha_read_rnd_count
,
&
LOCK_status
);
memcpy_fixed
(
&
current_position
,
pos
,
sizeof
(
MYSQL_ROW_OFFSET
));
// pos
/* is not aligned */
stored_result
->
current_row
=
0
;
stored_result
->
data_cursor
=
current_position
;
retval
=
rnd_next
(
buf
);
DBUG_RETURN
(
retval
);
}
DBUG_RETURN
(
0
);
statistic_increment
(
table
->
in_use
->
status_var
.
ha_read_rnd_count
,
&
LOCK_status
);
memcpy_fixed
(
&
current_position
,
pos
,
sizeof
(
MYSQL_ROW_OFFSET
));
stored_result
->
current_row
=
0
;
stored_result
->
data_cursor
=
current_position
;
DBUG_RETURN
(
rnd_next
(
buf
));
}
...
...
sql/ha_federated.h
View file @
7f4b27cf
...
...
@@ -153,7 +153,6 @@ class ha_federated: public handler
FEDERATED_SHARE
*
share
;
/* Shared lock info */
MYSQL
*
mysql
;
/* MySQL connection */
MYSQL_RES
*
stored_result
;
bool
scan_flag
;
uint
ref_length
;
uint
fetch_num
;
// stores the fetch num
MYSQL_ROW_OFFSET
current_position
;
// Current position used by ::position()
...
...
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