Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  unique_sec.result   Sprache: Lisp

 

DROP TABLE IF EXISTS t1;
connect  con1,localhost,root,,;
connect  con2,localhost,root,,;
connection con1;
CREATE TABLE t1 (id1 INT NOT NULL, id2 INT NOT NULL, id3 VARCHAR(32),
id4 INT, id5 VARCHAR(32),
value1 INT, value2 INT, value3 VARCHAR(32),
PRIMARY KEY (id1, id2)  , 
UNIQUE INDEX (id2, id1)  ,
UNIQUE INDEX (id2, id3, id4)  ,
INDEX (id1)  ,
INDEX (id3, id1)  ,
UNIQUE INDEX(id5)  , 
INDEX (id2, id5)) ENGINE=ROCKSDB;
SELECT COUNT(*) FROM t1;
COUNT(*)
10
# Test inserting a key that returns duplicate error
INSERT INTO t1 VALUES (1, 1, 11, 11, 11, 11, 11, 11);
ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
INSERT INTO t1 VALUES (5, 5, 11, 11, 11, 11, 11, 11);
ERROR 23000: Duplicate entry '5-5' for key 'PRIMARY'
INSERT INTO t1 VALUES (10, 10, 11, 11, 11, 11, 11, 11);
ERROR 23000: Duplicate entry '10-10' for key 'PRIMARY'
INSERT INTO t1 VALUES (11, 1, 1, 1, 11, 11, 11, 11);
ERROR 23000: Duplicate entry '1-1-1' for key 'id2_2'
INSERT INTO t1 VALUES (11, 5, 5, 5, 11, 11, 11, 11);
ERROR 23000: Duplicate entry '5-5-5' for key 'id2_2'
INSERT INTO t1 VALUES (11, 10, 10, 10, 11, 11, 11, 11);
ERROR 23000: Duplicate entry '10-10-10' for key 'id2_2'
INSERT INTO t1 VALUES (11, 11, 11, 11, 1, 11, 11, 11);
ERROR 23000: Duplicate entry '1' for key 'id5'
INSERT INTO t1 VALUES (11, 11, 11, 11, 5, 11, 11, 11);
ERROR 23000: Duplicate entry '5' for key 'id5'
INSERT INTO t1 VALUES (11, 11, 11, 11, 10, 11, 11, 11);
ERROR 23000: Duplicate entry '10' for key 'id5'
# Test updating a key that returns duplicate error
UPDATE t1 SET id2=1, id3=1, id4=1 WHERE id1=2;
ERROR 23000: Duplicate entry '1-1-1' for key 'id2_2'
UPDATE t1 SET id2=1, id3=1, id4=1;
ERROR 23000: Duplicate entry '1-1-1' for key 'id2_2'
SELECT COUNT(*) FROM t1;
COUNT(*)
10
# Test updating a key to itself
UPDATE t1 set id2=id4;
UPDATE t1 set id5=id3, value1=value2;
UPDATE t1 set value3=value1;
# Test modifying values should not cause duplicates
UPDATE t1 SET value1=value3+1;
UPDATE t1 SET value3=value3 div 2;
UPDATE t1 SET value2=value3;
SELECT COUNT(*) FROM t1;
COUNT(*)
10
# Test NULL values are considered unique
INSERT INTO t1 VALUES (20, 20, 20, NULL, NULL, 20, 20, 20);
INSERT INTO t1 VALUES (21, 20, 20, NULL, NULL, 20, 20, 20);
INSERT INTO t1 VALUES (22, 20, 20, NULL, NULL, 20, 20, 20);
SELECT COUNT(*) FROM t1;
COUNT(*)
13
# Adding multiple rows where one of the rows fail the duplicate
# check should fail the whole statement
INSERT INTO t1 VALUES (23, 23, 23, 23, 23, 23, 23, 23),
(24, 24, 24, 24, 24, 24, 24, 24),
(25, 10, 10, 10, 25, 25, 25, 25),
(26, 26, 26, 26, 26, 26, 26, 26);
ERROR 23000: Duplicate entry '10-10-10' for key 'id2_2'
SELECT COUNT(*) FROM t1;
COUNT(*)
13
connection con1;
BEGIN;
INSERT INTO t1 VALUES (30, 31, 32, 33, 34, 30, 30, 30);
connection con2;
BEGIN;
SELECT COUNT(*) FROM t1;
COUNT(*)
13
# Primary key should prevent duplicate on insert
INSERT INTO t1 VALUES (30, 31, 30, 30, 30, 30, 30, 30);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
# Primary key should prevent duplicate on update
UPDATE t1 SET id1=30, id2=31 WHERE id2=10;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
# Unique secondary key should prevent duplicate on insert
INSERT INTO t1 VALUES (31, 31, 32, 33, 30, 30, 30, 30);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t1 VALUES (32, 32, 32, 32, 34, 32, 32, 32);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
# Unique secondary key should prevent duplicate on update
UPDATE t1 SET id2=31, id3=32, id4=33 WHERE id2=8;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
UPDATE t1 SET id5=34 WHERE id2=8;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
# Adding multiple rows where one of the rows fail the duplicate
# check should fail the whole statement
INSERT INTO t1 VALUES (35, 35, 35, 35, 35, 35, 35, 35),
(36, 36, 36, 36, 36, 36, 36, 36),
(37, 31, 32, 33, 37, 37, 37, 37),
(38, 38, 38, 38, 38, 38, 38, 38);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t1 VALUES (35, 35, 35, 35, 35, 35, 35, 35),
(36, 36, 36, 36, 36, 36, 36, 36),
(37, 37, 37, 37, 34, 37, 37, 37),
(38, 38, 38, 38, 38, 38, 38, 38);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
# NULL values are unique and duplicates in value fields are ignored
INSERT INTO t1 VALUES (37, 31, 32, NULL, 37, 37, 37, 37),
(38, 31, 32, NULL, 38, 37, 37, 37),
(39, 31, 32, NULL, 39, 37, 37, 37);
SELECT COUNT(*) FROM t1;
COUNT(*)
16
# Fail on duplicate key update for row added in our transaction
UPDATE t1 SET id5=37 WHERE id1=38;
ERROR 23000: Duplicate entry '37' for key 'id5'
# Fail on lock timeout for row modified in another transaction
UPDATE t1 SET id5=34 WHERE id1=38;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
# NULL values are unique
UPDATE t1 SET id5=NULL WHERE value1 > 37;
connection con1;
COMMIT;
connection con2;
COMMIT;
connection con2;
BEGIN;
SELECT COUNT(*) FROM t1;
COUNT(*)
17
connection con1;
BEGIN;
INSERT INTO t1 VALUES (40, 40, 40, 40, 40, 40, 40, 40);
connection con2;
# When transaction is pending, fail on lock acquisition
INSERT INTO t1 VALUES (40, 40, 40, 40, 40, 40, 40, 40);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t1 VALUES (41, 40, 40, 40, 40, 40, 40, 40);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SELECT COUNT(*) FROM t1;
COUNT(*)
17
connection con1;
COMMIT;
connection con2;
# When transaction is committed, fail on duplicate key
INSERT INTO t1 VALUES (40, 40, 40, 40, 40, 40, 40, 40);
Got one of the listed errors
INSERT INTO t1 VALUES (41, 40, 40, 40, 40, 40, 40, 40);
ERROR 23000: Duplicate entry '40-40-40' for key 'id2_2'
ROLLBACK;
SELECT * FROM t1;
id1 id2 id3 id4 id5 value1 value2 value3
1 1 1 1 1 2 0 0
2 2 2 2 2 3 1 1
3 3 3 3 3 4 1 1
4 4 4 4 4 5 2 2
5 5 5 5 5 6 2 2
6 6 6 6 6 7 3 3
7 7 7 7 7 8 3 3
8 8 8 8 8 9 4 4
9 9 9 9 9 10 4 4
10 10 10 10 10 11 5 5
20 20 20 NULL NULL 20 20 20
21 20 20 NULL NULL 20 20 20
22 20 20 NULL NULL 20 20 20
30 31 32 33 34 30 30 30
37 31 32 NULL 37 37 37 37
38 31 32 NULL 38 37 37 37
39 31 32 NULL 39 37 37 37
40 40 40 40 40 40 40 40
disconnect con1;
disconnect con2;
connection default;
DROP TABLE t1;
#
# Issue #88: Creating unique index over column with duplicate values succeeds
#
create table t1 (pk int primary key, a int) engine=rocksdb;
insert into t1 values 
(1, 1),
(2, 2),
(3, 3),
(4, 1),
(5, 5);
alter table t1 add unique(a);
ERROR 23000: Duplicate entry '1' for key 'a'
drop table t1;
#
# Issue #111
#
CREATE TABLE t2 (pk int, a int, PRIMARY KEY (pk, a), UNIQUE KEY (a)) ENGINE=ROCKSDB PARTITION BY KEY (a) PARTITIONS 16;
INSERT INTO t2 VALUES (1,1);
INSERT INTO t2 VALUES (1,1);
ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
INSERT INTO t2 VALUES (2,1);
ERROR 23000: Duplicate entry '1' for key 'a'
DROP TABLE t2;
#
# Issue #491 (https://github.com/facebook/mysql-5.6/issues/491)
#
CREATE TABLE t (a BLOB, PRIMARY KEY(a(2)), UNIQUE KEY (a(1))) engine=rocksdb;
INSERT INTO t VALUES('a');
CHECK TABLE t EXTENDED;
Table Op Msg_type Msg_text
test.t check status OK
DROP TABLE t;
CREATE TABLE t (a VARCHAR(255), PRIMARY KEY(a), UNIQUE KEY (a(1))) engine=rocksdb CHARSET=latin1;
INSERT INTO t VALUES('a');
CHECK TABLE t EXTENDED;
Table Op Msg_type Msg_text
test.t check status OK
DROP TABLE t;
CREATE TABLE t (a VARCHAR(255), PRIMARY KEY(a(2)), UNIQUE KEY (a(1))) engine=rocksdb CHARSET=latin1;
INSERT INTO t VALUES('a');
CHECK TABLE t EXTENDED;
Table Op Msg_type Msg_text
test.t check status OK
DROP TABLE t;

Messung V0.5 in Prozent
C=52 H=100 G=79

¤ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126864
#Domains=1897691