File: func_regexp.test

package info (click to toggle)
mariadb 1%3A11.8.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 772,520 kB
  • sloc: ansic: 2,414,714; cpp: 1,791,394; asm: 381,336; perl: 62,905; sh: 49,647; pascal: 40,897; java: 39,363; python: 20,791; yacc: 20,432; sql: 17,907; xml: 12,344; ruby: 8,544; cs: 6,542; makefile: 6,145; ada: 1,879; lex: 1,193; javascript: 996; objc: 80; tcl: 73; awk: 46; php: 22
file content (153 lines) | stat: -rw-r--r-- 3,986 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#
# 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

#
# MDEV-5820 MySQL Bug #54805 definitions in regex/my_regex.h conflict with /usr/include/regex.h
# Bug #55427 REGEXP does not recognize '\t' as [:blank:]
#
# Test that \t is indeed recognized as [[:blank:]]
#
SELECT ' '  REGEXP '[[:blank:]]';
SELECT '\t' REGEXP '[[:blank:]]';

SELECT ' '  REGEXP '[[:space:]]';
SELECT '\t' REGEXP '[[:space:]]';

--echo #
--echo # MDEV-13967 Parameter data type control for Item_long_func
--echo #
SELECT REGEXP_INSTR('111222333',2);

--echo # End of 10.3 tests

--echo #
--echo # MDEV-33344 REGEXP empty string inconsistent
--echo #
create table t1 (x char(5));
insert t1 values (''), ('x');
select 'foo' regexp x from t1 order by x asc;
select 'foo' regexp x from t1 order by x desc;
drop table t1;

--echo #
--echo # MDEV-21076 NOT NULL and UNIQUE constraints cause SUM() to yield an incorrect result
--echo #

CREATE TABLE t0(c0 INT NOT NULL, c1 CHAR UNIQUE);
INSERT INTO t0 VALUES (0, 1);
INSERT INTO t0 VALUES (0, '');
SELECT (c1 RLIKE c1), (c0 IS NULL) FROM t0;
SELECT SUM(a.t) FROM (SELECT (c1 RLIKE c1) = (c0 IS NULL) as t FROM t0) as a;
DROP TABLE t0;

--echo #
--echo # MDEV-21058 CREATE TABLE with generated column and RLIKE results in sigabrt
--echo #

CREATE TABLE t1 (c0 INT);
INSERT INTO t1 VALUES (1),(2),(3);

--error ER_REGEXP_ERROR
SELECT ('' RLIKE '[') AS c1 FROM t1;

--error ER_REGEXP_ERROR
SELECT REGEXP_INSTR('','[') AS c1 FROM t1;

SELECT c0, '' RLIKE NULL AS c1, REGEXP_INSTR('', NULL) AS c2
FROM t1 ORDER BY c0;

DROP TABLE t1;

--echo # End of 10.5 tests