1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

BUG#11316 mysqltest, problems when assigning value with '#' to $variable

- Fixed problem, only detect comment if the # is on start of line AND starting line of the current command.
 - Wrote tests for most of the mysqltest commands, added stricter checking of correct syntax.


client/mysqltest.c:
  Updated mysql test to do stricter checking of syntax. For example when the number 
  of arguments to a command is known, everything else is "junk" => die. 
  Better checking of argument types.
  Added better debug printouts.
  Added improved printouts when wrong syntax is detected.
  Fix two bugs where mysqltest could not detect end of comamnd properly, as described in bug#11316
  Fix segfault when performing too many source commands.
  Fix segfault when doing too many while loop levels.
  Add printout of line number in die
  Remove lineno and \n in all strings passed to die function.
  Decrese BLOCK_STACK_DEPTH from 32 to 16, does any test use more than 1 level?
mysql-test/mysql-test-run.pl:
  export MYSQL_TEST environment variable, used from msyqltest.test
mysql-test/mysql-test-run.sh:
  export MYSQL_TEST environment variable, used from msyqltest.test
mysql-test/r/mysqltest.result:
  Updated test results
mysql-test/r/rpl_flush_log_loop.result:
  Updated test result.
  Approved by lars
mysql-test/t/innodb-deadlock.test:
  Correct wrong syntax
  Superfluos ;
mysql-test/t/innodb-lock.test:
  Correct wrong syntax
  Superfluos ;
mysql-test/t/mysqltest.test:
  Add several new tests  for mysqltest.
  Foxus on detecting wrong syntax in test files.
  Use exec with expected error to execute test scripts that will kill mysqltest
  Change some negative test that were previously commented out to use the above method.
mysql-test/t/ndb_autodiscover2.test:
  Correct wrong syntax
  Superfluos ;
mysql-test/t/rpl_change_master.test:
  Correct wrong syntax
  Superfluos ;
mysql-test/t/rpl_deadlock.test:
  Correct wrong syntax
  Superfluos ;
mysql-test/t/rpl_drop_temp.test:
  Correct wrong syntax
  Superfluos ;
mysql-test/t/rpl_flush_log_loop.test:
  Fix after detecting wrong syntax, missing ;
  Discussed with lars.
mysql-test/t/rpl_insert_id.test:
  Missing ;
mysql-test/t/rpl_rotate_logs.test:
  Correct wrong syntax
  Superfluos ;
mysql-test/t/rpl_until.test:
  Missing delimiter
mysql-test/include/mysqltest_while.inc:
  New file to test too many while levels
This commit is contained in:
unknown
2005-07-15 17:51:43 +02:00
parent 3d2814d6d4
commit d57a0e52ac
17 changed files with 1124 additions and 143 deletions

View File

