mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 23:25:34 +02:00
Bug#25817 UPDATE IGNORE doesn't check write_set when checking unique indexes: Added checks
This commit is contained in:
parent
f788654012
commit
c19a8c0631
4 changed files with 57 additions and 5 deletions
|
|
@ -59,6 +59,12 @@ typedef struct ndb_index_data {
|
|||
bool null_in_unique_index;
|
||||
} NDB_INDEX_DATA;
|
||||
|
||||
typedef enum ndb_write_op {
|
||||
NDB_INSERT = 0,
|
||||
NDB_UPDATE = 1,
|
||||
NDB_PK_UPDATE = 2
|
||||
} NDB_WRITE_OP;
|
||||
|
||||
typedef struct st_ndbcluster_share {
|
||||
THR_LOCK lock;
|
||||
pthread_mutex_t mutex;
|
||||
|
|
@ -251,7 +257,7 @@ private:
|
|||
const NdbOperation *first,
|
||||
const NdbOperation *last,
|
||||
uint errcode);
|
||||
int peek_indexed_rows(const byte *record, bool check_pk);
|
||||
int peek_indexed_rows(const byte *record, NDB_WRITE_OP write_op);
|
||||
int unique_index_read(const byte *key, uint key_len,
|
||||
byte *buf);
|
||||
int ordered_index_scan(const key_range *start_key,
|
||||
|
|
@ -286,6 +292,7 @@ private:
|
|||
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_from_record(NdbOperation *op, const byte *record);
|
||||
bool check_index_fields_in_write_set(uint keyno);
|
||||
int set_index_key_from_record(NdbOperation *op, const byte *record,
|
||||
uint keyno);
|
||||
int set_bounds(NdbIndexScanOperation*, const key_range *keys[2], uint= 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue