mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/marty/MySQL/mysql-5.0
This commit is contained in:
commit
c0ff64f8f9
4 changed files with 60 additions and 6 deletions
|
@ -1,4 +1,4 @@
|
||||||
drop table if exists t1;
|
drop table if exists t1,t2;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
gesuchnr int(11) DEFAULT '0' NOT NULL,
|
gesuchnr int(11) DEFAULT '0' NOT NULL,
|
||||||
benutzer_id int(11) DEFAULT '0' NOT NULL,
|
benutzer_id int(11) DEFAULT '0' NOT NULL,
|
||||||
|
@ -31,3 +31,24 @@ SELECT * from t1 ORDER BY i;
|
||||||
i j k
|
i j k
|
||||||
3 1 42
|
3 1 42
|
||||||
17 2 24
|
17 2 24
|
||||||
|
CREATE TABLE t2 (a INT(11) NOT NULL,
|
||||||
|
b INT(11) NOT NULL,
|
||||||
|
c INT(11) NOT NULL,
|
||||||
|
x TEXT,
|
||||||
|
y TEXT,
|
||||||
|
z TEXT,
|
||||||
|
id INT(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
i INT(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY a (a,b,c)
|
||||||
|
) ENGINE=ndbcluster;
|
||||||
|
REPLACE INTO t2 (a,b,c,x,y,z,i) VALUES (1,1,1,'a','a','a',1),(1,1,1,'b','b','b',2), (1,1,1,'c','c','c',3);
|
||||||
|
SELECT * FROM t2 ORDER BY id;
|
||||||
|
a b c x y z id i
|
||||||
|
1 1 1 c c c 3 3
|
||||||
|
REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'a','a','a',1);
|
||||||
|
REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'b','b','b',2);
|
||||||
|
SELECT * FROM t2 ORDER BY id;
|
||||||
|
a b c x y z id i
|
||||||
|
1 1 1 b b b 5 2
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1,t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
|
@ -27,6 +27,8 @@ replace into t1 (gesuchnr,benutzer_id) values (1,1);
|
||||||
select * from t1 order by gesuchnr;
|
select * from t1 order by gesuchnr;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
# End of 4.1 tests
|
||||||
|
|
||||||
# bug#17431
|
# bug#17431
|
||||||
CREATE TABLE t1(i INT PRIMARY KEY AUTO_INCREMENT,
|
CREATE TABLE t1(i INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
j INT,
|
j INT,
|
||||||
|
@ -38,4 +40,28 @@ REPLACE INTO t1 (j,k) VALUES (1,42);
|
||||||
REPLACE INTO t1 (i,j) VALUES (17,2);
|
REPLACE INTO t1 (i,j) VALUES (17,2);
|
||||||
SELECT * from t1 ORDER BY i;
|
SELECT * from t1 ORDER BY i;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# bug#19906
|
||||||
|
CREATE TABLE t2 (a INT(11) NOT NULL,
|
||||||
|
b INT(11) NOT NULL,
|
||||||
|
c INT(11) NOT NULL,
|
||||||
|
x TEXT,
|
||||||
|
y TEXT,
|
||||||
|
z TEXT,
|
||||||
|
id INT(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
i INT(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY a (a,b,c)
|
||||||
|
) ENGINE=ndbcluster;
|
||||||
|
|
||||||
|
REPLACE INTO t2 (a,b,c,x,y,z,i) VALUES (1,1,1,'a','a','a',1),(1,1,1,'b','b','b',2), (1,1,1,'c','c','c',3);
|
||||||
|
|
||||||
|
SELECT * FROM t2 ORDER BY id;
|
||||||
|
|
||||||
|
REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'a','a','a',1);
|
||||||
|
REPLACE INTO t2(a,b,c,x,y,z,i) values (1,1,1,'b','b','b',2);
|
||||||
|
|
||||||
|
SELECT * FROM t2 ORDER BY id;
|
||||||
|
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -771,10 +771,11 @@ int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg)
|
||||||
if (ndb_blob->blobsNextBlob() != NULL)
|
if (ndb_blob->blobsNextBlob() != NULL)
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
ha_ndbcluster *ha= (ha_ndbcluster *)arg;
|
ha_ndbcluster *ha= (ha_ndbcluster *)arg;
|
||||||
DBUG_RETURN(ha->get_ndb_blobs_value(ndb_blob));
|
DBUG_RETURN(ha->get_ndb_blobs_value(ndb_blob, ha->m_blobs_offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob)
|
int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob,
|
||||||
|
my_ptrdiff_t ptrdiff)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("get_ndb_blobs_value");
|
DBUG_ENTER("get_ndb_blobs_value");
|
||||||
|
|
||||||
|
@ -807,7 +808,10 @@ int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob)
|
||||||
if (ndb_blob->readData(buf, len) != 0)
|
if (ndb_blob->readData(buf, len) != 0)
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
DBUG_ASSERT(len == blob_len);
|
DBUG_ASSERT(len == blob_len);
|
||||||
|
// Ugly hack assumes only ptr needs to be changed
|
||||||
|
field_blob->ptr+= ptrdiff;
|
||||||
field_blob->set_ptr(len, buf);
|
field_blob->set_ptr(len, buf);
|
||||||
|
field_blob->ptr-= ptrdiff;
|
||||||
}
|
}
|
||||||
offset+= blob_size;
|
offset+= blob_size;
|
||||||
}
|
}
|
||||||
|
@ -870,6 +874,7 @@ int ha_ndbcluster::get_ndb_value(NdbOperation *ndb_op, Field *field,
|
||||||
if (ndb_blob != NULL)
|
if (ndb_blob != NULL)
|
||||||
{
|
{
|
||||||
// Set callback
|
// Set callback
|
||||||
|
m_blobs_offset= buf - (byte*) table->record[0];
|
||||||
void *arg= (void *)this;
|
void *arg= (void *)this;
|
||||||
DBUG_RETURN(ndb_blob->setActiveHook(g_get_ndb_blobs_value, arg) != 0);
|
DBUG_RETURN(ndb_blob->setActiveHook(g_get_ndb_blobs_value, arg) != 0);
|
||||||
}
|
}
|
||||||
|
@ -4584,6 +4589,7 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg):
|
||||||
m_ops_pending(0),
|
m_ops_pending(0),
|
||||||
m_skip_auto_increment(TRUE),
|
m_skip_auto_increment(TRUE),
|
||||||
m_blobs_pending(0),
|
m_blobs_pending(0),
|
||||||
|
m_blobs_offset(0),
|
||||||
m_blobs_buffer(0),
|
m_blobs_buffer(0),
|
||||||
m_blobs_buffer_size(0),
|
m_blobs_buffer_size(0),
|
||||||
m_dupkey((uint) -1),
|
m_dupkey((uint) -1),
|
||||||
|
|
|
@ -629,7 +629,7 @@ private:
|
||||||
int set_ndb_value(NdbOperation*, Field *field, uint fieldnr, bool *set_blob_value= 0);
|
int set_ndb_value(NdbOperation*, Field *field, uint fieldnr, bool *set_blob_value= 0);
|
||||||
int get_ndb_value(NdbOperation*, Field *field, uint fieldnr, byte*);
|
int get_ndb_value(NdbOperation*, Field *field, uint fieldnr, byte*);
|
||||||
friend int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg);
|
friend int g_get_ndb_blobs_value(NdbBlob *ndb_blob, void *arg);
|
||||||
int get_ndb_blobs_value(NdbBlob *last_ndb_blob);
|
int get_ndb_blobs_value(NdbBlob *last_ndb_blob, my_ptrdiff_t ptrdiff);
|
||||||
int set_primary_key(NdbOperation *op, const byte *key);
|
int set_primary_key(NdbOperation *op, const byte *key);
|
||||||
int set_primary_key_from_record(NdbOperation *op, const byte *record);
|
int set_primary_key_from_record(NdbOperation *op, const byte *record);
|
||||||
int set_index_key_from_record(NdbOperation *op, const byte *record,
|
int set_index_key_from_record(NdbOperation *op, const byte *record,
|
||||||
|
@ -706,6 +706,7 @@ private:
|
||||||
ha_rows m_ops_pending;
|
ha_rows m_ops_pending;
|
||||||
bool m_skip_auto_increment;
|
bool m_skip_auto_increment;
|
||||||
bool m_blobs_pending;
|
bool m_blobs_pending;
|
||||||
|
my_ptrdiff_t m_blobs_offset;
|
||||||
// memory for blobs in one tuple
|
// memory for blobs in one tuple
|
||||||
char *m_blobs_buffer;
|
char *m_blobs_buffer;
|
||||||
uint32 m_blobs_buffer_size;
|
uint32 m_blobs_buffer_size;
|
||||||
|
|
Loading…
Add table
Reference in a new issue