mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	Bug#35335 funcs_1: Some tests fail within load_file during
                      pushbuild runs
   Solution: 1. Move files with input data used in load_file, 
                load data etc. 
                from suite/funcs_1/<whatever>
                to std_data
             2. Use for testsuite funcs_1 the server option
                --secure-file-priv=<MYSQLTEST_VARDIR>
             3. Outfiles have to be stored under MYSQLTEST_VARDIR 
+ changes according to WL#4304 Cleanup in funcs_1 tests
  - backport of fixes/improvements made in 5.1 to 5.0
    The differences between scripts in 5.0 and 5.1 cause
    much additional and annoying work during any upmerge.
  - replace error numbers with names
  - improved comments
  - improved formatting
  - Unify storage engine names so that result files for
    storage engine variants do not differ (some tests)
  - remove a script no more used (tests are done in other scripts)
BitKeeper/deleted/.del-triggers_master.test:
  Delete: mysql-test/suite/funcs_1/triggers/triggers_master.test
mysql-test/std_data/funcs_1/innodb_tb1.txt:
  Rename: mysql-test/suite/funcs_1/data/innodb_tb1.txt -> mysql-test/std_data/funcs_1/innodb_tb1.txt
mysql-test/std_data/funcs_1/innodb_tb2.txt:
  Rename: mysql-test/suite/funcs_1/data/innodb_tb2.txt -> mysql-test/std_data/funcs_1/innodb_tb2.txt
mysql-test/std_data/funcs_1/innodb_tb3.txt:
  Rename: mysql-test/suite/funcs_1/data/innodb_tb3.txt -> mysql-test/std_data/funcs_1/innodb_tb3.txt
mysql-test/std_data/funcs_1/innodb_tb4.txt:
  Rename: mysql-test/suite/funcs_1/data/innodb_tb4.txt -> mysql-test/std_data/funcs_1/innodb_tb4.txt
mysql-test/std_data/funcs_1/memory_tb1.txt:
  Rename: mysql-test/suite/funcs_1/data/memory_tb1.txt -> mysql-test/std_data/funcs_1/memory_tb1.txt
mysql-test/std_data/funcs_1/memory_tb2.txt:
  Rename: mysql-test/suite/funcs_1/data/memory_tb2.txt -> mysql-test/std_data/funcs_1/memory_tb2.txt
mysql-test/std_data/funcs_1/memory_tb3.txt:
  Rename: mysql-test/suite/funcs_1/data/memory_tb3.txt -> mysql-test/std_data/funcs_1/memory_tb3.txt
mysql-test/std_data/funcs_1/memory_tb4.txt:
  Rename: mysql-test/suite/funcs_1/data/memory_tb4.txt -> mysql-test/std_data/funcs_1/memory_tb4.txt
mysql-test/std_data/funcs_1/myisam_tb1.txt:
  Rename: mysql-test/suite/funcs_1/data/myisam_tb1.txt -> mysql-test/std_data/funcs_1/myisam_tb1.txt
mysql-test/std_data/funcs_1/myisam_tb2.txt:
  Rename: mysql-test/suite/funcs_1/data/myisam_tb2.txt -> mysql-test/std_data/funcs_1/myisam_tb2.txt
mysql-test/std_data/funcs_1/myisam_tb3.txt:
  Rename: mysql-test/suite/funcs_1/data/myisam_tb3.txt -> mysql-test/std_data/funcs_1/myisam_tb3.txt
mysql-test/std_data/funcs_1/myisam_tb4.txt:
  Rename: mysql-test/suite/funcs_1/data/myisam_tb4.txt -> mysql-test/std_data/funcs_1/myisam_tb4.txt
mysql-test/std_data/funcs_1/t3.txt:
  Rename: mysql-test/suite/funcs_1/data/t3.txt -> mysql-test/std_data/funcs_1/t3.txt
mysql-test/std_data/funcs_1/t4.txt:
  Rename: mysql-test/suite/funcs_1/data/t4.txt -> mysql-test/std_data/funcs_1/t4.txt
mysql-test/std_data/funcs_1/t7.txt:
  Rename: mysql-test/suite/funcs_1/data/t7.txt -> mysql-test/std_data/funcs_1/t7.txt
mysql-test/std_data/funcs_1/t9.txt:
  Rename: mysql-test/suite/funcs_1/data/t9.txt -> mysql-test/std_data/funcs_1/t9.txt
mysql-test/Makefile.am:
  Introduce installation of funcs_1 files in std_data.
mysql-test/mysql-test-run.pl:
  The tests within funcs_1 need a server started with
      --secure-file-priv=<MYSQLTEST_VARDIR>
  like the main regression tests.
mysql-test/suite/funcs_1/README.txt:
  Extended description
mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc:
  Cleanup
mysql-test/suite/funcs_1/datadict/datadict_load.inc:
  Cleanup
mysql-test/suite/funcs_1/include/innodb_tb1.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/innodb_tb2.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/innodb_tb3.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/innodb_tb4.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/memory_tb1.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/memory_tb2.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/memory_tb3.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/memory_tb4.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/myisam_tb1.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/myisam_tb2.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/myisam_tb3.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/myisam_tb4.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/include/sp_tb.inc:
  Adjustment to new storage place of infile.
mysql-test/suite/funcs_1/r/innodb_func_view.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_storedproc_02.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_storedproc_03.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_storedproc_06.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_storedproc_07.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_storedproc_08.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_storedproc_10.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_trig_0102.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_trig_03.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_trig_0407.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_trig_08.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_trig_09.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_trig_frkey.result:
  Updated results
mysql-test/suite/funcs_1/r/innodb_views.result:
  Updated results
mysql-test/suite/funcs_1/r/is_columns_innodb.result:
  Updated results
mysql-test/suite/funcs_1/r/is_columns_memory.result:
  Updated results
mysql-test/suite/funcs_1/r/is_columns_myisam.result:
  Updated results
mysql-test/suite/funcs_1/r/is_columns_ndb.result:
  Updated results
mysql-test/suite/funcs_1/r/is_tables_innodb.result:
  Updated results
mysql-test/suite/funcs_1/r/is_tables_memory.result:
  Updated results
mysql-test/suite/funcs_1/r/is_tables_myisam.result:
  Updated results
mysql-test/suite/funcs_1/r/is_tables_ndb.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_func_view.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_storedproc_02.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_storedproc_03.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_storedproc_06.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_storedproc_07.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_storedproc_08.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_storedproc_10.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_trig_0102.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_trig_03.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_trig_0407.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_trig_08.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_trig_09.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_trig_1011ext.result:
  Updated results
mysql-test/suite/funcs_1/r/memory_views.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_func_view.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_storedproc_02.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_storedproc_03.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_storedproc_06.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_storedproc_07.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_storedproc_08.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_storedproc_10.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_trig_0102.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_trig_03.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_trig_0407.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_trig_08.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_trig_09.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result:
  Updated results
mysql-test/suite/funcs_1/r/myisam_views.result:
  Updated results
mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc:
  "--echo" instead of SQL command.
mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc:
  Adjustment to new storage place of infile
  + correct formatting.
mysql-test/suite/funcs_1/storedproc/storedproc_02.inc:
  Backport from 5.1 + correct formatting.
mysql-test/suite/funcs_1/storedproc/storedproc_03.inc:
  Minor improvements + correct formatting.
mysql-test/suite/funcs_1/storedproc/storedproc_06.inc:
  Backport from 5.1 + correct formatting
mysql-test/suite/funcs_1/storedproc/storedproc_10.inc:
  Backport from 5.1. + correct formatting
mysql-test/suite/funcs_1/t/innodb_trig_0407.test:
  Cleanup
mysql-test/suite/funcs_1/t/is_basics_mixed.test:
  Adjustment to new storage place of outfile.
mysql-test/suite/funcs_1/t/memory_storedproc_02.test:
  Cleanup
mysql-test/suite/funcs_1/t/memory_storedproc_03.test:
  Cleanup
mysql-test/suite/funcs_1/t/memory_storedproc_06.test:
  Cleanup
mysql-test/suite/funcs_1/t/memory_storedproc_07.test:
  Cleanup
