Merge pull request #2987 from sysown/v2.1.0-2965

Updated libraries 're2' to release '2020-07-06' and 'pcre' to version '8.44'
pull/3009/head
René Cannaò 6 years ago committed by GitHub
commit 2ec09fbb19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

11
deps/Makefile vendored

@ -177,7 +177,8 @@ prometheus-cpp/prometheus-cpp/lib/libprometheus-cpp-core.a:
prometheus-cpp: prometheus-cpp/prometheus-cpp/lib/libprometheus-cpp-core.a
re2/re2/obj/libre2.a:
cd re2 && rm -rf re2-2018-07-01
# cd re2 && rm -rf re2-2018-07-01
cd re2 && rm -rf re2-2020-07-06
# cd re2 && tar -zxf re2-20140304.tgz
cd re2 && tar -zxf re2.tar.gz
# cd re2/re2 && sed -i -e 's/-O3 -g /-O3 -fPIC /' Makefile
@ -188,8 +189,8 @@ re2/re2/obj/libre2.a:
re2: re2/re2/obj/libre2.a
pcre/pcre/.libs/libpcre.a:
cd pcre && rm -rf pcre-8.39
cd pcre && tar -zxf pcre-8.39.tar.gz
cd pcre && rm -rf pcre-8.44
cd pcre && tar -zxf pcre-8.44.tar.gz
cd pcre/pcre && ./configure
cd pcre/pcre && CC=${CC} CXX=${CXX} ${MAKE}
pcre: pcre/pcre/.libs/libpcre.a
@ -212,8 +213,8 @@ cleanall:
cd mariadb-client-library && rm -rf mariadb-connector-c-3.0.2-src
cd mariadb-client-library && rm -rf mariadb-connector-c-3.1.4-src
cd libconfig && rm -rf libconfig-1.4.9
cd re2 && rm -rf re2-2018-07-01
cd pcre && rm -rf pcre-8.39
cd re2 && rm -rf re2-2020-07-06
cd pcre && rm -rf pcre-8.44
cd sqlite3/sqlite3 && rm -rf * || true
cd clickhouse-cpp/clickhouse-cpp && rm -rf * || true
cd lz4 && rm -rf lz4-1.7.5 || true

2
deps/pcre/pcre vendored

@ -1 +1 @@
pcre-8.39
pcre-8.44

Binary file not shown.

Binary file not shown.

2
deps/re2/re2 vendored

@ -1 +1 @@
re2-2018-07-01
re2-2020-07-06

@ -1 +1 @@
2018-07-01.tar.gz
2020-07-06.tar.gz

