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
cbac75de
Commit
cbac75de
authored
Feb 10, 2006
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
parents
1aced6df
7050a758
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
130 additions
and
14 deletions
+130
-14
mysql-test/r/ndb_basic.result
mysql-test/r/ndb_basic.result
+55
-0
mysql-test/t/ndb_basic.test
mysql-test/t/ndb_basic.test
+66
-0
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+6
-14
sql/ha_ndbcluster.h
sql/ha_ndbcluster.h
+3
-0
No files found.
mysql-test/r/ndb_basic.result
View file @
cbac75de
...
@@ -671,3 +671,58 @@ CREATE TABLE t1 ( b INT ) PACK_KEYS = 0 ENGINE = ndb;
...
@@ -671,3 +671,58 @@ CREATE TABLE t1 ( b INT ) PACK_KEYS = 0 ENGINE = ndb;
select * from t1;
select * from t1;
b
b
drop table t1;
drop table t1;
create table t1 (a int) engine=ndb;
create table t2 (a int) engine=ndb;
insert into t1 values (1);
insert into t2 values (1);
delete t1.* from t1, t2 where t1.a = t2.a;
select * from t1;
a
select * from t2;
a
1
drop table t1;
drop table t2;
CREATE TABLE t1 (
i INT,
j INT,
x INT,
y INT,
z INT
) engine=ndb;
CREATE TABLE t2 (
i INT,
k INT,
x INT,
y INT,
z INT
) engine=ndb;
CREATE TABLE t3 (
j INT,
k INT,
x INT,
y INT,
z INT
) engine=ndb;
INSERT INTO t1 VALUES ( 1, 2,13,14,15);
INSERT INTO t2 VALUES ( 1, 3,23,24,25);
INSERT INTO t3 VALUES ( 2, 3, 1,34,35), ( 2, 3, 1,34,36);
UPDATE t1 AS a
INNER JOIN t2 AS b
ON a.i = b.i
INNER JOIN t3 AS c
ON a.j = c.j AND b.k = c.k
SET a.x = b.x,
a.y = b.y,
a.z = (
SELECT sum(z)
FROM t3
WHERE y = 34
)
WHERE b.x = 23;
select * from t1;
i j x y z
1 2 23 24 71
drop table t1;
drop table t2;
drop table t3;
mysql-test/t/ndb_basic.test
View file @
cbac75de
...
@@ -614,4 +614,70 @@ CREATE TABLE t1 ( b INT ) PACK_KEYS = 0 ENGINE = ndb;
...
@@ -614,4 +614,70 @@ CREATE TABLE t1 ( b INT ) PACK_KEYS = 0 ENGINE = ndb;
select
*
from
t1
;
select
*
from
t1
;
drop
table
t1
;
drop
table
t1
;
#
# Bug #17249 delete statement with join where clause fails
# when table do not have pk
#
create
table
t1
(
a
int
)
engine
=
ndb
;
create
table
t2
(
a
int
)
engine
=
ndb
;
insert
into
t1
values
(
1
);
insert
into
t2
values
(
1
);
delete
t1
.*
from
t1
,
t2
where
t1
.
a
=
t2
.
a
;
select
*
from
t1
;
select
*
from
t2
;
drop
table
t1
;
drop
table
t2
;
#
# Bug #17257 update fails for inner joins if tables
# do not have Primary Key
#
CREATE
TABLE
t1
(
i
INT
,
j
INT
,
x
INT
,
y
INT
,
z
INT
)
engine
=
ndb
;
CREATE
TABLE
t2
(
i
INT
,
k
INT
,
x
INT
,
y
INT
,
z
INT
)
engine
=
ndb
;
CREATE
TABLE
t3
(
j
INT
,
k
INT
,
x
INT
,
y
INT
,
z
INT
)
engine
=
ndb
;
INSERT
INTO
t1
VALUES
(
1
,
2
,
13
,
14
,
15
);
INSERT
INTO
t2
VALUES
(
1
,
3
,
23
,
24
,
25
);
INSERT
INTO
t3
VALUES
(
2
,
3
,
1
,
34
,
35
),
(
2
,
3
,
1
,
34
,
36
);
UPDATE
t1
AS
a
INNER
JOIN
t2
AS
b
ON
a
.
i
=
b
.
i
INNER
JOIN
t3
AS
c
ON
a
.
j
=
c
.
j
AND
b
.
k
=
c
.
k
SET
a
.
x
=
b
.
x
,
a
.
y
=
b
.
y
,
a
.
z
=
(
SELECT
sum
(
z
)
FROM
t3
WHERE
y
=
34
)
WHERE
b
.
x
=
23
;
select
*
from
t1
;
drop
table
t1
;
drop
table
t2
;
drop
table
t3
;
# End of 4.1 tests
# End of 4.1 tests
sql/ha_ndbcluster.cc
View file @
cbac75de
...
@@ -45,8 +45,6 @@ static const int max_transactions= 256;
...
@@ -45,8 +45,6 @@ static const int max_transactions= 256;
static
const
char
*
ha_ndb_ext
=
".ndb"
;
static
const
char
*
ha_ndb_ext
=
".ndb"
;
#define NDB_HIDDEN_PRIMARY_KEY_LENGTH 8
#define NDB_FAILED_AUTO_INCREMENT ~(Uint64)0
#define NDB_FAILED_AUTO_INCREMENT ~(Uint64)0
#define NDB_AUTO_INCREMENT_RETRIES 10
#define NDB_AUTO_INCREMENT_RETRIES 10
...
@@ -747,7 +745,7 @@ int ha_ndbcluster::get_ndb_value(NdbOperation *ndb_op, Field *field,
...
@@ -747,7 +745,7 @@ int ha_ndbcluster::get_ndb_value(NdbOperation *ndb_op, Field *field,
}
}
// Used for hidden key only
// Used for hidden key only
m_value
[
fieldnr
].
rec
=
ndb_op
->
getValue
(
fieldnr
,
NULL
);
m_value
[
fieldnr
].
rec
=
ndb_op
->
getValue
(
fieldnr
,
m_ref
);
DBUG_RETURN
(
m_value
[
fieldnr
].
rec
==
NULL
);
DBUG_RETURN
(
m_value
[
fieldnr
].
rec
==
NULL
);
}
}
...
@@ -2098,13 +2096,10 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data)
...
@@ -2098,13 +2096,10 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data)
DBUG_PRINT
(
"info"
,
(
"Using hidden key"
));
DBUG_PRINT
(
"info"
,
(
"Using hidden key"
));
// Require that the PK for this record has previously been
// Require that the PK for this record has previously been
// read into m_value
// read into m_ref
uint
no_fields
=
table
->
fields
;
DBUG_DUMP
(
"key"
,
m_ref
,
NDB_HIDDEN_PRIMARY_KEY_LENGTH
);
NdbRecAttr
*
rec
=
m_value
[
no_fields
].
rec
;
DBUG_ASSERT
(
rec
);
DBUG_DUMP
(
"key"
,
(
char
*
)
rec
->
aRef
(),
NDB_HIDDEN_PRIMARY_KEY_LENGTH
);
if
(
set_hidden_key
(
op
,
no_fields
,
rec
->
aRef
()
))
if
(
set_hidden_key
(
op
,
table
->
fields
,
m_ref
))
ERR_RETURN
(
op
->
getNdbError
());
ERR_RETURN
(
op
->
getNdbError
());
}
}
else
else
...
@@ -2181,11 +2176,8 @@ int ha_ndbcluster::delete_row(const byte *record)
...
@@ -2181,11 +2176,8 @@ int ha_ndbcluster::delete_row(const byte *record)
{
{
// This table has no primary key, use "hidden" primary key
// This table has no primary key, use "hidden" primary key
DBUG_PRINT
(
"info"
,
(
"Using hidden key"
));
DBUG_PRINT
(
"info"
,
(
"Using hidden key"
));
uint
no_fields
=
table
->
fields
;
NdbRecAttr
*
rec
=
m_value
[
no_fields
].
rec
;
DBUG_ASSERT
(
rec
!=
NULL
);
if
(
set_hidden_key
(
op
,
no_fields
,
rec
->
aRef
()
))
if
(
set_hidden_key
(
op
,
table
->
fields
,
m_ref
))
ERR_RETURN
(
op
->
getNdbError
());
ERR_RETURN
(
op
->
getNdbError
());
}
}
else
else
...
@@ -2792,7 +2784,7 @@ void ha_ndbcluster::position(const byte *record)
...
@@ -2792,7 +2784,7 @@ void ha_ndbcluster::position(const byte *record)
hidden_col
->
getAutoIncrement
()
&&
hidden_col
->
getAutoIncrement
()
&&
rec
!=
NULL
&&
rec
!=
NULL
&&
ref_length
==
NDB_HIDDEN_PRIMARY_KEY_LENGTH
);
ref_length
==
NDB_HIDDEN_PRIMARY_KEY_LENGTH
);
memcpy
(
ref
,
(
const
void
*
)
rec
->
aRef
()
,
ref_length
);
memcpy
(
ref
,
m_ref
,
ref_length
);
}
}
DBUG_DUMP
(
"ref"
,
(
char
*
)
ref
,
ref_length
);
DBUG_DUMP
(
"ref"
,
(
char
*
)
ref
,
ref_length
);
...
...
sql/ha_ndbcluster.h
View file @
cbac75de
...
@@ -27,6 +27,8 @@
...
@@ -27,6 +27,8 @@
#include <ndbapi_limits.h>
#include <ndbapi_limits.h>
#define NDB_HIDDEN_PRIMARY_KEY_LENGTH 8
class
Ndb
;
// Forward declaration
class
Ndb
;
// Forward declaration
class
NdbOperation
;
// Forward declaration
class
NdbOperation
;
// Forward declaration
class
NdbConnection
;
// Forward declaration
class
NdbConnection
;
// Forward declaration
...
@@ -226,6 +228,7 @@ class ha_ndbcluster: public handler
...
@@ -226,6 +228,7 @@ class ha_ndbcluster: public handler
// NdbRecAttr has no reference to blob
// NdbRecAttr has no reference to blob
typedef
union
{
NdbRecAttr
*
rec
;
NdbBlob
*
blob
;
void
*
ptr
;
}
NdbValue
;
typedef
union
{
NdbRecAttr
*
rec
;
NdbBlob
*
blob
;
void
*
ptr
;
}
NdbValue
;
NdbValue
m_value
[
NDB_MAX_ATTRIBUTES_IN_TABLE
];
NdbValue
m_value
[
NDB_MAX_ATTRIBUTES_IN_TABLE
];
byte
m_ref
[
NDB_HIDDEN_PRIMARY_KEY_LENGTH
];
bool
m_use_write
;
bool
m_use_write
;
bool
m_ignore_dup_key
;
bool
m_ignore_dup_key
;
bool
m_primary_key_update
;
bool
m_primary_key_update
;
...
...
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