mysql-test/suite/funcs_1/t/memory_storedproc_08.test:
  Cleanup
mysql-test/suite/funcs_1/t/memory_storedproc_10.test:
  Cleanup
mysql-test/suite/funcs_1/t/myisam_storedproc_02.test:
  Cleanup
mysql-test/suite/funcs_1/t/myisam_storedproc_03.test:
  Cleanup
mysql-test/suite/funcs_1/t/myisam_storedproc_06.test:
  Cleanup
mysql-test/suite/funcs_1/t/myisam_storedproc_07.test:
  Cleanup
mysql-test/suite/funcs_1/t/myisam_storedproc_08.test:
  Cleanup
mysql-test/suite/funcs_1/t/myisam_storedproc_10.test:
  Cleanup
mysql-test/suite/funcs_1/triggers/trig_frkey2.inc:
  Cleanup
mysql-test/suite/funcs_1/triggers/triggers_0102.inc:
  Cleanup
mysql-test/suite/funcs_1/triggers/triggers_03.inc:
  Backport from 5.1
mysql-test/suite/funcs_1/triggers/triggers_0407.inc:
  Backport from 5.1
mysql-test/suite/funcs_1/triggers/triggers_08.inc:
  Backport from 5.1
mysql-test/suite/funcs_1/triggers/triggers_09.inc:
  Backport from 5.1
mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc:
  Backport from 5.1
mysql-test/suite/funcs_1/views/func_view.inc:
  Backport from 5.1
mysql-test/suite/funcs_1/views/views_master.inc:
  Cleanup
mysql-test/std_data/funcs_1/load_file.txt:
  New BitKeeper file ``mysql-test/std_data/funcs_1/load_file.txt''
		
	
		
			
				
	
	
		
			497 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			497 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
#### suite/funcs_1/storedproc/storedproc_03.inc
 | 
						|
#
 | 
						|
--source suite/funcs_1/storedproc/load_sp_tb.inc
 | 
						|
 | 
						|
# ==============================================================================
 | 
						|
# (numbering from requirement document TP v1.0, Last updated: 25 Jan 2005 01:00)
 | 
						|
#
 | 
						|
# 3.1.3 Syntax checks for the stored procedure-specific flow control statements
 | 
						|
#       IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE:
 | 
						|
#
 | 
						|
#-  1. Ensure that all subclauses that should be supported are supported.
 | 
						|
#-  2. Ensure that all subclauses that should not be supported are disallowed
 | 
						|
#      with an appropriate error message.
 | 
						|
#-  3. Ensure that all supported subclauses are supported only in the
 | 
						|
#      correct order.
 | 
						|
#-  4. Ensure that an appropriate error message is returned if a subclause is
 | 
						|
#      out-of-order in a stored procedure definition.
 | 
						|
#-  5. Ensure that all subclauses that are defined to be mandatory are indeed
 | 
						|
#      required to be mandatory by the MySQL server and tools.
 | 
						|
#-  6. Ensure that any subclauses that are defined to be optional are indeed
 | 
						|
#      treated as optional by the MySQL server and tools.
 | 
						|
##  7. Ensure that the IF statement acts correctly for all variants, including
 | 
						|
#      cases where statements are nested.
 | 
						|
##  8. Ensure that the CASE statement acts correctly for all variants,
 | 
						|
#      including cases where statements are nested.
 | 
						|
##  9. Ensure that the LOOP statement acts correctly for all variants,
 | 
						|
#      including cases where statements are nested.
 | 
						|
#- 10. Ensure that the labels enclosing each LOOP statement must match.
 | 
						|
#- 11. Ensure that it is possible to put a beginning label at the start of
 | 
						|
#      a LOOP statement without also requiring an ending label at the end of
 | 
						|
#      the same statement.
 | 
						|
#- 12. Ensure that it is not possible to put an ending label at the end of
 | 
						|
#      a LOOP statement without also requiring a matching beginning label
 | 
						|
#      at the start of the same statement.
 | 
						|
#- 13. Ensure that every beginning label must end with a colon (:).
 | 
						|
#- 14. Ensure that every beginning label with the same scope must be unique.
 | 
						|