@ -7,6 +7,7 @@ otto
select otto from (select 1 as otto) as t1;
otto
1
mysqltest: At line 1: query 'select friedrich from (select 1 as otto) as t1' failed: 1054: Unknown column 'friedrich' in 'field list'
select friedrich from (select 1 as otto) as t1;
ERROR 42S22: Unknown column 'friedrich' in 'field list'
select otto from (select 1 as otto) as t1;
@ -15,10 +16,12 @@ otto
select otto from (select 1 as otto) as t1;
otto
1
mysqltest: At line 1: query 'select otto from (select 1 as otto) as t1' succeeded - should have failed with sqlstate 42S22...
select friedrich from (select 1 as otto) as t1;
ERROR 42S22: Unknown column 'friedrich' in 'field list'
select friedrich from (select 1 as otto) as t1;
ERROR 42S22: Unknown column 'friedrich' in 'field list'
mysqltest: At line 1: query 'select friedrich from (select 1 as otto) as t1' failed with wrong sqlstate 42S22 instead of 00000...
select otto from (select 1 as otto) as t1;
otto
1
@ -135,6 +138,8 @@ ERROR 42S02: Table 'test.t1' doesn't exist
select 1146 as "after_!errno_masked_error" ;
after_!errno_masked_error
1146
mysqltest: At line 1: query 'select 3 from t1' failed with wrong errno 1146 instead of 1000...
mysqltest: At line 1: query 'select 3 from t1' failed with wrong errno 1146 instead of 1000...
garbage ;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'garbage' at line 1
select 1064 as "after_--enable_abort_on_error" ;
@ -142,3 +147,119 @@ after_--enable_abort_on_error
1064
select 3 from t1 ;
ERROR 42S02: Table 'test.t1' doesn't exist
mysqltest: At line 1: query 'select 3 from t1' failed with wrong errno 1146 instead of 1064...
mysqltest: At line 1: query 'select 3 from t1' failed: 1146: Table 'test.t1' doesn't exist
hello
hello
;;;;;;;;
# MySQL: -- The
mysqltest: At line 1: End of line junk detected: "6"
mysqltest: At line 1: End of line junk detected: "6"
mysqltest: At line 1: Missing delimiter
mysqltest: At line 1: Extra delimiter ";" found
MySQL
"MySQL"
MySQL: The world''s most popular open source database
"MySQL: The world's most popular open source database"
MySQL: The world''s
most popular open
source database
# MySQL: The world''s
# most popular open
# source database
- MySQL: The world''s
- most popular open
- source database
- MySQL: The world''s
-- most popular open
-- source database
# MySQL: The
--world''s
# most popular
-- open
- source database
"MySQL: The world's most popular; open source database"
"MySQL: The world's most popular ; open source database"
"MySQL: The world's most popular ;open source database"
echo message echo message
mysqltest: At line 1: Empty variable
sh: -c: line 0: syntax error near unexpected token `;'
sh: -c: line 0: `;'
mysqltest: At line 1: command ";" failed
mysqltest: At line 1: Missing argument in exec
MySQL
"MySQL"
MySQL: The
world''s most
popular open
source database
# MySQL: The
# world''s most
# popular open
# source database
-- MySQL: The
-- world''s most
-- popular open
-- source database
# MySQL: The
- world''s most
-- popular open
# source database
'$message'
"$message"
hej
hej
hej
mysqltest: At line 1: Missing arguments to let
mysqltest: At line 1: Missing variable name in let
mysqltest: At line 1: Variable name in hi=hi does not start with '$'
mysqltest: At line 1: Missing assignment operator in let
mysqltest: At line 1: Missing assignment operator in let
mysqltest: At line 1: Missing arguments to let
mysqltest: At line 1: Missing variable name in let
mysqltest: At line 1: Variable name in =hi does not start with '$'
mysqltest: At line 1: Missing assignment operator in let
mysqltest: At line 1: Missing file name in source
mysqltest: At line 1: Could not open file ./non_existingFile
mysqltest: In included file "./var/tmp/recursive.sql": At line 1: Source directives are nesting too deep
mysqltest: In included file "./var/tmp/error.sql": At line 1: query 'garbage ' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'garbage' at line 1
mysqltest: At line 1: Missing argument to sleep
mysqltest: At line 1: Invalid argument to sleep "abc"
1
2
101
hej
1
mysqltest: At line 1: Missing arguments to inc
mysqltest: At line 1: First argument to inc must be a variable (start with $)
mysqltest: At line 1: End of line junk detected: "1000"
4
4
-1
-2
99
hej
-1
mysqltest: At line 1: Missing arguments to dec
mysqltest: At line 1: First argument to dec must be a variable (start with $)
mysqltest: At line 1: End of line junk detected: "1000"
mysqltest: At line 1: Missing arguments to system, nothing to do!
mysqltest: At line 1: Missing arguments to system, nothing to do!
sh: NonExistsinfComamdn: command not found
mysqltest: At line 1: system command 'NonExistsinfComamdn' failed
test
test2
test3
test4
1
mysqltest: In included file "./include/mysqltest_while.inc": At line 32: Nesting too deeply
mysqltest: At line 1: missing '(' in while
mysqltest: At line 1: missing ')' in while
mysqltest: At line 1: Missing '{' after while. Found "dec $i"
mysqltest: At line 1: Stray '}' - end of block before beginning
mysqltest: At line 1: Stray '}' - end of block before beginning
mysqltest: At line 1: query '' failed: 1065: Query was empty
mysqltest: At line 1: Missing '{' after while. Found "echo hej"
mysqltest: At line 3: Missing end of block
mysqltest: At line 1: Missing newline between while and '{'