diff options
author | unknown <monty@mysql.com> | 2004-09-01 02:13:35 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-09-01 02:13:35 +0300 |
commit | 8122a679448389874e9062f13df0f900a3c082a6 (patch) | |
tree | cd915739945548628e5c5f8963b9f916cf2c20ea | |
parent | ae3dd78b5fd15f69b426ceeac6bddb964b752626 (diff) | |
parent | 775c057ef4445f787bf07e0a99ecb8075672f9cd (diff) | |
download | mariadb-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
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; |