Skip to content

Commit 67f928d

Browse files
committed
remove pcre, add support for bundled pcre2
1 parent 3b654d5 commit 67f928d

File tree

313 files changed

+46
-202127
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

313 files changed

+46
-202127
lines changed

.gitignore

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,7 @@ mysys/thr_timer
9797
packaging/rpm-oel/mysql.spec
9898
packaging/rpm-uln/mysql.10.0.11.spec
9999
packaging/solaris/postinstall-solaris
100-
pcre/config.h
101-
pcre/pcre.h
102-
pcre/pcre_chartables.c
103-
pcre/pcregrep
104-
pcre/pcretest
105-
pcre/test*grep
100+
extra/pcre2
106101
plugin/auth_pam/auth_pam_tool
107102
plugin/aws_key_management/aws-sdk-cpp
108103
plugin/aws_key_management/aws_sdk_cpp

cmake/pcre.cmake

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,50 @@
11
INCLUDE (CheckCSourceRuns)
2+
INCLUDE (ExternalProject)
23

34
SET(WITH_PCRE "auto" CACHE STRING
45
"Which pcre to use (possible values are 'bundled', 'system', or 'auto')")
56

7+
MACRO(BUNDLE_PCRE2)
8+
SET(dir "${CMAKE_BINARY_DIR}/extra/pcre2")
9+
SET(PCRE_INCLUDES ${dir}/src/pcre2-build ${dir}/src/pcre2/src)
10+
SET(byproducts)
11+
FOREACH(lib pcre2-posix pcre2-8)
12+
ADD_LIBRARY(${lib} STATIC IMPORTED GLOBAL)
13+
ADD_DEPENDENCIES(${lib} pcre2)
14+
IF(WIN32) # same condition as in pcre2 CMakeLists.txt that adds "d"
15+
SET(file ${dir}/src/pcre2-build/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
16+
SET_TARGET_PROPERTIES(${lib} PROPERTIES IMPORTED_LOCATION_DEBUG ${dir}/src/pcre2-build/Debug/${lib}d.lib)
17+
ELSE()
18+
SET(file ${dir}/src/pcre2-build/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
19+
SET(byproducts ${byproducts} BUILD_BYPRODUCTS ${file})
20+
ENDIF()
21+
SET_TARGET_PROPERTIES(${lib} PROPERTIES IMPORTED_LOCATION ${file})
22+
ENDFOREACH()
23+
FOREACH(v "" "_DEBUG" "_RELWITHDEBINFO" "_RELEASE" "_MINZISEREL")
24+
STRING(REPLACE "/WX" "" pcre2_flags${v} "${CMAKE_C_FLAGS${v}}")
25+
ENDFOREACH()
26+
ExternalProject_Add(
27+
pcre2
28+
PREFIX "${dir}"
29+
URL "https://ftp.pcre.org/pub/pcre/pcre2-10.34.zip"
30+
URL_MD5 fdb10dba7f3be43730966bebdd3755ef
31+
INSTALL_COMMAND ""
32+
CMAKE_ARGS
33+
"-DPCRE2_BUILD_TESTS=OFF"
34+
"-DPCRE2_BUILD_PCRE2GREP=OFF"
35+
"-DBUILD_SHARED_LIBS=OFF"
36+
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
37+
"-DCMAKE_C_FLAGS=${pcre2_flags} ${PIC_FLAG}"
38+
"-DCMAKE_C_FLAGS_DEBUG=${pcre2_flags_DEBUG}"
39+
"-DCMAKE_C_FLAGS_RELWITHDEBINFO=${pcre2_flags_RELWITHDEBINFO}"
40+
"-DCMAKE_C_FLAGS_RELEASE=${pcre2_flags_RELEASE}"
41+
"-DCMAKE_C_FLAGS_MINSIZEREL=${pcre2_flags_MINSIZEREL}"
42+
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
43+
${byproducts}
44+
)
45+
SET_TARGET_PROPERTIES(pcre2 PROPERTIES EXCLUDE_FROM_ALL TRUE)
46+
ENDMACRO()
47+
648
MACRO (CHECK_PCRE)
749
IF(WITH_PCRE STREQUAL "system" OR WITH_PCRE STREQUAL "auto")
850
CHECK_LIBRARY_EXISTS(pcre2-8 pcre2_match_8 "" HAVE_PCRE2)
@@ -11,11 +53,7 @@ MACRO (CHECK_PCRE)
1153
IF (WITH_PCRE STREQUAL "system")
1254
MESSAGE(FATAL_ERROR "system pcre2-8 library is not found or unusable")
1355
ENDIF()
14-
SET(PCRE_INCLUDES ${CMAKE_BINARY_DIR}/pcre2 ${CMAKE_SOURCE_DIR}/pcre2
15-
${CMAKE_BINARY_DIR}/pcre2/src ${CMAKE_SOURCE_DIR}/pcre2/src)
16-
SET(PCRE2_BUILD_TESTS OFF CACHE BOOL "Disable tests.")
17-
SET(PCRE2_BUILD_PCRE2GREP OFF CACHE BOOL "Disable pcre2grep")
18-
ADD_SUBDIRECTORY(pcre2)
56+
BUNDLE_PCRE2()
1957
ENDIF()
2058
ENDMACRO()
2159

libmysqld/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ ENDIF()
154154

155155

156156
SET(LIBS
157-
dbug strings mysys mysys_ssl pcre2-8 vio
157+
dbug strings mysys mysys_ssl pcre2-8 vio
158158
${ZLIB_LIBRARY} ${SSL_LIBRARIES}
159159
${LIBWRAP} ${LIBCRYPT} ${LIBDL}
160160
${EMBEDDED_PLUGIN_LIBS}

libmysqld/examples/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ ENDIF(UNIX)
3434

3535
MYSQL_ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.cc
3636
COMPONENT Test)
37-
TARGET_LINK_LIBRARIES(mysqltest_embedded mysqlserver pcre2-8 pcre2-posix)
37+
TARGET_LINK_LIBRARIES(mysqltest_embedded mysqlserver pcre2-posix pcre2-8)
3838

3939
IF(CMAKE_GENERATOR MATCHES "Xcode")
4040
# It does not seem possible to tell Xcode the resulting target might need

mysql-test/main/func_regexp_pcre.result

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -883,27 +883,15 @@ CAST(0xE001 AS BINARY) REGEXP @regCheck
883883
SELECT 1 FROM dual WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral,Golf,Hotel,India,Juliet,Kilo,Lima,Mike,StrataL3,November,Oscar,StrataL2,Sand,P3,P4SwitchTest,Arsys,Poppa,ExtensionMgr,Arp,Quebec,Romeo,StrataApiV2,PtReyes,Sierra,SandAcl,Arrow,Artools,BridgeTest,Tango,SandT,PAlaska,Namespace,Agent,Qos,PatchPanel,ProjectReport,Ark,Gimp,Agent,SliceAgent,Arnet,Bgp,Ale,Tommy,Central,AsicPktTestLib,Hsc,SandL3,Abuild,Pca9555,Standby,ControllerDut,CalSys,SandLib,Sb820,PointV2,BfnLib,Evpn,BfnSdk,Sflow,ManagementActive,AutoTest,GatedTest,Bgp,Sand,xinetd,BfnAgentLib,bf-utils,Hello,BfnState,Eos,Artest,Qos,Scd,ThermoMgr,Uniform,EosUtils,Eb,FanController,Central,BfnL3,BfnL2,tcp_wrappers,Victor,Environment,Route,Failover,Whiskey,Xray,Gimp,BfnFixed,Strata,SoCal,XApi,Msrp,XpProfile,tcpdump,PatchPanel,ArosTest,FhTest,Arbus,XpAcl,MacConc,XpApi,telnet,QosTest,Alpha2,BfnVlan,Stp,VxlanControllerTest,MplsAgent,Bravo2,Lanz,BfnMbb,Intf,XCtrl,Unicast,SandTunnel,L3Unicast,Ipsec,MplsTest,Rsvp,EthIntf,StageMgr,Sol,MplsUtils,Nat,Ira,P4NamespaceDut,Counters,Charlie2,Aqlc,Mlag,Power,OpenFlow,Lag,RestApi,BfdTest,strongs,Sfa,CEosUtils,Adt746,MaintenanceMode,MlagDut,EosImage,IpEth,MultiProtocol,Launcher,Max3179,Snmp,Acl,IpEthTest,PhyEee,bf-syslibs,tacc,XpL2,p4-ar-switch,p4-bf-switch,LdpTest,BfnPhy,Mirroring,Phy6,Ptp' REGEXP '^((?!\b(Strata|StrataApi|StrataApiV2)\b).)*$');
884884
1
885885
1
886-
SELECT CONCAT(REPEAT('100,',60),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$';
887-
CONCAT(REPEAT('100,',60),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'
888-
1
889886
SELECT CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$';
890887
CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'
891888
1
892-
SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$');
893-
REGEXP_INSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')
894-
1
895889
SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$');
896890
REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')
897891
1
898-
SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'));
899-
LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'))
900-
243
901892
SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'));
902893
LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'))
903894
803
904-
SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''));
905-
LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''))
906-
0
907895
SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''));
908896
LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''))
909897
0

