mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 01:25:21 +00:00
Don't log to stderr within RE2 library [#CLICKHOUSE-2]
This commit is contained in:
parent
cee0d48ce6
commit
ca1d38914a
@ -401,6 +401,7 @@ namespace ErrorCodes
|
||||
extern const int CANNOT_LINK = 424;
|
||||
extern const int SYSTEM_ERROR = 425;
|
||||
extern const int NULL_POINTER_DEREFERENCE = 426;
|
||||
extern const int CANNOT_COMPILE_REGEXP = 427;
|
||||
|
||||
extern const int KEEPER_EXCEPTION = 999;
|
||||
extern const int POCO_EXCEPTION = 1000;
|
||||
|
@ -1,7 +1,4 @@
|
||||
#include <iostream>
|
||||
|
||||
#include <Poco/Exception.h>
|
||||
|
||||
#include <Common/Exception.h>
|
||||
#include <Common/OptimizedRegularExpression.h>
|
||||
|
||||
|
||||
@ -9,6 +6,15 @@
|
||||
#define MAX_SUBPATTERNS 5
|
||||
|
||||
|
||||
namespace DB
|
||||
{
|
||||
namespace ErrorCodes
|
||||
{
|
||||
extern const int CANNOT_COMPILE_REGEXP;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <bool thread_safe>
|
||||
void OptimizedRegularExpressionImpl<thread_safe>::analyze(
|
||||
const std::string & regexp,
|
||||
@ -254,11 +260,11 @@ OptimizedRegularExpressionImpl<thread_safe>::OptimizedRegularExpressionImpl(cons
|
||||
|
||||
/// Just three following options are supported
|
||||
if (options & (~(RE_CASELESS | RE_NO_CAPTURE | RE_DOT_NL)))
|
||||
throw Poco::Exception("OptimizedRegularExpression: Unsupported option.");
|
||||
throw DB::Exception("OptimizedRegularExpression: Unsupported option.", DB::ErrorCodes::CANNOT_COMPILE_REGEXP);
|
||||
|
||||
is_case_insensitive = options & RE_CASELESS;
|
||||
bool is_no_capture = options & RE_NO_CAPTURE;
|
||||
bool is_dot_nl = options & RE_DOT_NL;
|
||||
is_case_insensitive = options & RE_CASELESS;
|
||||
bool is_no_capture = options & RE_NO_CAPTURE;
|
||||
bool is_dot_nl = options & RE_DOT_NL;
|
||||
|
||||
number_of_subpatterns = 0;
|
||||
if (!is_trivial)
|
||||
@ -266,6 +272,9 @@ OptimizedRegularExpressionImpl<thread_safe>::OptimizedRegularExpressionImpl(cons
|
||||
/// Compile the re2 regular expression.
|
||||
typename RegexType::Options regexp_options;
|
||||
|
||||
/// Never write error messages to stderr. It's ignorant to do it from library code.
|
||||
regexp_options.set_log_errors(false);
|
||||
|
||||
if (is_case_insensitive)
|
||||
regexp_options.set_case_sensitive(false);
|
||||
|
||||
@ -274,13 +283,13 @@ OptimizedRegularExpressionImpl<thread_safe>::OptimizedRegularExpressionImpl(cons
|
||||
|
||||
re2 = std::make_unique<RegexType>(regexp_, regexp_options);
|
||||
if (!re2->ok())
|
||||
throw Poco::Exception("OptimizedRegularExpression: cannot compile re2: " + regexp_ + ", error: " + re2->error());
|
||||
throw DB::Exception("OptimizedRegularExpression: cannot compile re2: " + regexp_ + ", error: " + re2->error() + ". Look at https://github.com/google/re2/wiki/Syntax for reference.", DB::ErrorCodes::CANNOT_COMPILE_REGEXP);
|
||||
|
||||
if (!is_no_capture)
|
||||
{
|
||||
number_of_subpatterns = re2->NumberOfCapturingGroups();
|
||||
if (number_of_subpatterns > MAX_SUBPATTERNS)
|
||||
throw Poco::Exception("OptimizedRegularExpression: too many subpatterns in regexp: " + regexp_);
|
||||
throw DB::Exception("OptimizedRegularExpression: too many subpatterns in regexp: " + regexp_, DB::ErrorCodes::CANNOT_COMPILE_REGEXP);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -432,6 +441,5 @@ unsigned OptimizedRegularExpressionImpl<thread_safe>::match(const char * subject
|
||||
}
|
||||
}
|
||||
|
||||
#undef MIN_LENGTH_FOR_STRSTR
|
||||
#undef MAX_SUBPATTERNS
|
||||
|
||||
template class OptimizedRegularExpressionImpl<true>;
|
||||
template class OptimizedRegularExpressionImpl<false>;
|
@ -45,9 +45,9 @@ class OptimizedRegularExpressionImpl
|
||||
public:
|
||||
enum Options
|
||||
{
|
||||
RE_CASELESS = 0x00000001,
|
||||
RE_NO_CAPTURE = 0x00000010,
|
||||
RE_DOT_NL = 0x00000100
|
||||
RE_CASELESS = 0x00000001,
|
||||
RE_NO_CAPTURE = 0x00000010,
|
||||
RE_DOT_NL = 0x00000100
|
||||
};
|
||||
|
||||
using Match = OptimizedRegularExpressionDetails::Match;
|
||||
@ -106,5 +106,3 @@ private:
|
||||
};
|
||||
|
||||
using OptimizedRegularExpression = OptimizedRegularExpressionImpl<true>;
|
||||
|
||||
#include "OptimizedRegularExpression.inl.h"
|
||||
|
Loading…
Reference in New Issue
Block a user