From 01f833569b9d66b7abc1704037354b8e2727e504 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Thu, 3 Oct 2013 14:24:16 +0400 Subject: [PATCH] MDEV-4425 Regexp enhancements Adding more tests for case sensitivity, with various collation and (?i) flags combinations. --- mysql-test/r/func_regexp_pcre.result | 19 +++++++++++++++++++ mysql-test/t/func_regexp_pcre.test | 9 +++++++++ 2 files changed, 28 insertions(+) diff --git a/mysql-test/r/func_regexp_pcre.result b/mysql-test/r/func_regexp_pcre.result index 8a8f893f8f2..e001e52bc55 100644 --- a/mysql-test/r/func_regexp_pcre.result +++ b/mysql-test/r/func_regexp_pcre.result @@ -32,6 +32,25 @@ SELECT 'à' RLIKE '\\x{00C0}' COLLATE utf8_bin; SELECT 'À' RLIKE '\\x{00C0}' COLLATE utf8_bin; 'À' RLIKE '\\x{00C0}' COLLATE utf8_bin 1 +CREATE TABLE t1 (s VARCHAR(10) CHARACTER SET utf8); +INSERT INTO t1 VALUES ('a'),('A'); +CREATE TABLE t2 (p VARCHAR(10) CHARACTER SET utf8); +INSERT INTO t2 VALUES ('a'),('(?i)a'),('(?-i)a'),('A'),('(?i)A'),('(?-i)A'); +SELECT s,p,s RLIKE p, s COLLATE utf8_bin RLIKE p FROM t1,t2 ORDER BY BINARY s, BINARY p; +s p s RLIKE p s COLLATE utf8_bin RLIKE p +A (?-i)A 1 1 +A (?-i)a 0 0 +A (?i)A 1 1 +A (?i)a 1 1 +A A 1 1 +A a 1 0 +a (?-i)A 0 0 +a (?-i)a 1 1 +a (?i)A 1 1 +a (?i)a 1 1 +a A 1 0 +a a 1 1 +DROP TABLE t1,t2; CREATE TABLE t1 (ch VARCHAR(22)) CHARACTER SET utf8; CREATE TABLE t2 (class VARCHAR(32)) CHARACTER SET utf8; INSERT INTO t1 VALUES ('Я'),('Σ'),('A'),('À'); diff --git a/mysql-test/t/func_regexp_pcre.test b/mysql-test/t/func_regexp_pcre.test index 6da050e1824..ff0ee569b1a 100644 --- a/mysql-test/t/func_regexp_pcre.test +++ b/mysql-test/t/func_regexp_pcre.test @@ -22,6 +22,15 @@ SELECT 'À' RLIKE '\\x{00E0}' COLLATE utf8_bin; SELECT 'à' RLIKE '\\x{00C0}' COLLATE utf8_bin; SELECT 'À' RLIKE '\\x{00C0}' COLLATE utf8_bin; +# Checking how (?i) and (?-i) affect case sensitivity +CREATE TABLE t1 (s VARCHAR(10) CHARACTER SET utf8); +INSERT INTO t1 VALUES ('a'),('A'); +CREATE TABLE t2 (p VARCHAR(10) CHARACTER SET utf8); +INSERT INTO t2 VALUES ('a'),('(?i)a'),('(?-i)a'),('A'),('(?i)A'),('(?-i)A'); +SELECT s,p,s RLIKE p, s COLLATE utf8_bin RLIKE p FROM t1,t2 ORDER BY BINARY s, BINARY p; +DROP TABLE t1,t2; + + # Checking Unicode character classes CREATE TABLE t1 (ch VARCHAR(22)) CHARACTER SET utf8; CREATE TABLE t2 (class VARCHAR(32)) CHARACTER SET utf8;