!5718 修复IA92ZU所示的正则表达式为[[:digit:]]时core的问题
Merge pull request !5718 from wangfeihuo/master
This commit is contained in:
@ -192,8 +192,10 @@ static int findprefix(struct cnfa* cnfa, struct colormap* cm, chr* string, size_
|
||||
*/
|
||||
if (cm->cd[thiscolor].nschrs == 1 || thiscolor == 0) {
|
||||
c = cm->cd[thiscolor].firstchr;
|
||||
} else {
|
||||
} else if (cm->cmranges != NULL && thiscolor > 0 && thiscolor <= cm->numcmranges) {
|
||||
c = cm->cmranges[thiscolor - 1].cmin;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
if (GETCOLOR(cm, c) != thiscolor)
|
||||
break;
|
||||
|
||||
247
src/test/regress/expected/test_regexp.out
Normal file
247
src/test/regress/expected/test_regexp.out
Normal file
@ -0,0 +1,247 @@
|
||||
-- create new schema --
|
||||
drop schema if exists test_regexp;
|
||||
NOTICE: schema "test_regexp" does not exist, skipping
|
||||
create schema test_regexp;
|
||||
set search_path=test_regexp;
|
||||
create table t1
|
||||
(
|
||||
f_int1 integer default 0 not null,
|
||||
f_int2 integer,
|
||||
f_int3 integer,
|
||||
f_bigint1 bigint,
|
||||
f_bigint2 bigint,
|
||||
f_bigint3 bigint,
|
||||
f_bool1 bool,
|
||||
f_bool2 bool,
|
||||
f_num1 number(38, 0),
|
||||
f_num2 number(38, 0),
|
||||
f_dec1 DECIMAL(38, 0),
|
||||
f_dec2 DECIMAL(38, 0),
|
||||
f_num10 number(38, 10),
|
||||
f_dec10 decimal(38, 10),
|
||||
f_float float,
|
||||
f_double double precision,
|
||||
f_real real,
|
||||
f_char1 char(128),
|
||||
f_char2 char(128),
|
||||
f_varchar1 varchar(512),
|
||||
f_varchar2 varchar2(512),
|
||||
f_date1 date,
|
||||
f_date2 date,
|
||||
f_time date,
|
||||
f_timestamp timestamp,
|
||||
f_tp_tz timestamp,
|
||||
f_tp_ltz timestamp,
|
||||
f_binary bytea,
|
||||
f_varbinary bytea,
|
||||
f_blob blob,
|
||||
f_clob clob
|
||||
);
|
||||
create index idx_1 on t1(f_int1);
|
||||
delete from t1;
|
||||
insert into t1(f_int1, f_varchar1) values (1,'1234560');
|
||||
insert into t1(f_int1, f_varchar1) values (2,'1234560');
|
||||
insert into t1(f_int1, f_varchar1) values (3,'1b3b560');
|
||||
insert into t1(f_int1, f_varchar1) values (4,'abc');
|
||||
insert into t1(f_int1, f_varchar1) values (5,'abcde');
|
||||
insert into t1(f_int1, f_varchar1) values (6,'ADREasx');
|
||||
insert into t1(f_int1, f_varchar1) values (7,'123 45');
|
||||
insert into t1(f_int1, f_varchar1) values (8,'adc de');
|
||||
insert into t1(f_int1, f_varchar1) values (9,'adc,.de');
|
||||
insert into t1(f_int1, f_varchar1) values (10,'1B');
|
||||
insert into t1(f_int1, f_varchar1) values (11,'abcbvbnb');
|
||||
insert into t1(f_int1, f_varchar1) values (12,'11114560');
|
||||
insert into t1(f_int1, f_varchar1) values (13,'11124560');
|
||||
insert into t1(f_int1, f_varchar1) values(14, 'abc'||chr(10)||'DEF'||chr(10)||'hij');
|
||||
insert into t1(f_int1, f_varchar1) values(15, '1abc2abc3abc4abc5abc6abc7abc8abc9abc9abcAabcBabc');
|
||||
insert into t1(f_int1, f_varchar1) values(16, '1abc2abc3abc4abc5abc6abc7abc8abc9abcAabcAabcBabc');
|
||||
insert into t1(f_int1, f_varchar1) values(17, 'oltp100');
|
||||
insert into t1(f_int1, f_varchar1) values(18, 'oltp 100');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(19,'Fluffy','Fluffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(20,'Buffy','Buffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(21,'fluffy','fluffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(22,'buffy','buffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(23,'桂林山水abc高山流水','桂林山水abc高山流水');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(24,'aa abc zzzz','aa abc zzzz');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(25,'我的的的的 abcabcabcabcabcabcabcabcabcabcabcabc','我的的的的 abcabcabcabcabcabcabcabcabcabcabcabc');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(26,'abcbvbnb
|
||||
efgh
|
||||
ijjkkkkkkk','abcbvbnb
|
||||
efgh
|
||||
ijjkkkkkkk123');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(27,'abc efg','hgj khln');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(28,'abc\efg','hgj(khln');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(29,'*+?|^${}.','*+?|^${}.');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'1....60');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
1 | 1234560
|
||||
2 | 1234560
|
||||
3 | 1b3b560
|
||||
12 | 11114560
|
||||
13 | 11124560
|
||||
(5 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'1[0-9]{4}60');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
1 | 1234560
|
||||
2 | 1234560
|
||||
12 | 11114560
|
||||
13 | 11124560
|
||||
(4 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'1[[:digit:]]{4}60');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
1 | 1234560
|
||||
2 | 1234560
|
||||
12 | 11114560
|
||||
13 | 11124560
|
||||
(4 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where not regexp_like(f_varchar1,'^[[:digit:]]+$');
|
||||
f_int1 | f_varchar1
|
||||
--------+--------------------------------------------------
|
||||
3 | 1b3b560
|
||||
4 | abc
|
||||
5 | abcde
|
||||
6 | ADREasx
|
||||
7 | 123 45
|
||||
8 | adc de
|
||||
9 | adc,.de
|
||||
10 | 1B
|
||||
11 | abcbvbnb
|
||||
14 | abc +
|
||||
| DEF +
|
||||
| hij
|
||||
15 | 1abc2abc3abc4abc5abc6abc7abc8abc9abc9abcAabcBabc
|
||||
16 | 1abc2abc3abc4abc5abc6abc7abc8abc9abcAabcAabcBabc
|
||||
17 | oltp100
|
||||
18 | oltp 100
|
||||
(14 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^[^[:digit:]]+$');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
4 | abc
|
||||
5 | abcde
|
||||
6 | ADREasx
|
||||
8 | adc de
|
||||
9 | adc,.de
|
||||
11 | abcbvbnb
|
||||
14 | abc +
|
||||
| DEF +
|
||||
| hij
|
||||
(7 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^1[2B]');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
1 | 1234560
|
||||
2 | 1234560
|
||||
7 | 123 45
|
||||
10 | 1B
|
||||
(4 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'[[:space:]]');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
7 | 123 45
|
||||
8 | adc de
|
||||
14 | abc +
|
||||
| DEF +
|
||||
| hij
|
||||
18 | oltp 100
|
||||
(4 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^([a-z]+|[0-9]+)$');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
1 | 1234560
|
||||
2 | 1234560
|
||||
4 | abc
|
||||
5 | abcde
|
||||
11 | abcbvbnb
|
||||
12 | 11114560
|
||||
13 | 11124560
|
||||
(7 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'[[:punct:]]');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
9 | adc,.de
|
||||
(1 row)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^DEF$');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
(0 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^1[2b]','ic');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
1 | 1234560
|
||||
2 | 1234560
|
||||
3 | 1b3b560
|
||||
7 | 123 45
|
||||
(4 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^1[2b]','ci');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
1 | 1234560
|
||||
2 | 1234560
|
||||
3 | 1b3b560
|
||||
7 | 123 45
|
||||
10 | 1B
|
||||
(5 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'a');
|
||||
f_int1 | f_varchar1
|
||||
--------+--------------------------------------------------
|
||||
4 | abc
|
||||
5 | abcde
|
||||
6 | ADREasx
|
||||
8 | adc de
|
||||
9 | adc,.de
|
||||
11 | abcbvbnb
|
||||
14 | abc +
|
||||
| DEF +
|
||||
| hij
|
||||
15 | 1abc2abc3abc4abc5abc6abc7abc8abc9abc9abcAabcBabc
|
||||
16 | 1abc2abc3abc4abc5abc6abc7abc8abc9abcAabcAabcBabc
|
||||
(9 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'(1abc)(2abc)(3abc)(4abc)(5abc)(6abc)(7abc)(8abc)(9abc)\9(Aabc)(Babc)');
|
||||
f_int1 | f_varchar1
|
||||
--------+--------------------------------------------------
|
||||
15 | 1abc2abc3abc4abc5abc6abc7abc8abc9abc9abcAabcBabc
|
||||
(1 row)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'(1abc)(2abc)(3abc)(4abc)(5abc)(6abc)(7abc)(8abc)(9abc)(Aabc)\a(Babc)');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
(0 rows)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'oltp 100');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
18 | oltp 100
|
||||
(1 row)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'oltp100');
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
17 | oltp100
|
||||
(1 row)
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'ffy*') order by 1;
|
||||
f_int1 | f_varchar1
|
||||
--------+------------
|
||||
(0 rows)
|
||||
|
||||
-- clean
|
||||
drop index idx_1;
|
||||
drop table t1;
|
||||
drop schema if exists test_regexp cascade;
|
||||
@ -161,7 +161,7 @@ test: single_node_inet single_node_macaddr single_node_tstypes single_node_comme
|
||||
# ----------
|
||||
#test: single_node_geometry single_node_horology
|
||||
#test: single_node_regex
|
||||
test: single_node_regex_temp
|
||||
test: single_node_regex_temp test_regexp
|
||||
test: single_node_oidjoins single_node_type_sanity
|
||||
|
||||
# ----------
|
||||
|
||||
105
src/test/regress/sql/test_regexp.sql
Normal file
105
src/test/regress/sql/test_regexp.sql
Normal file
@ -0,0 +1,105 @@
|
||||
-- create new schema --
|
||||
drop schema if exists test_regexp;
|
||||
create schema test_regexp;
|
||||
set search_path=test_regexp;
|
||||
|
||||
|
||||
create table t1
|
||||
(
|
||||
f_int1 integer default 0 not null,
|
||||
f_int2 integer,
|
||||
f_int3 integer,
|
||||
f_bigint1 bigint,
|
||||
f_bigint2 bigint,
|
||||
f_bigint3 bigint,
|
||||
f_bool1 bool,
|
||||
f_bool2 bool,
|
||||
f_num1 number(38, 0),
|
||||
f_num2 number(38, 0),
|
||||
f_dec1 DECIMAL(38, 0),
|
||||
f_dec2 DECIMAL(38, 0),
|
||||
f_num10 number(38, 10),
|
||||
f_dec10 decimal(38, 10),
|
||||
f_float float,
|
||||
f_double double precision,
|
||||
f_real real,
|
||||
f_char1 char(128),
|
||||
f_char2 char(128),
|
||||
f_varchar1 varchar(512),
|
||||
f_varchar2 varchar2(512),
|
||||
f_date1 date,
|
||||
f_date2 date,
|
||||
f_time date,
|
||||
f_timestamp timestamp,
|
||||
f_tp_tz timestamp,
|
||||
f_tp_ltz timestamp,
|
||||
f_binary bytea,
|
||||
f_varbinary bytea,
|
||||
f_blob blob,
|
||||
f_clob clob
|
||||
);
|
||||
|
||||
create index idx_1 on t1(f_int1);
|
||||
|
||||
delete from t1;
|
||||
insert into t1(f_int1, f_varchar1) values (1,'1234560');
|
||||
insert into t1(f_int1, f_varchar1) values (2,'1234560');
|
||||
insert into t1(f_int1, f_varchar1) values (3,'1b3b560');
|
||||
insert into t1(f_int1, f_varchar1) values (4,'abc');
|
||||
insert into t1(f_int1, f_varchar1) values (5,'abcde');
|
||||
insert into t1(f_int1, f_varchar1) values (6,'ADREasx');
|
||||
insert into t1(f_int1, f_varchar1) values (7,'123 45');
|
||||
insert into t1(f_int1, f_varchar1) values (8,'adc de');
|
||||
insert into t1(f_int1, f_varchar1) values (9,'adc,.de');
|
||||
insert into t1(f_int1, f_varchar1) values (10,'1B');
|
||||
insert into t1(f_int1, f_varchar1) values (11,'abcbvbnb');
|
||||
insert into t1(f_int1, f_varchar1) values (12,'11114560');
|
||||
insert into t1(f_int1, f_varchar1) values (13,'11124560');
|
||||
insert into t1(f_int1, f_varchar1) values(14, 'abc'||chr(10)||'DEF'||chr(10)||'hij');
|
||||
insert into t1(f_int1, f_varchar1) values(15, '1abc2abc3abc4abc5abc6abc7abc8abc9abc9abcAabcBabc');
|
||||
insert into t1(f_int1, f_varchar1) values(16, '1abc2abc3abc4abc5abc6abc7abc8abc9abcAabcAabcBabc');
|
||||
insert into t1(f_int1, f_varchar1) values(17, 'oltp100');
|
||||
insert into t1(f_int1, f_varchar1) values(18, 'oltp 100');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(19,'Fluffy','Fluffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(20,'Buffy','Buffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(21,'fluffy','fluffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(22,'buffy','buffy');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(23,'桂林山水abc高山流水','桂林山水abc高山流水');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(24,'aa abc zzzz','aa abc zzzz');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(25,'我的的的的 abcabcabcabcabcabcabcabcabcabcabcabc','我的的的的 abcabcabcabcabcabcabcabcabcabcabcabc');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(26,'abcbvbnb
|
||||
efgh
|
||||
ijjkkkkkkk','abcbvbnb
|
||||
efgh
|
||||
ijjkkkkkkk123');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(27,'abc efg','hgj khln');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(28,'abc\efg','hgj(khln');
|
||||
insert into t1(f_int1, f_char1, f_varchar2) values(29,'*+?|^${}.','*+?|^${}.');
|
||||
|
||||
|
||||
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'1....60');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'1[0-9]{4}60');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'1[[:digit:]]{4}60');
|
||||
select f_int1,f_varchar1 from t1 where not regexp_like(f_varchar1,'^[[:digit:]]+$');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^[^[:digit:]]+$');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^1[2B]');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'[[:space:]]');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^([a-z]+|[0-9]+)$');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'[[:punct:]]');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^DEF$');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^1[2b]','ic');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'^1[2b]','ci');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'a');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'(1abc)(2abc)(3abc)(4abc)(5abc)(6abc)(7abc)(8abc)(9abc)\9(Aabc)(Babc)');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'(1abc)(2abc)(3abc)(4abc)(5abc)(6abc)(7abc)(8abc)(9abc)(Aabc)\a(Babc)');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'oltp 100');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'oltp100');
|
||||
select f_int1,f_varchar1 from t1 where regexp_like(f_varchar1,'ffy*') order by 1;
|
||||
|
||||
-- clean
|
||||
drop index idx_1;
|
||||
drop table t1;
|
||||
|
||||
drop schema if exists test_regexp cascade;
|
||||
|
||||
Reference in New Issue
Block a user