## 15. Ensure that the LEAVE statement acts correctly for all variants,
 | 
						|
#      including cases where statements are nested.
 | 
						|
## 16. Ensure that the ITERATE statement acts correctly for all variants,
 | 
						|
#      including cases where statements are nested.
 | 
						|
#- 17. Ensure that the ITERATE statement fails, with an appropriate error
 | 
						|
#      message, if it appears in any context other than within LOOP, REPEAT,
 | 
						|
#      or WHILE statements.
 | 
						|
## 18. Ensure that the REPEAT statement acts correctly for all variants,
 | 
						|
#      including cases where statements are nested.
 | 
						|
#- 19. Ensure that the labels enclosing each REPEAT statement must match.
 | 
						|
#- 20. Ensure that it is possible to put a beginning label at the start of
 | 
						|
#      a REPEAT statement without also requiring an ending label at the end
 | 
						|
#      of the same statement.
 | 
						|
#- 21. Ensure that it is not possible to put an ending label at the end of
 | 
						|
#      a REPEAT statement without also requiring a matching beginning label
 | 
						|
#      at the start of the same statement.
 | 
						|
#- 22. Ensure that every beginning label must end with a colon (:).
 | 
						|
#- 23. Ensure that every beginning label with the same scope must be unique.
 | 
						|
## 24. Ensure that the WHILE statement acts correctly for all variants,
 | 
						|
#      including cases where statements are nested.
 | 
						|
#- 25. Ensure that the labels enclosing each WHILE statement must match.
 | 
						|
#- 26. Ensure that it is possible to put a beginning label at the start of
 | 
						|
#      a WHILE statement without also requiring an ending label at the end
 | 
						|
#      of the same statement.
 | 
						|
#- 27. Ensure that it is not possible to put an ending label at the end of
 | 
						|
#      a WHILE statement without also requiring a matching beginning label
 | 
						|
#      at the start of the same statement.
 | 
						|
#- 28. Ensure that every beginning label must end with a colon (:).
 | 
						|
#- 29. Ensure that every beginning label with the same scope must be unique.
 | 
						|
## 30. Ensure that multiple cases of all possible combinations of the control
 | 
						|
#      flow statements, nested within multiple compound statements within
 | 
						|
#      a stored procedure, always act correctly and return the expected result.
 | 
						|
#
 | 
						|
# ==============================================================================
 | 
						|
let $message= Section 3.1.3 - Syntax checks for the stored procedure-specific flow
 | 
						|
control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE:;
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
#FIXME # 3.1.3: enhance syntax checks with very complicated checks
 | 
						|
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
let $message= Testcase 3.1.3.7:;
 | 
						|
--source include/show_msg.inc
 | 
						|
let $message=
 | 
						|
Ensure that the IF statement acts correctly for all variants, including cases
 | 
						|
where statements are nested.;
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
DROP PROCEDURE IF EXISTS sp9;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
 | 
						|
 | 
						|
delimiter //;
 | 
						|
CREATE PROCEDURE sp9( action char(20), subaction char(20) )
 | 
						|
