summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-09-01 02:13:35 +0300
committerunknown <monty@mysql.com>2004-09-01 02:13:35 +0300
commit8122a679448389874e9062f13df0f900a3c082a6 (patch)
treecd915739945548628e5c5f8963b9f916cf2c20ea
parentae3dd78b5fd15f69b426ceeac6bddb964b752626 (diff)
parent775c057ef4445f787bf07e0a99ecb8075672f9cd (diff)
downloadmariadb-git-8122a679448389874e9062f13df0f900a3c082a6.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1 mysql-test/r/ndb_basic.result: Auto merged mysql-test/t/ndb_basic.test: Auto merged
-rw-r--r--configure.in2
-rw-r--r--mysql-test/r/ndb_basic.result995
-rw-r--r--mysql-test/r/ndb_index_ordered.result45
-rw-r--r--mysql-test/r/ndb_index_unique.result62
-rw-r--r--mysql-test/r/ndb_replace.result2
-rw-r--r--mysql-test/t/ndb_basic.test10
-rw-r--r--mysql-test/t/ndb_index_ordered.test34
-rw-r--r--mysql-test/t/ndb_index_unique.test70
-rw-r--r--mysql-test/t/ndb_replace.test2
-rw-r--r--sql/ha_ndbcluster.cc55
-rw-r--r--sql/ha_ndbcluster.h1
-rw-r--r--sql/share/czech/errmsg.txt2
-rw-r--r--sql/share/danish/errmsg.txt2
-rw-r--r--sql/share/dutch/errmsg.txt2
-rw-r--r--sql/share/english/errmsg.txt2
-rw-r--r--sql/share/estonian/errmsg.txt2
-rw-r--r--sql/share/french/errmsg.txt2
-rw-r--r--sql/share/german/errmsg.txt2
-rw-r--r--sql/share/greek/errmsg.txt2
-rw-r--r--sql/share/hungarian/errmsg.txt2
-rw-r--r--sql/share/italian/errmsg.txt2
-rw-r--r--sql/share/japanese/errmsg.txt2
-rw-r--r--sql/share/korean/errmsg.txt2
-rw-r--r--sql/share/norwegian-ny/errmsg.txt2
-rw-r--r--sql/share/norwegian/errmsg.txt2
-rw-r--r--sql/share/polish/errmsg.txt2
-rw-r--r--sql/share/portuguese/errmsg.txt2
-rw-r--r--sql/share/romanian/errmsg.txt2
-rw-r--r--sql/share/russian/errmsg.txt2
-rw-r--r--sql/share/serbian/errmsg.txt2
-rw-r--r--sql/share/slovak/errmsg.txt2
-rw-r--r--sql/share/spanish/errmsg.txt2
-rw-r--r--sql/share/swedish/errmsg.txt2
-rw-r--r--sql/share/ukrainian/errmsg.txt2
-rw-r--r--sql/sql_yacc.yy9
35 files changed, 236 insertions, 1097 deletions
diff --git a/configure.in b/configure.in
index 3d0da156c94..7c48eddf952 100644
--- a/configure.in
+++ b/configure.in
@@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_INIT(sql/mysqld.cc)
AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line!
-AM_INIT_AUTOMAKE(mysql, 4.1.4-gamma)
+AM_INIT_AUTOMAKE(mysql, 4.1.5-gamma)
AM_CONFIG_HEADER(config.h)
PROTOCOL_VERSION=10
diff --git a/mysql-test/r/ndb_basic.result b/mysql-test/r/ndb_basic.result
index f5f5fe5ba18..80e1aa7939a 100644
--- a/mysql-test/r/ndb_basic.result
+++ b/mysql-test/r/ndb_basic.result
@@ -234,1011 +234,18 @@ select * from t4 where a = 7 and b = 17 order by a;
a b c d
select * from t4 where a = 7 and b != 16 order by b;
a b c d
+delete from t2 where a > 5;
select x1.a, x1.b from t2 x1, t2 x2 where x1.b = x2.b order by x1.a;
a b
1 10
3 12
5 14
-7 16
-9 18
-11 20
-13 22
-15 24
-17 26
-19 28
-21 30
-23 32
-25 34
-27 36
-29 38
-31 40
-33 42
-35 44
-37 46
-39 48
-41 50
-43 52
-45 54
-47 56
-49 58
-51 60
-53 62
-55 64
-57 66
-59 68
-61 70
-63 72
-65 74
-67 76
-69 78
-71 80
-73 82
-75 84
-77 86
-79 88
-81 90
-83 92
-85 94
-87 96
-89 98
-91 100
-93 102
-95 104
-97 106
-99 108
-101 110
-103 112
-105 114
-107 116
-109 118
-111 120
-113 122
-115 124
-117 126
-119 128
-121 130
-123 132
-125 134
-127 136
-129 138
-131 140
-133 142
-135 144
-137 146
-139 148
-141 150
-143 152
-145 154
-147 156
-149 158
-151 160
-153 162
-155 164
-157 166
-159 168
-161 170
-163 172
-165 174
-167 176
-169 178
-171 180
-173 182
-175 184
-177 186
-179 188
-181 190
-183 192
-185 194
-187 196
-189 198
-191 200
-193 202
-195 204
-197 206
-199 208
-201 210
-203 212
-205 214
-207 216
-209 218
-211 220
-213 222
-215 224
-217 226
-219 228
-221 230
-223 232
-225 234
-227 236
-229 238
-231 240
-233 242
-235 244
-237 246
-239 248
-241 250
-243 252
-245 254
-247 256
-249 258
-251 260
-253 262
-255 264
-257 266
-259 268
-261 270
-263 272
-265 274
-267 276
-269 278
-271 280
-273 282
-275 284
-277 286
-279 288
-281 290
-283 292
-285 294
-287 296
-289 298
-291 300
-293 302
-295 304
-297 306
-299 308
-301 310
-303 312
-305 314
-307 316
-309 318
-311 320
-313 322
-315 324
-317 326
-319 328
-321 330
-323 332
-325 334
-327 336
-329 338
-331 340
-333 342
-335 344
-337 346
-339 348
-341 350
-343 352
-345 354
-347 356
-349 358
-351 360
-353 362
-355 364
-357 366
-359 368
-361 370
-363 372
-365 374
-367 376
-369 378
-371 380
-373 382
-375 384
-377 386
-379 388
-381 390
-383 392
-385 394
-387 396
-389 398
-391 400
-393 402
-395 404
-397 406
-399 408
-401 410
-403 412
-405 414
-407 416
-409 418
-411 420
-413 422
-415 424
-417 426
-419 428
-421 430
-423 432
-425 434
-427 436
-429 438
-431 440
-433 442
-435 444
-437 446
-439 448
-441 450
-443 452
-445 454
-447 456
-449 458
-451 460
-453 462
-455 464
-457 466
-459 468
-461 470
-463 472
-465 474
-467 476
-469 478
-471 480
-473 482
-475 484
-477 486
-479 488
-481 490
-483 492
-485 494
-487 496
-489 498
-491 500
-493 502
-495 504
-497 506
-499 508
-501 510
-503 512
-505 514
-507 516
-509 518
-511 520
-513 522
-515 524
-517 526
-519 528
-521 530
-523 532
-525 534
-527 536
-529 538
-531 540
-533 542
-535 544
-537 546
-539 548
-541 550
-543 552
-545 554
-547 556
-549 558
-551 560
-553 562
-555 564
-557 566
-559 568
-561 570
-563 572
-565 574
-567 576
-569 578
-571 580
-573 582
-575 584
-577 586
-579 588
-581 590
-583 592
-585 594
-587 596
-589 598
-591 600
-593 602
-595 604
-597 606
-599 608
-601 610
-603 612
-605 614
-607 616
-609 618
-611 620
-613 622
-615 624
-617 626
-619 628
-621 630
-623 632
-625 634
-627 636
-629 638
-631 640
-633 642
-635 644
-637 646
-639 648
-641 650
-643 652
-645 654
-647 656
-649 658
-651 660
-653 662
-655 664
-657 666
-659 668
-661 670
-663 672
-665 674
-667 676
-669 678
-671 680
-673 682
-675 684
-677 686
-679 688
-681 690
-683 692
-685 694
-687 696
-689 698
-691 700
-693 702
-695 704
-697 706
-699 708
-701 710
-703 712
-705 714
-707 716
-709 718
-711 720
-713 722
-715 724
-717 726
-719 728
-721 730
-723 732
-725 734
-727 736
-729 738
-731 740
-733 742
-735 744
-737 746
-739 748
-741 750
-743 752
-745 754
-747 756
-749 758
-751 760
-753 762
-755 764
-757 766
-759 768
-761 770
-763 772
-765 774
-767 776
-769 778
-771 780
-773 782
-775 784
-777 786
-779 788
-781 790
-783 792
-785 794
-787 796
-789 798
-791 800
-793 802
-795 804
-797 806
-799 808
-801 810
-803 812
-805 814
-807 816
-809 818
-811 820
-813 822
-815 824
-817 826
-819 828
-821 830
-823 832
-825 834
-827 836
-829 838
-831 840
-833 842
-835 844
-837 846
-839 848
-841 850
-843 852
-845 854
-847 856
-849 858
-851 860
-853 862
-855 864
-857 866
-859 868
-861 870
-863 872
-865 874
-867 876
-869 878
-871 880
-873 882
-875 884
-877 886
-879 888
-881 890
-883 892
-885 894
-887 896
-889 898
-891 900
-893 902
-895 904
-897 906
-899 908
-901 910
-903 912
-905 914
-907 916
-909 918
-911 920
-913 922
-915 924
-917 926
-919 928
-921 930
-923 932
-925 934
-927 936
-929 938
-931 940
-933 942
-935 944
-937 946
-939 948
-941 950
-943 952
-945 954
-947 956
-949 958
-951 960
-953 962
-955 964
-957 966
-959 968
-961 970
-963 972
-965 974
-967 976
-969 978
-971 980
-973 982
-975 984
-977 986
-979 988
-981 990
-983 992
-985 994
-987 996
-989 998
-991 1000
-993 1002
-995 1004
-997 1006
-999 1008
select a, b FROM t2 outer_table where
a = (select a from t2 where b = outer_table.b ) order by a;
a b
1 10
3 12
5 14
-7 16
-9 18
-11 20
-13 22
-15 24
-17 26
-19 28
-21 30
-23 32
-25 34
-27 36
-29 38
-31 40
-33 42
-35 44
-37 46
-39 48
-41 50
-43 52
-45 54
-47 56
-49 58
-51 60
-53 62
-55 64
-57 66
-59 68
-61 70
-63 72
-65 74
-67 76
-69 78
-71 80
-73 82
-75 84
-77 86
-79 88
-81 90
-83 92
-85 94
-87 96
-89 98
-91 100
-93 102
-95 104
-97 106
-99 108
-101 110
-103 112
-105 114
-107 116
-109 118
-111 120
-113 122
-115 124
-117 126
-119 128
-121 130
-123 132
-125 134
-127 136
-129 138
-131 140
-133 142
-135 144
-137 146
-139 148
-141 150
-143 152
-145 154
-147 156
-149 158
-151 160
-153 162
-155 164
-157 166
-159 168
-161 170
-163 172
-165 174
-167 176
-169 178
-171 180
-173 182
-175 184
-177 186
-179 188
-181 190
-183 192
-185 194
-187 196
-189 198
-191 200
-193 202
-195 204
-197 206
-199 208
-201 210
-203 212
-205 214
-207 216
-209 218
-211 220
-213 222
-215 224
-217 226
-219 228
-221 230
-223 232
-225 234
-227 236
-229 238
-231 240
-233 242
-235 244
-237 246
-239 248
-241 250
-243 252
-245 254
-247 256
-249 258
-251 260
-253 262
-255 264
-257 266
-259 268
-261 270
-263 272
-265 274
-267 276
-269 278
-271 280
-273 282
-275 284
-277 286
-279 288
-281 290
-283 292
-285 294
-287 296
-289 298
-291 300
-293 302
-295 304
-297 306
-299 308
-301 310
-303 312
-305 314
-307 316
-309 318
-311 320
-313 322
-315 324
-317 326
-319 328
-321 330
-323 332
-325 334
-327 336
-329 338
-331 340
-333 342
-335 344
-337 346
-339 348
-341 350
-343 352
-345 354
-347 356
-349 358
-351 360
-353 362
-355 364
-357 366
-359 368
-361 370
-363 372
-365 374
-367 376
-369 378
-371 380
-373 382
-375 384
-377 386
-379 388
-381 390
-383 392
-385 394
-387 396
-389 398
-391 400
-393 402
-395 404
-397 406
-399 408
-401 410
-403 412
-405 414
-407 416
-409 418
-411 420
-413 422
-415 424
-417 426
-419 428
-421 430
-423 432
-425 434
-427 436
-429 438
-431 440
-433 442
-435 444
-437 446
-439 448
-441 450
-443 452
-445 454
-447 456
-449 458
-451 460
-453 462
-455 464
-457 466
-459 468
-461 470
-463 472
-465 474
-467 476
-469 478
-471 480
-473 482
-475 484
-477 486
-479 488
-481 490
-483 492
-485 494
-487 496
-489 498
-491 500
-493 502
-495 504
-497 506
-499 508
-501 510
-503 512
-505 514
-507 516
-509 518
-511 520
-513 522
-515 524
-517 526
-519 528
-521 530
-523 532
-525 534
-527 536
-529 538
-531 540
-533 542
-535 544
-537 546
-539 548
-541 550
-543 552
-545 554
-547 556
-549 558
-551 560
-553 562
-555 564
-557 566
-559 568
-561 570
-563 572
-565 574
-567 576
-569 578
-571 580
-573 582
-575 584
-577 586
-579 588
-581 590
-583 592
-585 594
-587 596
-589 598
-591 600
-593 602
-595 604
-597 606
-599 608
-601 610
-603 612
-605 614
-607 616
-609 618
-611 620
-613 622
-615 624
-617 626
-619 628
-621 630
-623 632
-625 634
-627 636
-629 638
-631 640
-633 642
-635 644
-637 646
-639 648
-641 650
-643 652
-645 654
-647 656
-649 658
-651 660
-653 662
-655 664
-657 666
-659 668
-661 670
-663 672
-665 674
-667 676
-669 678
-671 680
-673 682
-675 684
-677 686
-679 688
-681 690
-683 692
-685 694
-687 696
-689 698
-691 700
-693 702
-695 704
-697 706
-699 708
-701 710
-703 712
-705 714
-707 716
-709 718
-711 720
-713 722
-715 724
-717 726
-719 728
-721 730
-723 732
-725 734
-727 736
-729 738
-731 740
-733 742
-735 744
-737 746
-739 748
-741 750
-743 752
-745 754
-747 756
-749 758
-751 760
-753 762
-755 764
-757 766
-759 768
-761 770
-763 772
-765 774
-767 776
-769 778
-771 780
-773 782
-775 784
-777 786
-779 788
-781 790
-783 792
-785 794
-787 796
-789 798
-791 800
-793 802
-795 804
-797 806
-799 808
-801 810
-803 812
-805 814
-807 816
-809 818
-811 820
-813 822
-815 824
-817 826
-819 828
-821 830
-823 832
-825 834
-827 836
-829 838
-831 840
-833 842
-835 844
-837 846
-839 848
-841 850
-843 852
-845 854
-847 856
-849 858
-851 860
-853 862
-855 864
-857 866
-859 868
-861 870
-863 872
-865 874
-867 876
-869 878
-871 880
-873 882
-875 884
-877 886
-879 888
-881 890
-883 892
-885 894
-887 896
-889 898
-891 900
-893 902
-895 904
-897 906
-899 908
-901 910
-903 912
-905 914
-907 916
-909 918
-911 920
-913 922
-915 924
-917 926
-919 928
-921 930
-923 932
-925 934
-927 936
-929 938
-931 940
-933 942
-935 944
-937 946
-939 948
-941 950
-943 952
-945 954
-947 956
-949 958
-951 960
-953 962
-955 964
-957 966
-959 968
-961 970
-963 972
-965 974
-967 976
-969 978
-971 980
-973 982
-975 984
-977 986
-979 988
-981 990
-983 992
-985 994
-987 996
-989 998
-991 1000
-993 1002
-995 1004
-997 1006
-999 1008
delete from t2;
delete from t3;
delete from t4;
diff --git a/mysql-test/r/ndb_index_ordered.result b/mysql-test/r/ndb_index_ordered.result
index 1441e53e935..2f1ad251e40 100644
--- a/mysql-test/r/ndb_index_ordered.result
+++ b/mysql-test/r/ndb_index_ordered.result
@@ -212,3 +212,48 @@ select count(*) from t1 where b = 1;
count(*)
1
drop table t1;
+CREATE TABLE t1 (
+a int unsigned NOT NULL PRIMARY KEY,
+b int unsigned,
+c int unsigned,
+KEY bc(b,c)
+) engine = ndb;
+insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
+select * from t1 use index (bc) where b IS NULL;
+a b c
+3 NULL NULL
+2 NULL 2
+select * from t1 use index (bc)order by a;
+a b c
+1 1 1
+2 NULL 2
+3 NULL NULL
+4 4 NULL
+select * from t1 use index (bc) order by a;
+a b c
+1 1 1
+2 NULL 2
+3 NULL NULL
+4 4 NULL
+select * from t1 use index (PRIMARY) where b IS NULL order by a;
+a b c
+2 NULL 2
+3 NULL NULL
+select * from t1 use index (bc) where b IS NULL order by a;
+a b c
+2 NULL 2
+3 NULL NULL
+select * from t1 use index (bc) where b IS NULL and c IS NULL order by a;
+a b c
+3 NULL NULL
+select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
+a b c
+2 NULL 2
+select * from t1 use index (bc) where b < 4 order by a;
+a b c
+1 1 1
+select * from t1 use index (bc) where b IS NOT NULL order by a;
+a b c
+1 1 1
+4 4 NULL
+drop table t1;
diff --git a/mysql-test/r/ndb_index_unique.result b/mysql-test/r/ndb_index_unique.result
index 7ec2ef3a2f1..4362de94b48 100644
--- a/mysql-test/r/ndb_index_unique.result
+++ b/mysql-test/r/ndb_index_unique.result
@@ -109,6 +109,68 @@ a b c
3 4 6
drop table t3;
CREATE TABLE t1 (
+pk int NOT NULL PRIMARY KEY,
+a int unsigned,
+UNIQUE KEY (a)
+) engine=ndbcluster;
+insert into t1 values (-1,NULL), (0,0), (1,NULL),(2,2),(3,NULL),(4,4);
+select * from t1 order by pk;
+pk a
+-1 NULL
+0 0
+1 NULL
+2 2
+3 NULL
+4 4
+insert into t1 values (5,0);
+ERROR 23000: Can't write, because of unique constraint, to table 't1'
+select * from t1 order by pk;
+pk a
+-1 NULL
+0 0
+1 NULL
+2 2
+3 NULL
+4 4
+delete from t1 where a = 0;
+insert into t1 values (5,0);
+select * from t1 order by pk;
+pk a
+-1 NULL
+1 NULL
+2 2
+3 NULL
+4 4
+5 0
+CREATE TABLE t2 (
+pk int NOT NULL PRIMARY KEY,
+a int unsigned,
+b tinyint NOT NULL,
+c VARCHAR(10),
+UNIQUE KEY si(a, c)
+) engine=ndbcluster;
+insert into t2 values (-1,1,17,NULL),(0,NULL,18,NULL),(1,3,19,'abc');
+select * from t2 order by pk;
+pk a b c
+-1 1 17 NULL
+0 NULL 18 NULL
+1 3 19 abc
+insert into t2 values(2,3,19,'abc');
+ERROR 23000: Can't write, because of unique constraint, to table 't2'
+select * from t2 order by pk;
+pk a b c
+-1 1 17 NULL
+0 NULL 18 NULL
+1 3 19 abc
+delete from t2 where c IS NOT NULL;
+insert into t2 values(2,3,19,'abc');
+select * from t2 order by pk;
+pk a b c
+-1 1 17 NULL
+0 NULL 18 NULL
+2 3 19 abc
+drop table t1, t2;
+CREATE TABLE t1 (
cid smallint(5) unsigned NOT NULL default '0',
cv varchar(250) NOT NULL default '',
PRIMARY KEY (cid),
diff --git a/mysql-test/r/ndb_replace.result b/mysql-test/r/ndb_replace.result
index 45af0f7fcb5..63fd8b55c8e 100644
--- a/mysql-test/r/ndb_replace.result
+++ b/mysql-test/r/ndb_replace.result
@@ -11,7 +11,7 @@ insert into t1 (gesuchnr, benutzer_id) value (3,2);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
insert into t1 (gesuchnr,benutzer_id) values (1,1);
-ERROR 23000: Can't write; duplicate key in table 't1'
+ERROR 23000: Duplicate entry '1-1' for key 1
replace into t1 (gesuchnr,benutzer_id) values (1,1);
select * from t1 order by gesuchnr;
gesuchnr benutzer_id
diff --git a/mysql-test/t/ndb_basic.test b/mysql-test/t/ndb_basic.test
index a3aa042848d..0487e18cdb9 100644
--- a/mysql-test/t/ndb_basic.test
+++ b/mysql-test/t/ndb_basic.test
@@ -206,10 +206,6 @@ select * from t4 where a = 7 and b = 16 order by a;
select * from t4 where a = 7 and b = 17 order by a;
select * from t4 where a = 7 and b != 16 order by b;
-select x1.a, x1.b from t2 x1, t2 x2 where x1.b = x2.b order by x1.a;
-select a, b FROM t2 outer_table where
-a = (select a from t2 where b = outer_table.b ) order by a;
-
#
# update records
#
@@ -225,6 +221,12 @@ while ($1)
}
enable_query_log;
+delete from t2 where a > 5;
+select x1.a, x1.b from t2 x1, t2 x2 where x1.b = x2.b order by x1.a;
+select a, b FROM t2 outer_table where
+a = (select a from t2 where b = outer_table.b ) order by a;
+
+
delete from t2;
delete from t3;
delete from t4;
diff --git a/mysql-test/t/ndb_index_ordered.test b/mysql-test/t/ndb_index_ordered.test
index cffe9236fb5..00807bfcb98 100644
--- a/mysql-test/t/ndb_index_ordered.test
+++ b/mysql-test/t/ndb_index_ordered.test
@@ -122,18 +122,22 @@ drop table t1;
# Indexing NULL values
#
-#CREATE TABLE t1 (
-# a int unsigned NOT NULL PRIMARY KEY,
-# b int unsigned,
-# c int unsigned,
-# KEY bc(b,c)
-#) engine = ndb;
-
-#insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
-#select * from t1 use index (bc);
-#select count(*) from t1 use index (bc);
-#select count(*) from t1 use index (PRIMARY) where b IS NULL;
-#select count(*) from t1 use index (bc) where b IS NULL;
-#select count(*) from t1 use index (bc) where b IS NULL and c = 2;
-#select count(*) from t1 use index (bc) where b IS NOT NULL;
-#drop table t1;
+CREATE TABLE t1 (
+ a int unsigned NOT NULL PRIMARY KEY,
+ b int unsigned,
+ c int unsigned,
+ KEY bc(b,c)
+) engine = ndb;
+
+insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
+select * from t1 use index (bc) where b IS NULL;
+
+select * from t1 use index (bc)order by a;
+select * from t1 use index (bc) order by a;
+select * from t1 use index (PRIMARY) where b IS NULL order by a;
+select * from t1 use index (bc) where b IS NULL order by a;
+select * from t1 use index (bc) where b IS NULL and c IS NULL order by a;
+select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
+select * from t1 use index (bc) where b < 4 order by a;
+select * from t1 use index (bc) where b IS NOT NULL order by a;
+drop table t1;
diff --git a/mysql-test/t/ndb_index_unique.test b/mysql-test/t/ndb_index_unique.test
index 96abc842639..4a0c689bafb 100644
--- a/mysql-test/t/ndb_index_unique.test
+++ b/mysql-test/t/ndb_index_unique.test
@@ -82,43 +82,43 @@ drop table t3;
# Indexes on NULL-able columns
#
-#CREATE TABLE t1 (
-# pk int NOT NULL PRIMARY KEY,
-# a int unsigned,
-# UNIQUE KEY (a)
-#) engine=ndbcluster;
+CREATE TABLE t1 (
+ pk int NOT NULL PRIMARY KEY,
+ a int unsigned,
+ UNIQUE KEY (a)
+) engine=ndbcluster;
-#insert into t1 values (-1,NULL), (0,0), (1,NULL),(2,2),(3,NULL),(4,4);
-
-#select * from t1 order by pk;
-
-#--error 1169
-#insert into t1 values (5,0);
-#select * from t1 order by pk;
-#delete from t1 where a = 0;
-#insert into t1 values (5,0);
-#select * from t1 order by pk;
-
-#CREATE TABLE t2 (
-# pk int NOT NULL PRIMARY KEY,
-# a int unsigned,
-# b tinyint NOT NULL,
-# c VARCHAR(10),
-# UNIQUE KEY si(a, c)
-#) engine=ndbcluster;
-
-#insert into t2 values (-1,1,17,NULL),(0,NULL,18,NULL),(1,3,19,'abc');
-
-#select * from t2 order by pk;
-
-#--error 1169
-#insert into t2 values(2,3,19,'abc');
-#select * from t2 order by pk;
-#delete from t2 where c IS NOT NULL;
-#insert into t2 values(2,3,19,'abc');
-#select * from t2 order by pk;
+insert into t1 values (-1,NULL), (0,0), (1,NULL),(2,2),(3,NULL),(4,4);
+
+select * from t1 order by pk;
+
+--error 1169
+insert into t1 values (5,0);
+select * from t1 order by pk;
+delete from t1 where a = 0;
+insert into t1 values (5,0);
+select * from t1 order by pk;
+
+CREATE TABLE t2 (
+ pk int NOT NULL PRIMARY KEY,
+ a int unsigned,
+ b tinyint NOT NULL,
+ c VARCHAR(10),
+ UNIQUE KEY si(a, c)
+) engine=ndbcluster;
+
+insert into t2 values (-1,1,17,NULL),(0,NULL,18,NULL),(1,3,19,'abc');
+
+select * from t2 order by pk;
+
+--error 1169
+insert into t2 values(2,3,19,'abc');
+select * from t2 order by pk;
+delete from t2 where c IS NOT NULL;
+insert into t2 values(2,3,19,'abc');
+select * from t2 order by pk;
-#drop table t1, t2;
+drop table t1, t2;
#
# More complex tables
diff --git a/mysql-test/t/ndb_replace.test b/mysql-test/t/ndb_replace.test
index 8ba332fc7af..59454b5a9fa 100644
--- a/mysql-test/t/ndb_replace.test
+++ b/mysql-test/t/ndb_replace.test
@@ -20,7 +20,7 @@ replace into t1 (gesuchnr,benutzer_id) values (1,1);
insert into t1 (gesuchnr, benutzer_id) value (3,2);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
---error 1022
+--error 1062
insert into t1 (gesuchnr,benutzer_id) values (1,1);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
select * from t1 order by gesuchnr;
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 80b8c21fa0c..815aed13ce3 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -144,6 +144,7 @@ static int ndb_to_mysql_error(const NdbError *err)
int ha_ndbcluster::ndb_err(NdbConnection *trans)
{
+ int res;
const NdbError err= trans->getNdbError();
if (!err.code)
return 0; // Don't log things to DBUG log if no error
@@ -161,7 +162,13 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans)
default:
break;
}
- DBUG_RETURN(ndb_to_mysql_error(&err));
+ res= ndb_to_mysql_error(&err);
+ DBUG_PRINT("info", ("transformed ndbcluster error %d to mysql error %d",
+ err.code, res));
+ if (res == HA_ERR_FOUND_DUPP_KEY)
+ dupkey= table->primary_key;
+
+ DBUG_RETURN(res);
}
@@ -1075,11 +1082,13 @@ int ha_ndbcluster::set_bounds(NdbIndexScanOperation *op,
const key_range *key,
int bound)
{
- uint i, tot_len;
+ uint key_len, key_store_len, tot_len, key_tot_len;
byte *key_ptr;
KEY* key_info= table->key_info + active_index;
KEY_PART_INFO* key_part= key_info->key_part;
KEY_PART_INFO* end= key_part+key_info->key_parts;
+ Field* field;
+ bool key_nullable, key_null;
DBUG_ENTER("set_bounds");
DBUG_PRINT("enter", ("bound: %d", bound));
@@ -1089,29 +1098,37 @@ int ha_ndbcluster::set_bounds(NdbIndexScanOperation *op,
// Set bounds using key data
tot_len= 0;
- key_ptr= (byte *) key->key;
+ key_ptr= (byte *) key->key;
+ key_tot_len= key->length;
for (; key_part != end; key_part++)
{
- Field* field= key_part->field;
- uint32 field_len= field->pack_length();
- tot_len+= field_len;
+ field= key_part->field;
+ key_len= key_part->length;
+ key_store_len= key_part->store_length;
+ key_nullable= (bool) key_part->null_bit;
+ key_null= (field->maybe_null() && *key_ptr);
+ tot_len+= key_store_len;
const char* bounds[]= {"LE", "LT", "GE", "GT", "EQ"};
DBUG_ASSERT(bound >= 0 && bound <= 4);
- DBUG_PRINT("info", ("Set Bound%s on %s",
+ DBUG_PRINT("info", ("Set Bound%s on %s %s %s %s",
bounds[bound],
- field->field_name));
- DBUG_DUMP("key", (char*)key_ptr, field_len);
+ field->field_name,
+ key_nullable ? "NULLABLE" : "",
+ key_null ? "NULL":""));
+ DBUG_PRINT("info", ("Total length %ds", tot_len));
+
+ DBUG_DUMP("key", (char*) key_ptr, key_store_len);
if (op->setBound(field->field_name,
bound,
- field->is_null() ? 0 : key_ptr,
- field->is_null() ? 0 : field_len) != 0)
+ key_null ? 0 : (key_nullable ? key_ptr + 1 : key_ptr),
+ key_null ? 0 : key_len) != 0)
ERR_RETURN(op->getNdbError());
- key_ptr+= field_len;
-
- if (tot_len >= key->length)
+ key_ptr+= key_store_len;
+
+ if (tot_len >= key_tot_len)
break;
/*
@@ -2157,7 +2174,10 @@ void ha_ndbcluster::info(uint flag)
if (flag & HA_STATUS_VARIABLE)
DBUG_PRINT("info", ("HA_STATUS_VARIABLE"));
if (flag & HA_STATUS_ERRKEY)
+ {
DBUG_PRINT("info", ("HA_STATUS_ERRKEY"));
+ errkey= dupkey;
+ }
if (flag & HA_STATUS_AUTO)
DBUG_PRINT("info", ("HA_STATUS_AUTO"));
DBUG_VOID_RETURN;
@@ -2611,7 +2631,7 @@ int ndbcluster_commit(THD *thd, void *ndb_transaction)
const NdbOperation *error_op= trans->getNdbErrorOperation();
ERR_PRINT(err);
res= ndb_to_mysql_error(&err);
- if (res != -1)
+ if (res != -1)
ndbcluster_print_error(res, error_op);
}
ndb->closeTransaction(trans);
@@ -3104,7 +3124,7 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg):
m_ndb(NULL),
m_table(NULL),
m_table_flags(HA_REC_NOT_IN_SEQ |
- //HA_NULL_IN_KEY |
+ HA_NULL_IN_KEY |
HA_NOT_EXACT_COUNT |
HA_NO_PREFIX_CHAR_KEYS),
m_use_write(false),
@@ -3116,7 +3136,8 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg):
ops_pending(0),
skip_auto_increment(true),
blobs_buffer(0),
- blobs_buffer_size(0)
+ blobs_buffer_size(0),
+ dupkey((uint) -1)
{
int i;
diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h
index 0d9c28723ce..c49a6078e7a 100644
--- a/sql/ha_ndbcluster.h
+++ b/sql/ha_ndbcluster.h
@@ -237,6 +237,7 @@ class ha_ndbcluster: public handler
// memory for blobs in one tuple
char *blobs_buffer;
uint32 blobs_buffer_size;
+ uint dupkey;
};
bool ndbcluster_init(void);
diff --git a/sql/share/czech/errmsg.txt b/sql/share/czech/errmsg.txt
index 9769ec1a55d..047db57c86c 100644
--- a/sql/share/czech/errmsg.txt
+++ b/sql/share/czech/errmsg.txt
@@ -314,4 +314,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt
index 31715354101..168cddec81d 100644
--- a/sql/share/danish/errmsg.txt
+++ b/sql/share/danish/errmsg.txt
@@ -308,4 +308,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/dutch/errmsg.txt b/sql/share/dutch/errmsg.txt
index 06e47e006f5..32d8a2ba168 100644
--- a/sql/share/dutch/errmsg.txt
+++ b/sql/share/dutch/errmsg.txt
@@ -316,4 +316,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/english/errmsg.txt b/sql/share/english/errmsg.txt
index a2e74460380..3303cd0666a 100644
--- a/sql/share/english/errmsg.txt
+++ b/sql/share/english/errmsg.txt
@@ -305,4 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/estonian/errmsg.txt b/sql/share/estonian/errmsg.txt
index df29f08e752..cdfb5e9d170 100644
--- a/sql/share/estonian/errmsg.txt
+++ b/sql/share/estonian/errmsg.txt
@@ -310,4 +310,4 @@ character-set=latin7
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/french/errmsg.txt b/sql/share/french/errmsg.txt
index f0435278440..72c2381dc70 100644
--- a/sql/share/french/errmsg.txt
+++ b/sql/share/french/errmsg.txt
@@ -305,4 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt
index af11e09f2f6..0818895dacb 100644
--- a/sql/share/german/errmsg.txt
+++ b/sql/share/german/errmsg.txt
@@ -317,4 +317,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/greek/errmsg.txt b/sql/share/greek/errmsg.txt
index 7c921beba75..4ee82d91566 100644
--- a/sql/share/greek/errmsg.txt
+++ b/sql/share/greek/errmsg.txt
@@ -305,4 +305,4 @@ character-set=greek
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/hungarian/errmsg.txt b/sql/share/hungarian/errmsg.txt
index e961b72a38e..6be3add430e 100644
--- a/sql/share/hungarian/errmsg.txt
+++ b/sql/share/hungarian/errmsg.txt
@@ -307,4 +307,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/italian/errmsg.txt b/sql/share/italian/errmsg.txt
index 02c719fd7c0..fd2d33c5e2e 100644
--- a/sql/share/italian/errmsg.txt
+++ b/sql/share/italian/errmsg.txt
@@ -305,4 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/japanese/errmsg.txt b/sql/share/japanese/errmsg.txt
index 9674f690183..7ebce1cf662 100644
--- a/sql/share/japanese/errmsg.txt
+++ b/sql/share/japanese/errmsg.txt
@@ -307,4 +307,4 @@ character-set=ujis
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/korean/errmsg.txt b/sql/share/korean/errmsg.txt
index 417d9976b7c..f389feb7e40 100644
--- a/sql/share/korean/errmsg.txt
+++ b/sql/share/korean/errmsg.txt
@@ -305,4 +305,4 @@ character-set=euckr
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/norwegian-ny/errmsg.txt b/sql/share/norwegian-ny/errmsg.txt
index ae0b307439d..088adb43c96 100644
--- a/sql/share/norwegian-ny/errmsg.txt
+++ b/sql/share/norwegian-ny/errmsg.txt
@@ -307,4 +307,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/norwegian/errmsg.txt b/sql/share/norwegian/errmsg.txt
index 246333af497..0e92867a201 100644
--- a/sql/share/norwegian/errmsg.txt
+++ b/sql/share/norwegian/errmsg.txt
@@ -307,4 +307,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/polish/errmsg.txt b/sql/share/polish/errmsg.txt
index 417757b2aea..c61db27cd58 100644
--- a/sql/share/polish/errmsg.txt
+++ b/sql/share/polish/errmsg.txt
@@ -309,4 +309,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/portuguese/errmsg.txt b/sql/share/portuguese/errmsg.txt
index 344860280cb..66b3d9a516b 100644
--- a/sql/share/portuguese/errmsg.txt
+++ b/sql/share/portuguese/errmsg.txt
@@ -306,4 +306,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/romanian/errmsg.txt b/sql/share/romanian/errmsg.txt
index 6b64d103e61..43c669cb4f9 100644
--- a/sql/share/romanian/errmsg.txt
+++ b/sql/share/romanian/errmsg.txt
@@ -309,4 +309,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/russian/errmsg.txt b/sql/share/russian/errmsg.txt
index 642b792a24f..311cfd35cb5 100644
--- a/sql/share/russian/errmsg.txt
+++ b/sql/share/russian/errmsg.txt
@@ -307,4 +307,4 @@ character-set=koi8r
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/serbian/errmsg.txt b/sql/share/serbian/errmsg.txt
index 8c8bc6e9729..45b56c8269c 100644
--- a/sql/share/serbian/errmsg.txt
+++ b/sql/share/serbian/errmsg.txt
@@ -311,4 +311,4 @@ character-set=cp1250
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/slovak/errmsg.txt b/sql/share/slovak/errmsg.txt
index 23814b2cbc2..e45858805db 100644
--- a/sql/share/slovak/errmsg.txt
+++ b/sql/share/slovak/errmsg.txt
@@ -313,4 +313,4 @@ character-set=latin2
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/spanish/errmsg.txt b/sql/share/spanish/errmsg.txt
index 113157858ad..9a3296cb405 100644
--- a/sql/share/spanish/errmsg.txt
+++ b/sql/share/spanish/errmsg.txt
@@ -307,4 +307,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/swedish/errmsg.txt b/sql/share/swedish/errmsg.txt
index 8b43ea8ed0e..85271f81b2b 100644
--- a/sql/share/swedish/errmsg.txt
+++ b/sql/share/swedish/errmsg.txt
@@ -305,4 +305,4 @@ character-set=latin1
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/share/ukrainian/errmsg.txt b/sql/share/ukrainian/errmsg.txt
index 4c762bf5313..87789018185 100644
--- a/sql/share/ukrainian/errmsg.txt
+++ b/sql/share/ukrainian/errmsg.txt
@@ -310,4 +310,4 @@ character-set=koi8u
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
-"Conflicting declarations: '%s' and '%s'"
+"Conflicting declarations: '%s%s' and '%s%s'"
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 1c057e03a11..7194cc72c04 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -1215,12 +1215,9 @@ default_charset:
cinfo->default_table_charset && $4 &&
!my_charset_same(cinfo->default_table_charset,$4))
{
- char cs1[32];
- char cs2[32];
- my_snprintf(cs1, sizeof(cs1), "CHARACTER SET %s",
- cinfo->default_table_charset->csname);
- my_snprintf(cs2, sizeof(cs2), "CHARACTER SET %s", $4->csname);
- net_printf(YYTHD, ER_CONFLICTING_DECLARATIONS, cs1, cs2);
+ net_printf(YYTHD, ER_CONFLICTING_DECLARATIONS,
+ "CHARACTER SET ", cinfo->default_table_charset->csname,
+ "CHARACTER SET ", $4->csname);
YYABORT;
}
Lex->create_info.default_table_charset= $4;