mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-28 23:15:52 +00:00
Improve sqlEscape performance.
This commit is contained in:
@@ -165,8 +165,27 @@ inline static std::string sqlEscape(const std::string& strSrc)
|
|||||||
|
|
||||||
inline static std::string sqlEscape(const std::vector<unsigned char>& vecSrc)
|
inline static std::string sqlEscape(const std::vector<unsigned char>& vecSrc)
|
||||||
{
|
{
|
||||||
static boost::format f("X'%s'");
|
size_t size = vecSrc.size();
|
||||||
return str(f % strHex(vecSrc));
|
if (size == 0)
|
||||||
|
return "X''";
|
||||||
|
|
||||||
|
std::string j(size * 2 + 3, 0);
|
||||||
|
|
||||||
|
unsigned char *oPtr = reinterpret_cast<unsigned char *>(&*j.begin());
|
||||||
|
const unsigned char *iPtr = &vecSrc[0];
|
||||||
|
|
||||||
|
*oPtr++ = 'X';
|
||||||
|
*oPtr++ = '\'';
|
||||||
|
|
||||||
|
for (int i = size; i != 0; --i)
|
||||||
|
{
|
||||||
|
unsigned char c = *iPtr++;
|
||||||
|
*oPtr++ = charHex(c >> 4);
|
||||||
|
*oPtr++ = charHex(c & 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
*oPtr++ = '\'';
|
||||||
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Iterator>
|
template<class Iterator>
|
||||||
|
|||||||
Reference in New Issue
Block a user