diff --git a/base/common/StringRef.h b/base/common/StringRef.h index 961aab5898037018175014c9dcde5cb7e82666b9..076b8982b1dbf675b006b331aab2d1685f80c58b 100644 --- a/base/common/StringRef.h +++ b/base/common/StringRef.h @@ -27,17 +27,17 @@ struct StringRef size_t size = 0; template > - StringRef(const CharT * data_, size_t size_) : data(reinterpret_cast(data_)), size(size_) {} + constexpr StringRef(const CharT * data_, size_t size_) : data(reinterpret_cast(data_)), size(size_) {} StringRef(const std::string & s) : data(s.data()), size(s.size()) {} - StringRef(const std::string_view & s) : data(s.data()), size(s.size()) {} - explicit StringRef(const char * data_) : data(data_), size(strlen(data_)) {} - StringRef() = default; + constexpr StringRef(const std::string_view & s) : data(s.data()), size(s.size()) {} + constexpr StringRef(const char * data_) : StringRef(std::string_view{data_}) {} + constexpr StringRef() = default; std::string toString() const { return std::string(data, size); } explicit operator std::string() const { return toString(); } - explicit operator std::string_view() const { return {data, size}; } + constexpr explicit operator std::string_view() const { return {data, size}; } }; using StringRefs = std::vector; diff --git a/dbms/src/IO/WriteHelpers.h b/dbms/src/IO/WriteHelpers.h index 44b0322ee83c9f6a5832b54bab7d16aa922d4c46..10918fb7b61e988d4eaa7831ce19803382ff7a4c 100644 --- a/dbms/src/IO/WriteHelpers.h +++ b/dbms/src/IO/WriteHelpers.h @@ -239,11 +239,6 @@ inline void writeFloatText(T x, WriteBuffer & buf) } -inline void writeString(const String & s, WriteBuffer & buf) -{ - buf.write(s.data(), s.size()); -} - inline void writeString(const char * data, size_t size, WriteBuffer & buf) { buf.write(data, size); diff --git a/dbms/src/Interpreters/Context.cpp b/dbms/src/Interpreters/Context.cpp index ab9b4a2c31b2ac9a9a97998cd0d9e240f22ded11..ef45fd60e81fcc6e086df969f332383061bc383e 100644 --- a/dbms/src/Interpreters/Context.cpp +++ b/dbms/src/Interpreters/Context.cpp @@ -947,7 +947,7 @@ void Context::setSettings(const Settings & settings_) } -void Context::setSetting(const String & name, const String & value) +void Context::setSetting(const StringRef & name, const String & value) { auto lock = getLock(); if (name == "profile") @@ -962,7 +962,7 @@ void Context::setSetting(const String & name, const String & value) } -void Context::setSetting(const String & name, const Field & value) +void Context::setSetting(const StringRef & name, const Field & value) { auto lock = getLock(); if (name == "profile") diff --git a/dbms/src/Interpreters/Context.h b/dbms/src/Interpreters/Context.h index 5d8351ed59832da184d7213dcde26eb5115953f7..2f049d14cd380c2bdd861b3b9dbe988f86be8e26 100644 --- a/dbms/src/Interpreters/Context.h +++ b/dbms/src/Interpreters/Context.h @@ -344,8 +344,8 @@ public: void setSettings(const Settings & settings_); /// Set settings by name. - void setSetting(const String & name, const String & value); - void setSetting(const String & name, const Field & value); + void setSetting(const StringRef & name, const String & value); + void setSetting(const StringRef & name, const Field & value); void applySettingChange(const SettingChange & change); void applySettingsChanges(const SettingsChanges & changes);