# The include statement below is a temp one for tests that are yet to #be ported to run with InnoDB, #but needs to be kept for tests that would need MyISAM in future. --source include/force_myisam_default.inc # # Some regexp tests # --disable_warnings drop table if exists t1; --enable_warnings set names latin1; --source include/ctype_regex.inc # # This test a bug in regexp on Alpha # create table t1 (xxx char(128)); insert into t1 (xxx) values('this is a test of some long text to see what happens'); select * from t1 where xxx regexp('is a test of some long text to'); explain extended select * from t1 where xxx regexp('is a test of some long text to'); select * from t1 where xxx regexp('is a test of some long text to '); select * from t1 where xxx regexp('is a test of some long text to s'); select * from t1 where xxx regexp('is a test of some long text to se'); drop table t1; create table t1 (xxx char(128)); insert into t1 (xxx) values('this is some text: to test - out.reg exp (22/45)'); select * from t1 where xxx REGEXP '^this is some text: to test - out\\.reg exp [[(][0-9]+[/\\][0-9]+[])][ ]*$'; drop table t1; # # Check with different character sets and collations # select _latin1 0xFF regexp _latin1 '[[:lower:]]' COLLATE latin1_bin; select _koi8r 0xFF regexp _koi8r '[[:lower:]]' COLLATE koi8r_bin; select _latin1 0xFF regexp _latin1 '[[:upper:]]' COLLATE latin1_bin; select _koi8r 0xFF regexp _koi8r '[[:upper:]]' COLLATE koi8r_bin; select _latin1 0xF7 regexp _latin1 '[[:alpha:]]'; select _koi8r 0xF7 regexp _koi8r '[[:alpha:]]'; select _latin1'a' regexp _latin1'A' collate latin1_general_ci; select _latin1'a' regexp _latin1'A' collate latin1_bin; # # regexp cleanup() # create table t1 (a varchar(40)); insert into t1 values ('C1'),('C2'),('R1'),('C3'),('R2'),('R3'); prepare stmt1 from 'select a from t1 where a rlike ? order by a'; set @a="^C.*"; execute stmt1 using @a; set @a="^R.*"; execute stmt1 using @a; deallocate prepare stmt1; drop table t1; --echo End of 4.1 tests # # Bug #31440: 'select 1 regex null' asserts debug server # SELECT 1 REGEXP NULL; # # Bug #39021: SELECT REGEXP BINARY NULL never returns # SELECT '' REGEXP BINARY NULL; SELECT NULL REGEXP BINARY NULL; SELECT 'A' REGEXP BINARY NULL; SELECT "ABC" REGEXP BINARY NULL; --echo End of 5.0 tests # # Bug #37337: Function returns different results # CREATE TABLE t1(a INT, b CHAR(4)); INSERT INTO t1 VALUES (1, '6.1'), (1, '7.0'), (1, '8.0'); PREPARE stmt1 FROM "SELECT a FROM t1 WHERE a=1 AND '7.0' REGEXP b LIMIT 1"; EXECUTE stmt1; EXECUTE stmt1; EXECUTE stmt1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; DROP TABLE t1; --echo End of 5.1 tests # # Bug #54805 definitions in regex/my_regex.h conflict with /usr/include/regex.h # # This test verifies that '\t' is recognized as space, but not as blank. # This is *not* according to the POSIX standard, but seems to have been MySQL # behaviour ever since regular expressions were introduced. # See: Bug #55427 REGEXP does not recognize '\t' as [:blank:] # SELECT ' ' REGEXP '[[:blank:]]'; SELECT '\t' REGEXP '[[:blank:]]'; SELECT ' ' REGEXP '[[:space:]]'; SELECT '\t' REGEXP '[[:space:]]';