1call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); 2set sql_mode=no_engine_substitution; 3Warnings: 4Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5set default_storage_engine = InnoDB; 6set autocommit=1; 7drop table if exists t1; 8drop table if exists t2; 9drop table if exists t3; 10drop function if exists f2; 11drop procedure if exists bug12713_call; 12drop procedure if exists bug12713_dump_spvars; 13drop procedure if exists dummy; 14create table t1 (a int); 15create table t2 (a int unique); 16create table t3 (a int); 17set sql_mode=default; 18insert into t1 (a) values (1), (2); 19insert into t3 (a) values (1), (2); 20create function f2(x int) returns int 21begin 22insert into t2 (a) values (x); 23insert into t2 (a) values (x); 24return x; 25end| 26set autocommit=0; 27flush status; 28insert into t2 (a) values (1001); 29insert into t1 (a) values (f2(1)); 30ERROR 23000: Duplicate entry '1' for key 'a' 31select * from t2; 32a 331001 34rollback; 35select * from t2; 36a 37insert into t2 (a) values (1002); 38insert into t3 (a) select f2(2) from t1; 39ERROR 23000: Duplicate entry '2' for key 'a' 40select * from t2; 41a 421002 43rollback; 44select * from t2; 45a 46insert into t2 (a) values (1003); 47update t1 set a= a + f2(3); 48ERROR 23000: Duplicate entry '3' for key 'a' 49select * from t2; 50a 511003 52rollback; 53select * from t2; 54a 55insert into t2 (a) values (1004); 56update t1, t3 set t1.a = 0, t3.a = 0 where (f2(4) = 4) and (t1.a = t3.a); 57ERROR 23000: Duplicate entry '4' for key 'a' 58select * from t2; 59a 601004 61rollback; 62select * from t2; 63a 64insert into t2 (a) values (1005); 65delete from t1 where (a = f2(5)); 66ERROR 23000: Duplicate entry '5' for key 'a' 67select * from t2; 68a 691005 70rollback; 71select * from t2; 72a 73insert into t2 (a) values (1006); 74delete from t1, t3 using t1, t3 where (f2(6) = 6) ; 75ERROR 23000: Duplicate entry '6' for key 'a' 76select * from t2; 77a 781006 79rollback; 80select * from t2; 81a 82insert into t2 (a) values (1007); 83replace t1 values (f2(7)); 84ERROR 23000: Duplicate entry '7' for key 'a' 85select * from t2; 86a 871007 88rollback; 89select * from t2; 90a 91insert into t2 (a) values (1008); 92replace into t3 (a) select f2(8) from t1; 93ERROR 23000: Duplicate entry '8' for key 'a' 94select * from t2; 95a 961008 97rollback; 98select * from t2; 99a 100insert into t2 (a) values (1009); 101select f2(9) from t1 ; 102ERROR 23000: Duplicate entry '9' for key 'a' 103select * from t2; 104a 1051009 106rollback; 107select * from t2; 108a 109insert into t2 (a) values (1010); 110show databases where (f2(10) = 10); 111ERROR 23000: Duplicate entry '10' for key 'a' 112select * from t2; 113a 1141010 115rollback; 116select * from t2; 117a 118insert into t2 (a) values (1011); 119show tables where (f2(11) = 11); 120ERROR 23000: Duplicate entry '11' for key 'a' 121select * from t2; 122a 1231011 124rollback; 125select * from t2; 126a 127insert into t2 (a) values (1012); 128show triggers where (f2(12) = 12); 129ERROR 23000: Duplicate entry '12' for key 'a' 130select * from t2; 131a 1321012 133rollback; 134select * from t2; 135a 136insert into t2 (a) values (1013); 137show table status where (f2(13) = 13); 138ERROR 23000: Duplicate entry '13' for key 'a' 139select * from t2; 140a 1411013 142rollback; 143select * from t2; 144a 145insert into t2 (a) values (1014); 146show open tables where (f2(14) = 14); 147ERROR 23000: Duplicate entry '14' for key 'a' 148select * from t2; 149a 1501014 151rollback; 152select * from t2; 153a 154insert into t2 (a) values (1015); 155show columns in mysql.proc where (f2(15) = 15); 156ERROR 23000: Duplicate entry '15' for key 'a' 157select * from t2; 158a 1591015 160rollback; 161select * from t2; 162a 163insert into t2 (a) values (1016); 164show status where (f2(16) = 16); 165ERROR 23000: Duplicate entry '16' for key 'a' 166select * from t2; 167a 1681016 169rollback; 170select * from t2; 171a 172insert into t2 (a) values (1017); 173show variables where (f2(17) = 17); 174ERROR 23000: Duplicate entry '17' for key 'a' 175select * from t2; 176a 1771017 178rollback; 179select * from t2; 180a 181insert into t2 (a) values (1018); 182show charset where (f2(18) = 18); 183ERROR 23000: Duplicate entry '18' for key 'a' 184select * from t2; 185a 1861018 187rollback; 188select * from t2; 189a 190insert into t2 (a) values (1019); 191show collation where (f2(19) = 19); 192ERROR 23000: Duplicate entry '19' for key 'a' 193select * from t2; 194a 1951019 196rollback; 197select * from t2; 198a 199# We need at least one procedure to make sure the WHERE clause is 200# evaluated 201create procedure dummy() begin end; 202insert into t2 (a) values (1020); 203show procedure status where (f2(20) = 20); 204ERROR 23000: Duplicate entry '20' for key 'a' 205select * from t2; 206a 2071020 208rollback; 209select * from t2; 210a 211drop procedure dummy; 212insert into t2 (a) values (1021); 213show function status where (f2(21) = 21); 214ERROR 23000: Duplicate entry '21' for key 'a' 215select * from t2; 216a 2171021 218rollback; 219select * from t2; 220a 221insert into t2 (a) values (1022); 222prepare stmt from "insert into t1 (a) values (f2(22))"; 223execute stmt; 224ERROR 23000: Duplicate entry '22' for key 'a' 225select * from t2; 226a 2271022 228rollback; 229select * from t2; 230a 231insert into t2 (a) values (1023); 232do (f2(23)); 233ERROR 23000: Duplicate entry '23' for key 'a' 234select * from t2; 235a 2361023 237rollback; 238select * from t2; 239a 240create procedure bug12713_call () 241begin 242insert into t2 (a) values (24); 243insert into t2 (a) values (24); 244end| 245insert into t2 (a) values (1024); 246call bug12713_call(); 247ERROR 23000: Duplicate entry '24' for key 'a' 248select * from t2; 249a 25024 2511024 252rollback; 253select * from t2; 254a 255======================================================================= 256Testing select_to_file 257======================================================================= 258insert into t2 (a) values (1025); 259select f2(25) into outfile "../tmp/dml.out" from t1; 260ERROR 23000: Duplicate entry '25' for key 'a' 261select * from t2; 262a 2631025 264rollback; 265select * from t2; 266a 267insert into t2 (a) values (1026); 268load data infile "../../std_data/words.dat" ignore into table t1 (a) set a:=f2(26); 269ERROR 23000: Duplicate entry '26' for key 'a' 270select * from t2; 271a 2721026 273rollback; 274select * from t2; 275a 276======================================================================= 277Testing select_dumpvar 278======================================================================= 279insert into t2 (a) values (1027); 280select f2(27) into @foo; 281ERROR 23000: Duplicate entry '27' for key 'a' 282select * from t2; 283a 2841027 285rollback; 286select * from t2; 287a 288======================================================================= 289Testing Select_fetch_into_spvars 290======================================================================= 291create procedure bug12713_dump_spvars () 292begin 293declare foo int; 294declare continue handler for sqlexception 295begin 296select "Exception trapped"; 297end; 298select f2(28) into foo; 299select * from t2; 300end| 301insert into t2 (a) values (1028); 302call bug12713_dump_spvars (); 303Exception trapped 304Exception trapped 305a 3061028 307rollback; 308select * from t2; 309a 310======================================================================= 311Cleanup 312======================================================================= 313set autocommit=default; 314drop table t1; 315drop table t2; 316drop table t3; 317drop function f2; 318drop procedure bug12713_call; 319drop procedure bug12713_dump_spvars; 320# 321# Bug#12713 Error in a stored function called from a SELECT doesn't 322# cause ROLLBACK of statem 323# 324# Verify that two-phase commit is not issued for read-only 325# transactions. 326# 327# Verify that two-phase commit is issued for read-write transactions, 328# even if the change is done inside a stored function called from 329# SELECT or SHOW statement. 330# 331set autocommit=0; 332drop table if exists t1; 333drop table if exists t2; 334drop function if exists f1; 335drop procedure if exists p_verify_status_increment; 336set @binlog_format=@@global.binlog_format; 337set sql_mode=no_engine_substitution; 338Warnings: 339Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 340create table t1 (a int unique); 341create table t2 (a int) engine=myisam; 342set sql_mode=default; 343# 344# An auxiliary procedure to track Handler_prepare and Handler_commit 345# statistics. 346# 347create procedure 348p_verify_status_increment(commit_inc_mixed int, prepare_inc_mixed int, 349commit_inc_row int, prepare_inc_row int) 350begin 351declare commit_inc int; 352declare prepare_inc int; 353declare old_commit_count int default ifnull(@commit_count, 0); 354declare old_prepare_count int default ifnull(@prepare_count, 0); 355declare c_res int; 356# Use a cursor to have just one access to I_S instead of 2, it is very slow 357# and amounts for over 90% of test CPU time 358declare c cursor for 359select variable_value 360from information_schema.session_status 361where variable_name='Handler_commit' or variable_name='Handler_prepare' 362 order by variable_name; 363if @binlog_format = 'ROW' then 364set commit_inc= commit_inc_row; 365set prepare_inc= prepare_inc_row; 366else 367set commit_inc= commit_inc_mixed; 368set prepare_inc= prepare_inc_mixed; 369end if; 370open c; 371fetch c into c_res; 372set @commit_count=c_res; 373fetch c into c_res; 374set @prepare_count=c_res; 375close c; 376if old_commit_count + commit_inc <> @commit_count then 377select concat("Expected commit increment: ", commit_inc, 378" actual: ", @commit_count - old_commit_count) 379as 'ERROR'; 380elseif old_prepare_count + prepare_inc <> @prepare_count then 381select concat("Expected prepare increment: ", prepare_inc, 382" actual: ", @prepare_count - old_prepare_count) 383as 'ERROR'; 384else 385select '' as 'SUCCESS'; 386end if; 387end| 388# Reset Handler_commit and Handler_prepare counters 389flush status; 390# 391# 1. Read-only statement: SELECT 392# 393select * from t1; 394a 395call p_verify_status_increment(1, 0, 1, 0); 396SUCCESS 397 398commit; 399call p_verify_status_increment(1, 0, 1, 0); 400SUCCESS 401 402# 2. Read-write statement: INSERT, insert 1 row. 403# 404insert into t1 (a) values (1); 405call p_verify_status_increment(2, 2, 2, 2); 406SUCCESS 407 408commit; 409call p_verify_status_increment(2, 2, 2, 2); 410SUCCESS 411 412# 3. Read-write statement: UPDATE, update 1 row. 413# 414update t1 set a=2; 415call p_verify_status_increment(2, 2, 2, 2); 416SUCCESS 417 418commit; 419call p_verify_status_increment(2, 2, 2, 2); 420SUCCESS 421 422# 4. Read-write statement: UPDATE, update 0 rows, 1 row matches WHERE 423# 424update t1 set a=2; 425call p_verify_status_increment(2, 2, 1, 0); 426SUCCESS 427 428commit; 429call p_verify_status_increment(2, 2, 1, 0); 430SUCCESS 431 432# 5. Read-write statement: UPDATE, update 0 rows, 0 rows match WHERE 433# 434# In mixed replication mode, there is a read-only transaction 435# in InnoDB and also the statement is written to the binary log. 436# So we have two commits but no 2pc, since the first engine's 437# transaction is read-only. 438# In the row level replication mode, we only have the read-only 439# transaction in InnoDB and nothing is written to the binary log. 440# 441update t1 set a=3 where a=1; 442call p_verify_status_increment(2, 0, 1, 0); 443SUCCESS 444 445commit; 446call p_verify_status_increment(2, 0, 1, 0); 447SUCCESS 448 449# 6. Read-write statement: DELETE, delete 0 rows. 450# 451delete from t1 where a=1; 452call p_verify_status_increment(2, 0, 1, 0); 453SUCCESS 454 455commit; 456call p_verify_status_increment(2, 0, 1, 0); 457SUCCESS 458 459# 7. Read-write statement: DELETE, delete 1 row. 460# 461delete from t1 where a=2; 462call p_verify_status_increment(2, 2, 2, 2); 463SUCCESS 464 465commit; 466call p_verify_status_increment(2, 2, 2, 2); 467SUCCESS 468 469# 8. Read-write statement: unqualified DELETE 470# 471# In statement or mixed replication mode, we call 472# handler::ha_delete_all_rows() and write statement text 473# to the binary log. This results in two read-write transactions. 474# In row level replication mode, we do not call 475# handler::ha_delete_all_rows(), but delete rows one by one. 476# Since there are no rows, nothing is written to the binary log. 477# Thus we have just one read-only transaction in InnoDB. 478delete from t1; 479call p_verify_status_increment(2, 2, 1, 0); 480SUCCESS 481 482commit; 483call p_verify_status_increment(2, 2, 1, 0); 484SUCCESS 485 486# 9. Read-write statement: REPLACE, change 1 row. 487# 488replace t1 set a=1; 489call p_verify_status_increment(2, 2, 2, 2); 490SUCCESS 491 492commit; 493call p_verify_status_increment(2, 2, 2, 2); 494SUCCESS 495 496# 10. Read-write statement: REPLACE, change 0 rows. 497# 498replace t1 set a=1; 499call p_verify_status_increment(2, 2, 1, 0); 500SUCCESS 501 502commit; 503call p_verify_status_increment(2, 2, 1, 0); 504SUCCESS 505 506# 11. Read-write statement: IODKU, change 1 row. 507# 508insert t1 set a=1 on duplicate key update a=a+1; 509call p_verify_status_increment(2, 2, 2, 2); 510SUCCESS 511 512select * from t1; 513a 5142 515call p_verify_status_increment(1, 0, 1, 0); 516SUCCESS 517 518commit; 519call p_verify_status_increment(2, 2, 2, 2); 520SUCCESS 521 522# 12. Read-write statement: IODKU, change 0 rows. 523# 524insert t1 set a=2 on duplicate key update a=2; 525call p_verify_status_increment(2, 2, 1, 0); 526SUCCESS 527 528commit; 529call p_verify_status_increment(2, 2, 1, 0); 530SUCCESS 531 532# 13. Read-write statement: INSERT IGNORE, change 0 rows. 533# 534insert ignore t1 set a=2; 535Warnings: 536Warning 1062 Duplicate entry '2' for key 'a' 537call p_verify_status_increment(2, 2, 1, 0); 538SUCCESS 539 540commit; 541call p_verify_status_increment(2, 2, 1, 0); 542SUCCESS 543 544# 14. Read-write statement: INSERT IGNORE, change 1 row. 545# 546insert ignore t1 set a=1; 547call p_verify_status_increment(2, 2, 2, 2); 548SUCCESS 549 550commit; 551call p_verify_status_increment(2, 2, 2, 2); 552SUCCESS 553 554# 15. Read-write statement: UPDATE IGNORE, change 0 rows. 555# 556update ignore t1 set a=2 where a=1; 557SUCCESS 558 559commit; 560SUCCESS 561 562# 563# Create a stored function that modifies a 564# non-transactional table. Demonstrate that changes in 565# non-transactional tables do not affect the two phase commit 566# algorithm. 567# 568create function f1() returns int 569begin 570insert t2 set a=2; 571return 2; 572end| 573call p_verify_status_increment(0, 0, 0, 0); 574SUCCESS 575 576# 16. A function changes non-trans-table. 577# 578# For row-based logging, there is an extra commit for the 579# non-transactional changes saved in the transaction cache to 580# the binary log. 581# 582select f1(); 583f1() 5842 585call p_verify_status_increment(1, 0, 1, 0); 586SUCCESS 587 588commit; 589call p_verify_status_increment(1, 0, 1, 0); 590SUCCESS 591 592# 17. Read-only statement, a function changes non-trans-table. 593# 594# For row-based logging, there is an extra commit for the 595# non-transactional changes saved in the transaction cache to 596# the binary log. 597# 598select f1() from t1; 599f1() 6002 6012 602call p_verify_status_increment(2, 0, 2, 0); 603SUCCESS 604 605commit; 606call p_verify_status_increment(2, 0, 2, 0); 607SUCCESS 608 609# 18. Read-write statement: UPDATE, change 0 (transactional) rows. 610# 611select count(*) from t2; 612count(*) 6133 614update t1 set a=2 where a=f1()+10; 615select count(*) from t2; 616count(*) 6175 618call p_verify_status_increment(2, 0, 2, 0); 619SUCCESS 620 621commit; 622call p_verify_status_increment(2, 0, 2, 0); 623SUCCESS 624 625# 626# Replace the non-transactional table with a temporary 627# transactional table. Demonstrate that a change to a temporary 628# transactional table does not provoke 2-phase commit, although 629# does trigger a commit and a binlog write (in statement mode). 630# 631drop table t2; 632set sql_mode=no_engine_substitution; 633Warnings: 634Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 635create temporary table t2 (a int); 636call p_verify_status_increment(1, 0, 0, 0); 637SUCCESS 638 639set sql_mode=default; 640# 19. A function changes temp-trans-table. 641# 642select f1(); 643f1() 6442 645# Two commits because a binary log record is written 646call p_verify_status_increment(2, 0, 1, 0); 647SUCCESS 648 649commit; 650call p_verify_status_increment(2, 0, 1, 0); 651SUCCESS 652 653# 20. Read-only statement, a function changes non-trans-table. 654# 655select f1() from t1; 656f1() 6572 6582 659# Two commits because a binary log record is written 660call p_verify_status_increment(2, 0, 1, 0); 661SUCCESS 662 663commit; 664call p_verify_status_increment(2, 0, 1, 0); 665SUCCESS 666 667# 21. Read-write statement: UPDATE, change 0 (transactional) rows. 668# 669update t1 set a=2 where a=f1()+10; 670call p_verify_status_increment(2, 0, 1, 0); 671SUCCESS 672 673commit; 674call p_verify_status_increment(2, 0, 1, 0); 675SUCCESS 676 677# 22. DDL: ALTER TEMPORARY TABLE, should not cause a 2pc 678# 679alter table t2 add column b int default 5; 680# A commit is done internally by ALTER. 681call p_verify_status_increment(2, 0, 2, 0); 682SUCCESS 683 684commit; 685# There is nothing left to commit 686call p_verify_status_increment(0, 0, 0, 0); 687SUCCESS 688 689# 23. DDL: RENAME TEMPORARY TABLE, does not start a transaction 690 691# No test because of Bug#8729 "rename table fails on temporary table" 692# 24. DDL: TRUNCATE TEMPORARY TABLE 693 694truncate table t2; 695call p_verify_status_increment(4, 0, 4, 0); 696ERROR 697Expected commit increment: 4 actual: 2 698commit; 699# There is nothing left to commit 700call p_verify_status_increment(0, 0, 0, 0); 701SUCCESS 702 703# 25. Read-write statement: unqualified DELETE 704 705delete from t2; 706call p_verify_status_increment(2, 0, 1, 0); 707SUCCESS 708 709commit; 710# There is nothing left to commit 711call p_verify_status_increment(2, 0, 1, 0); 712SUCCESS 713 714# 25. DDL: DROP TEMPORARY TABLE, does not start a transaction 715# 716drop temporary table t2; 717call p_verify_status_increment(1, 0, 1, 0); 718SUCCESS 719 720commit; 721call p_verify_status_increment(1, 0, 1, 0); 722SUCCESS 723 724# 26. Verify that SET AUTOCOMMIT issues an implicit commit 725# 726insert t1 set a=3; 727call p_verify_status_increment(2, 2, 2, 2); 728SUCCESS 729 730set autocommit=1; 731call p_verify_status_increment(2, 2, 2, 2); 732SUCCESS 733 734rollback; 735select a from t1 where a=3; 736a 7373 738call p_verify_status_increment(1, 0, 1, 0); 739SUCCESS 740 741delete from t1 where a=3; 742call p_verify_status_increment(2, 2, 2, 2); 743SUCCESS 744 745commit; 746call p_verify_status_increment(0, 0, 0, 0); 747SUCCESS 748 749set autocommit=0; 750call p_verify_status_increment(0, 0, 0, 0); 751SUCCESS 752 753insert t1 set a=3; 754call p_verify_status_increment(2, 2, 2, 2); 755SUCCESS 756 757# Sic: not actually changing the value of autocommit 758set autocommit=0; 759call p_verify_status_increment(0, 0, 0, 0); 760SUCCESS 761 762rollback; 763select a from t1 where a=3; 764a 765call p_verify_status_increment(1, 0, 1, 0); 766SUCCESS 767 768# 27. Savepoint management 769# 770insert t1 set a=3; 771call p_verify_status_increment(2, 2, 2, 2); 772SUCCESS 773 774savepoint a; 775call p_verify_status_increment(1, 0, 1, 0); 776SUCCESS 777 778insert t1 set a=4; 779call p_verify_status_increment(2, 2, 2, 2); 780SUCCESS 781 782release savepoint a; 783rollback; 784call p_verify_status_increment(0, 0, 0, 0); 785SUCCESS 786 787select a from t1 where a=3; 788a 789call p_verify_status_increment(1, 0, 1, 0); 790SUCCESS 791 792commit; 793call p_verify_status_increment(1, 0, 1, 0); 794SUCCESS 795 796# 28. Read-write statement: DO 797# 798create table t2 (a int); 799call p_verify_status_increment(0, 0, 0, 0); 800SUCCESS 801 802do (select f1() from t1 where a=2); 803call p_verify_status_increment(2, 2, 2, 2); 804SUCCESS 805 806commit; 807call p_verify_status_increment(2, 2, 2, 2); 808SUCCESS 809 810# 29. Read-write statement: MULTI-DELETE 811# 812delete t1, t2 from t1 join t2 on (t1.a=t2.a) where t1.a=2; 813commit; 814call p_verify_status_increment(4, 4, 4, 4); 815SUCCESS 816 817# 30. Read-write statement: INSERT-SELECT, MULTI-UPDATE, REPLACE-SELECT 818# 819insert into t2 select a from t1; 820commit; 821replace into t2 select a from t1; 822commit; 823call p_verify_status_increment(8, 8, 8, 8); 824SUCCESS 825 826update t1, t2 set t1.a=4, t2.a=8 where t1.a=t2.a and t1.a=1; 827commit; 828call p_verify_status_increment(4, 4, 4, 4); 829SUCCESS 830 831# 31. DDL: various DDL with transactional tables 832# 833# Sic: no table is created. 834create table if not exists t2 (a int) select 6 union select 7; 835Warnings: 836Note 1050 Table 't2' already exists 837# No table are locked before existing t2 is found, so nothing to commit. 838call p_verify_status_increment(0, 0, 0, 0); 839SUCCESS 840 841create table t3 select a from t2; 842call p_verify_status_increment(2, 0, 4, 4); 843SUCCESS 844 845alter table t3 add column (b int); 846call p_verify_status_increment(2, 0, 2, 0); 847SUCCESS 848 849alter table t3 rename t4; 850call p_verify_status_increment(0, 0, 0, 0); 851SUCCESS 852 853rename table t4 to t3; 854call p_verify_status_increment(0, 0, 0, 0); 855SUCCESS 856 857truncate table t3; 858call p_verify_status_increment(2, 0, 2, 0); 859SUCCESS 860 861create view v1 as select * from t2; 862call p_verify_status_increment(0, 0, 0, 0); 863SUCCESS 864 865check table t1; 866Table Op Msg_type Msg_text 867test.t1 check status OK 868call p_verify_status_increment(2, 0, 2, 0); 869SUCCESS 870 871# Sic: after this bug is fixed, CHECK leaves no pending transaction 872commit; 873call p_verify_status_increment(0, 0, 0, 0); 874SUCCESS 875 876check table t1, t2, t3; 877Table Op Msg_type Msg_text 878test.t1 check status OK 879test.t2 check status OK 880test.t3 check status OK 881call p_verify_status_increment(6, 0, 6, 0); 882SUCCESS 883 884commit; 885call p_verify_status_increment(0, 0, 0, 0); 886SUCCESS 887 888drop view v1; 889call p_verify_status_increment(0, 0, 0, 0); 890SUCCESS 891 892# 893# Cleanup 894# 895drop table t1, t2, t3; 896drop procedure p_verify_status_increment; 897drop function f1; 898