@ -12,7 +12,7 @@ SetParser::SetParser(std::string nq) {
memcpy(query_no_space,nq.c_str(),query_no_space_length);
query_no_space[query_no_space_length]='\0';
query_no_space_length=remove_spaces(query_no_space);
query = string(query_no_space);
query = std::string(query_no_space);
free(query_no_space);
}
@ -21,7 +21,7 @@ SetParser::SetParser(std::string nq) {
#define NAMES "(NAMES)"
#define NAME_VALUE "((?:\\w|\\d)+)"
std::map<std::string,std::vector<string>> SetParser::parse1() {
std::map<std::string,std::vector<std::string>> SetParser::parse1() {
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 4, "Parsing query %s\n", query.c_str());
re2::RE2::Options *opt2=new re2::RE2::Options(RE2::Quiet);
@ -31,7 +31,7 @@ std::map<std::string,std::vector<string>> SetParser::parse1() {
re2::RE2 re0("^\\s*SET\\s+", *opt2);
re2::RE2::Replace(&query, re0, "");
std::map<std::string,std::vector<string>> result;
std::map<std::string,std::vector<std::string>> result;
#define SESSION_P1 "(?:|SESSION +|@@|@@session.)"
#define VAR_P1 "(\\w+)"
@ -39,19 +39,19 @@ std::map<std::string,std::vector<string>> SetParser::parse1() {
//#define VAR_VALUE "((?:CONCAT\\((?:(REPLACE|CONCAT)\\()+@@sql_mode,(?:(?:'|\\w|,| |\"|\\))+(?:\\)))|(?:[@\\w/\\d:\\+\\-]|,)+|(?:)))"
#define VAR_VALUE_P1 "(((?:CONCAT\\()*(?:((?: )*REPLACE|IFNULL|CONCAT)\\()+(?: )*(?:NULL|@OLD_SQL_MODE|@@sql_mode),(?:(?:'|\\w|,| |\"|\\))+(?:\\))*)|(?:[@\\w/\\d:\\+\\-]|,)+|(?:)))"
const string pattern="(?:" NAMES SPACES QUOTES NAME_VALUE QUOTES "(?: +COLLATE +" QUOTES NAME_VALUE QUOTES "|)" "|" SESSION_P1 VAR_P1 SPACES "(?:|:)=" SPACES QUOTES VAR_VALUE_P1 QUOTES ") *,? *";
const std::string pattern="(?:" NAMES SPACES QUOTES NAME_VALUE QUOTES "(?: +COLLATE +" QUOTES NAME_VALUE QUOTES "|)" "|" SESSION_P1 VAR_P1 SPACES "(?:|:)=" SPACES QUOTES VAR_VALUE_P1 QUOTES ") *,? *";
VALGRIND_DISABLE_ERROR_REPORTING;
re2::RE2 re(pattern, *opt2);
VALGRIND_ENABLE_ERROR_REPORTING;
string var;
string value1, value2, value3, value4, value5;
std::string var;
std::string value1, value2, value3, value4, value5;
re2::StringPiece input(query);
while (re2::RE2::Consume(&input, re, &value1, &value2, &value3, &value4, &value5)) {
std::vector<std::string> op;
#ifdef DEBUG
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 4, "SET parsing: v1='%s' , v2='%s' , v3='%s' , v4='%s' , v5='%s'\n", value1.c_str(), value2.c_str(), value3.c_str(), value4.c_str(), value5.c_str());
#endif // DEBUG
string key;
std::string key;
if (value1 != "") {
// NAMES
key = value1;
@ -74,7 +74,7 @@ VALGRIND_ENABLE_ERROR_REPORTING;
}
std::map<std::string,std::vector<string>> SetParser::parse2() {
std::map<std::string,std::vector<std::string>> SetParser::parse2() {
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 4, "Parsing query %s\n", query.c_str());
re2::RE2::Options *opt2=new re2::RE2::Options(RE2::Quiet);
@ -84,7 +84,7 @@ std::map<std::string,std::vector<string>> SetParser::parse2() {
re2::RE2 re0("^\\s*SET\\s+", *opt2);
re2::RE2::Replace(&query, re0, "");
std::map<std::string,std::vector<string>> result;
std::map<std::string,std::vector<std::string>> result;
// regex used:
// SET(?: +)(|SESSION +)TRANSACTION(?: +)(?:(?:(ISOLATION(?: +)LEVEL)(?: +)(REPEATABLE(?: +)READ|READ(?: +)COMMITTED|READ(?: +)UNCOMMITTED|SERIALIZABLE))|(?:(READ)(?: +)(WRITE|ONLY)))
@ -95,18 +95,18 @@ std::map<std::string,std::vector<string>> SetParser::parse2() {
//#define VAR_VALUE "((?:CONCAT\\((?:(REPLACE|CONCAT)\\()+@@sql_mode,(?:(?:'|\\w|,| |\"|\\))+(?:\\)))|(?:[@\\w/\\d:\\+\\-]|,)+|(?:)))"
#define VAR_VALUE_P2 "(((?:CONCAT\\()*(?:((?: )*REPLACE|IFNULL|CONCAT)\\()+(?: )*(?:NULL|@OLD_SQL_MODE|@@sql_mode),(?:(?:'|\\w|,| |\"|\\))+(?:\\))*)|(?:[@\\w/\\d:\\+\\-]|,)+|(?:)))"
*/
//const string pattern="(?:" NAMES SPACES QUOTES NAME_VALUE QUOTES "(?: +COLLATE +" QUOTES NAME_VALUE QUOTES "|)" "|" SESSION_P1 VAR_P1 SPACES "(?:|:)=" SPACES QUOTES VAR_VALUE_P1 QUOTES ") *,? *";
const string pattern="(|SESSION) *TRANSACTION(?: +)(?:(?:(ISOLATION(?: +)LEVEL)(?: +)(REPEATABLE(?: +)READ|READ(?: +)COMMITTED|READ(?: +)UNCOMMITTED|SERIALIZABLE))|(?:(READ)(?: +)(WRITE|ONLY)))";
//const std::string pattern="(?:" NAMES SPACES QUOTES NAME_VALUE QUOTES "(?: +COLLATE +" QUOTES NAME_VALUE QUOTES "|)" "|" SESSION_P1 VAR_P1 SPACES "(?:|:)=" SPACES QUOTES VAR_VALUE_P1 QUOTES ") *,? *";
const std::string pattern="(|SESSION) *TRANSACTION(?: +)(?:(?:(ISOLATION(?: +)LEVEL)(?: +)(REPEATABLE(?: +)READ|READ(?: +)COMMITTED|READ(?: +)UNCOMMITTED|SERIALIZABLE))|(?:(READ)(?: +)(WRITE|ONLY)))";
re2::RE2 re(pattern, *opt2);
string var;
string value1, value2, value3, value4, value5;
std::string var;
std::string value1, value2, value3, value4, value5;
re2::StringPiece input(query);
while (re2::RE2::Consume(&input, re, &value1, &value2, &value3, &value4, &value5)) {
std::vector<std::string> op;
#ifdef DEBUG
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR, 4, "SET parsing: v1='%s' , v2='%s' , v3='%s' , v4='%s' , v5='%s'\n", value1.c_str(), value2.c_str(), value3.c_str(), value4.c_str(), value5.c_str());
#endif // DEBUG
string key;
std::string key;
if (value1 != "") { // session is specified
if (value2 != "") { // isolation level
key = value2;
@ -135,12 +135,12 @@ std::string SetParser::parse_character_set() {
re2::RE2 re0("^\\s*SET\\s+", *opt2);
re2::RE2::Replace(&query, re0, "");
std::map<std::string,std::vector<string>> result;
std::map<std::string,std::vector<std::string>> result;
const string pattern="((charset)|(character +set))(?: )(?:'?)([^'|\\s]*)(?:'?)";
const std::string pattern="((charset)|(character +set))(?: )(?:'?)([^'|\\s]*)(?:'?)";
re2::RE2 re(pattern, *opt2);
string var;
string value1, value2, value3, value4;
std::string var;
std::string value1, value2, value3, value4;
re2::StringPiece input(query);
re2::RE2::Consume(&input, re, &value1, &value2, &value3, &value4);

Loading…
Cancel
Save