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