BEGIN
 | 
						|
   if action = 'action' then
 | 
						|
      if subaction = 'subaction' then
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction' , 1);
 | 
						|
      else
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 2);
 | 
						|
      END if;
 | 
						|
   else
 | 
						|
      if subaction = 'subaction'
 | 
						|
      then
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction' , 3);
 | 
						|
      elseif subaction = 'subaction1'
 | 
						|
      then
 | 
						|
         BEGIN
 | 
						|
            insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values ('none', 'subaction1', 4);
 | 
						|
         END;
 | 
						|
      else
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 5);
 | 
						|
      END if;
 | 
						|
   END if;
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
CALL sp9( 'action', 'subaction' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=1;
 | 
						|
 | 
						|
CALL sp9( 'temp', 'subaction' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=3;
 | 
						|
 | 
						|
CALL sp9( 'temp', 'subaction1' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=4;
 | 
						|
 | 
						|
CALL sp9( 'action', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=2;
 | 
						|
 | 
						|
CALL sp9( 'temp', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=5;
 | 
						|
 | 
						|
# cleanup 3.1.3.7
 | 
						|
DROP PROCEDURE sp9;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
let $message= Testcase 3.1.3.8.:;
 | 
						|
--source include/show_msg.inc
 | 
						|
let $message=
 | 
						|
Ensure that the CASE statement acts correctly for all variants, including cases
 | 
						|
where statements are nested.;
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
DROP PROCEDURE IF EXISTS sp10;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
create table res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 char(20), f2 varchar(20), f3 smallint);
 | 
						|
 | 
						|
delimiter //;
 | 
						|
CREATE PROCEDURE sp10( action char(20), subaction char(20) )
 | 
						|
BEGIN
 | 
						|
   case action
 | 
						|
   when 'action' then
 | 
						|
      case
 | 
						|
      when subaction = 'subaction_1' then
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 1);
 | 
						|
      when subaction = 'subaction_2' then
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 2);
 | 
						|
      else
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 3);
 | 
						|
      END case;
 | 
						|
    else
 | 
						|
      case
 | 
						|
      when subaction = 'subaction_1' then
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_1' , 4);
 | 
						|
      when subaction = 'subaction_2' then
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_2' , 5);
 | 
						|
      else
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 6);
 | 
						|
      END case;
 | 
						|
   END case;
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
CALL sp10( 'action', 'subaction_1' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
CALL sp10( 'action', 'subaction_2' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
CALL sp10( 'temp', 'subaction_1' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
CALL sp10( 'temp', 'subaction_2' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
CALL sp10( 'action', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
CALL sp10( 'temp', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
# cleanup 3.1.3.8
 | 
						|
DROP PROCEDURE sp10;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
let $message= Testcase 3.1.3.9 + 3.1.3.15:;
 | 
						|
--source include/show_msg.inc
 | 
						|
let $message=
 | 
						|
09. Ensure that the LOOP statement acts correctly for all variants, including
 | 
						|
.   cases where statements are nested.
 | 
						|
15. Ensure that the LEAVE statement acts correctly for all variants, including
 | 
						|
.   cases where statements are nested.;
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
DROP PROCEDURE IF EXISTS sp11;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
 | 
						|
 | 
						|
delimiter //;
 | 
						|
CREATE PROCEDURE sp11( )
 | 
						|
BEGIN
 | 
						|
   declare count1 integer default 1;
 | 
						|
   declare count2 integer default 1;
 | 
						|
   label1: loop
 | 
						|
      if count2 > 3 then leave label1;
 | 
						|
      END if;
 | 
						|
      set count1 = 1;
 | 
						|
      label2: loop
 | 
						|
         if count1 > 4 then leave label2;
 | 
						|
         END if;
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
 | 
						|
         set count1 = count1 + 1;
 | 
						|
         iterate label2;
 | 
						|
      END loop label2;
 | 
						|
      set count2 = count2 + 1;
 | 
						|
      iterate label1;
 | 
						|
   END loop label1;
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
CALL sp11();
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
# cleanup 3.1.3.9
 | 
						|
DROP PROCEDURE sp11;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
let $message= Testcase 3.1.3.16:;
 | 
						|
--source include/show_msg.inc
 | 
						|
let $message=
 | 
						|
Ensure that the ITERATE statement acts correctly for all variants, including
 | 
						|
cases where statements are nested.
 | 
						|
(tests for this testcase are also included in other testcases);
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP PROCEDURE IF EXISTS sp31316;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
delimiter //;
 | 
						|
 | 
						|
# wrong label at iterate
 | 
						|
# Error: SQLSTATE: 42000 (ER_SP_LILABEL_MISMATCH)
 | 
						|
#        Message: %s with no matching label: %s
 | 
						|
--error ER_SP_LILABEL_MISMATCH
 | 
						|
CREATE PROCEDURE sp31316( )
 | 
						|
BEGIN
 | 
						|
   declare count1 integer default 1;
 | 
						|
   declare count2 integer default 1;
 | 
						|
   label1: loop
 | 
						|
      if count2 > 3 then leave label1;
 | 
						|
      END if;
 | 
						|
      set count1 = 1;
 | 
						|
      label2: loop
 | 
						|
         if count1 > 4 then leave label2;
 | 
						|
         END if;
 | 
						|
         insert into temp values( count1, count2);
 | 
						|
         set count1 = count1 + 1;
 | 
						|
         iterate label3;
 | 
						|
      END loop label2;
 | 
						|
      set count2 = count2 + 1;
 | 
						|
      iterate label1;
 | 
						|
   END loop label1;
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
# cleanup 3.1.3.16
 | 
						|
#DROP PROCEDURE sp31316;
 | 
						|
 | 
						|
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
let $message= Testcase 3.1.3.18:;
 | 
						|
--source include/show_msg.inc
 | 
						|
let $message=
 | 
						|
Ensure that the REPEAT statement acts correctly for all variants, including
 | 
						|
cases where statements are nested.;
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP PROCEDURE IF EXISTS sp17;
 | 
						|
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
 | 
						|
 | 
						|
delimiter //;
 | 
						|
CREATE PROCEDURE sp17( )
 | 
						|
BEGIN
 | 
						|
   declare count1 integer default 1;
 | 
						|
   declare count2 integer default 1;
 | 
						|
   repeat
 | 
						|
      set count1 = count1 + 1;
 | 
						|
      set count2 = 1;
 | 
						|
      label1: repeat
 | 
						|
         set count2 = count2 + 1;
 | 
						|
         insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
 | 
						|
         until count2 > 3
 | 
						|
      END repeat label1;
 | 
						|
      until count1 > 3
 | 
						|
   END repeat;
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
CALL sp17();
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
# cleanup 3.1.3.18
 | 
						|
DROP PROCEDURE sp17;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
let $message= Testcase 3.1.3.24:;
 | 
						|
--source include/show_msg.inc
 | 
						|
let $message=
 | 
						|
Ensure that the WHILE statement acts correctly for all variants, including cases
 | 
						|
where statements are nested.;
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
drop table IF EXISTS res_t21;
 | 
						|
DROP PROCEDURE IF EXISTS sp21;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
create table res_t21(name text(10), surname blob(20), age_averylongfieldname_averylongname_1234569 smallint);
 | 
						|
insert into res_t21 values('ashwin', 'mokadam', 25);
 | 
						|
 | 
						|
delimiter //;
 | 
						|
CREATE PROCEDURE sp21( )
 | 
						|
BEGIN
 | 
						|
   declare count1 integer default 0;
 | 
						|
   declare count2 integer default 0;
 | 
						|
   while count1 < 3 do
 | 
						|
      BEGIN
 | 
						|
         declare ithisissamevariablename int default 100;
 | 
						|
         SELECT ithisissamevariablename;
 | 
						|
         BEGIN
 | 
						|
            declare ithisissamevariablename int default 200;
 | 
						|
            SELECT ithisissamevariablename;
 | 
						|
         END;
 | 
						|
         set count2 = 0;
 | 
						|
         label1: while count2 < 3 do
 | 
						|
            BEGIN
 | 
						|
               declare count1 integer default 7;
 | 
						|
               set count2 = count2 + 1;
 | 
						|
               insert into res_t21 values( 'xyz' , 'pqr', count2);
 | 
						|
               label2: while count1 < 10 do
 | 
						|
                  set count1 = count1 + 1;
 | 
						|
                  insert into res_t21 values( 'xyz' , 'pqr', count1);
 | 
						|
               END while label2;
 | 
						|
            END;
 | 
						|
         END while label1;
 | 
						|
         set count1 = count1 + 1;
 | 
						|
      END;
 | 
						|
   END while;
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
CALL sp21();
 | 
						|
SELECT * from res_t21;
 | 
						|
 | 
						|
# cleanup 3.1.3.
 | 
						|
DROP PROCEDURE sp21;
 | 
						|
drop table res_t21;
 | 
						|
 | 
						|
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
let $message= Testcase 3.1.3.30:;
 | 
						|
--source include/show_msg.inc
 | 
						|
let $message=
 | 
						|
Ensure that multiple cases of all possible combinations of the control flow
 | 
						|
statements, nested within multiple compound statements within a stored
 | 
						|
procedure, always act correctly and return the expected result.;
 | 
						|
--source include/show_msg80.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS res_tbl;
 | 
						|
DROP PROCEDURE IF EXISTS sp31330;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
create table res_tbl (f1 int, f2 text, f3 blob, f4 date,
 | 
						|
      f5 set('one', 'two', 'three', 'four', 'five') default 'one');
 | 
						|
 | 
						|
delimiter //;
 | 
						|
#FIXME: can be enhanced more and more ...
 | 
						|
CREATE PROCEDURE sp31330 (path int)
 | 
						|
BEGIN
 | 
						|
   declare count int default 1;
 | 
						|
   declare var1 text;
 | 
						|
   declare var2 blob;
 | 
						|
   declare var3 date;
 | 
						|
   declare var4 set('one', 'two', 'three', 'four', 'five') DEFAULT 'five';
 | 
						|
   case
 | 
						|
      when path=1 then
 | 
						|
         set var3 = '2000-11-09';
 | 
						|
         set var1 = 'flowing through case 1';
 | 
						|
         label1: loop
 | 
						|
            if count > 5 then
 | 
						|
               if var4=1000 then
 | 
						|
                  set var2 = 'exiting out of case 1 - invalid SET';
 | 
						|
               END if;
 | 
						|
               if var4='two' then
 | 
						|
                  set var2 = 'exiting out of case 1';
 | 
						|
               END if;
 | 
						|
               insert into res_tbl values (1, var1, var2, var3, (count-2));
 | 
						|
               leave label1;
 | 
						|
            elseif count = 5 then
 | 
						|
               set count= count + 2;
 | 
						|
               set var4='two';
 | 
						|
               iterate label1;
 | 
						|
            else
 | 
						|
               set count= count + 1;
 | 
						|
            END if;
 | 
						|
            set var4='one';
 | 
						|
         END loop label1;
 | 
						|
      when path=2 then
 | 
						|
         set var3 = '1989-11-09';
 | 
						|
         set var1 = 'flowing through case 2';
 | 
						|
         set @count3=0;
 | 
						|
         label2: repeat
 | 
						|
            set count=count + 1;
 | 
						|
            set @count2=1;
 | 
						|
            while @count2 <= 5 do
 | 
						|
               set @count2 = @count2 + 1;
 | 
						|
            END while;
 | 
						|
            SELECT @count2;
 | 
						|
            set @count3=@count3 + @count2;
 | 
						|
            until count > 5
 | 
						|
         END repeat label2;
 | 
						|
         set var2 = 'exiting out of case 2';
 | 
						|
         set var4 = count-3;
 | 
						|
         SELECT @count3;
 | 
						|
         insert into res_tbl values (2, var1, var2, var3, var4);
 | 
						|
      ELSE BEGIN
 | 
						|
         set @error_opt='undefined path specified';
 | 
						|
         SELECT @error_opt;
 | 
						|
      END;
 | 
						|
   END case;
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
# Error: SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS)
 | 
						|
#        Message: Incorrect number of arguments for %s %s; expected %u, got %u
 | 
						|
--error ER_SP_WRONG_NO_OF_ARGS
 | 
						|
CALL sp31330();
 | 
						|
 | 
						|
CALL sp31330(1);
 | 
						|
SELECT * from res_tbl;
 | 
						|
 | 
						|
CALL sp31330(2);
 | 
						|
SELECT * from res_tbl;
 | 
						|
 | 
						|
CALL sp31330(4);
 | 
						|
 | 
						|
# cleanup 3.1.3.30
 | 
						|
DROP PROCEDURE sp31330;
 | 
						|
drop table res_tbl;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
# ==============================================================================
 | 
						|
# USE the same .inc to cleanup before and after the test
 | 
						|
--source suite/funcs_1/storedproc/cleanup_sp_tb.inc
 | 
						|
 | 
						|
# ==============================================================================
 | 
						|
--echo
 | 
						|
--echo .                               +++ END OF SCRIPT +++
 | 
						|
--echo --------------------------------------------------------------------------------
 | 
						|
# ==============================================================================
 |