mysql-test/main/func_regexp_pcre.test

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -431,26 +431,14 @@ SET @regCheck= '\\xE0\\x01';
431431
SELECT CAST(0xE001 AS BINARY) REGEXP @regCheck;
432432

433433
--echo # MDEV-12420: Testing recursion overflow
434-
--replace_regex /[0-9]+ exceeded/NUM exceeded/
435434
SELECT 1 FROM dual WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral,Golf,Hotel,India,Juliet,Kilo,Lima,Mike,StrataL3,November,Oscar,StrataL2,Sand,P3,P4SwitchTest,Arsys,Poppa,ExtensionMgr,Arp,Quebec,Romeo,StrataApiV2,PtReyes,Sierra,SandAcl,Arrow,Artools,BridgeTest,Tango,SandT,PAlaska,Namespace,Agent,Qos,PatchPanel,ProjectReport,Ark,Gimp,Agent,SliceAgent,Arnet,Bgp,Ale,Tommy,Central,AsicPktTestLib,Hsc,SandL3,Abuild,Pca9555,Standby,ControllerDut,CalSys,SandLib,Sb820,PointV2,BfnLib,Evpn,BfnSdk,Sflow,ManagementActive,AutoTest,GatedTest,Bgp,Sand,xinetd,BfnAgentLib,bf-utils,Hello,BfnState,Eos,Artest,Qos,Scd,ThermoMgr,Uniform,EosUtils,Eb,FanController,Central,BfnL3,BfnL2,tcp_wrappers,Victor,Environment,Route,Failover,Whiskey,Xray,Gimp,BfnFixed,Strata,SoCal,XApi,Msrp,XpProfile,tcpdump,PatchPanel,ArosTest,FhTest,Arbus,XpAcl,MacConc,XpApi,telnet,QosTest,Alpha2,BfnVlan,Stp,VxlanControllerTest,MplsAgent,Bravo2,Lanz,BfnMbb,Intf,XCtrl,Unicast,SandTunnel,L3Unicast,Ipsec,MplsTest,Rsvp,EthIntf,StageMgr,Sol,MplsUtils,Nat,Ira,P4NamespaceDut,Counters,Charlie2,Aqlc,Mlag,Power,OpenFlow,Lag,RestApi,BfdTest,strongs,Sfa,CEosUtils,Adt746,MaintenanceMode,MlagDut,EosImage,IpEth,MultiProtocol,Launcher,Max3179,Snmp,Acl,IpEthTest,PhyEee,bf-syslibs,tacc,XpL2,p4-ar-switch,p4-bf-switch,LdpTest,BfnPhy,Mirroring,Phy6,Ptp' REGEXP '^((?!\b(Strata|StrataApi|StrataApiV2)\b).)*$');
436435

437436
#
438437
# MDEV-13173 An RLIKE that previously worked on 10.0 now returns "Got error 'pcre_exec: recursion limit of 100 exceeded' from regexp"
439438
#
440-
SELECT CONCAT(REPEAT('100,',60),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$';
441-
--replace_regex /[0-9]+ exceeded/NUM exceeded/
442439
SELECT CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$';
443-
444-
SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$');
445-
--replace_regex /[0-9]+ exceeded/NUM exceeded/
446440
SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$');
447-
448-
SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'));
449-
--replace_regex /[0-9]+ exceeded/NUM exceeded/
450441
SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'));
451-
452-
SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''));
453-
--replace_regex /[0-9]+ exceeded/NUM exceeded/
454442
SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', ''));
455443

456444
#

pcre/AUTHORS

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)