Fix a bug
This commit is contained in:
parent
6e5eef9aaf
commit
68cefc76e9
|
@ -208,7 +208,7 @@ class SqlBinder
|
||||||
typename traits = FunctionTraits<CallbackType>>
|
typename traits = FunctionTraits<CallbackType>>
|
||||||
typename std::enable_if<traits::isExceptCallback && traits::isPtr, self>::type &operator>>(CallbackType &&callback)
|
typename std::enable_if<traits::isExceptCallback && traits::isPtr, self>::type &operator>>(CallbackType &&callback)
|
||||||
{
|
{
|
||||||
LOG_DEBUG << "ptr callback";
|
//LOG_DEBUG << "ptr callback";
|
||||||
_isExceptPtr = true;
|
_isExceptPtr = true;
|
||||||
_exceptPtrCallback = std::forward<CallbackType>(callback);
|
_exceptPtrCallback = std::forward<CallbackType>(callback);
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -258,6 +258,7 @@ class SqlBinder
|
||||||
_parameters.push_back((char *)obj.get());
|
_parameters.push_back((char *)obj.get());
|
||||||
_length.push_back(sizeof(T));
|
_length.push_back(sizeof(T));
|
||||||
_format.push_back(1);
|
_format.push_back(1);
|
||||||
|
//LOG_TRACE << "Bind parameter:" << parameter;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
//template <>
|
//template <>
|
||||||
|
|
|
@ -109,7 +109,7 @@ void PgClientImpl::execSql(const DbConnectionPtr &conn,
|
||||||
_loopPtr->queueInLoop([=]() {
|
_loopPtr->queueInLoop([=]() {
|
||||||
std::vector<const char *> paras;
|
std::vector<const char *> paras;
|
||||||
std::vector<int> lens;
|
std::vector<int> lens;
|
||||||
for (auto p : cmd._parameters)
|
for (auto &p : cmd._parameters)
|
||||||
{
|
{
|
||||||
paras.push_back(p.c_str());
|
paras.push_back(p.c_str());
|
||||||
lens.push_back(p.length());
|
lens.push_back(p.length());
|
||||||
|
@ -147,8 +147,6 @@ void PgClientImpl::execSql(const std::string &sql,
|
||||||
{
|
{
|
||||||
if (_busyConnections.size() == 0)
|
if (_busyConnections.size() == 0)
|
||||||
{
|
{
|
||||||
//std::cout<<"no connection"<<std::endl;
|
|
||||||
//FIXME call exception callback
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
throw BrokenConnection("No connection to postgreSQL server");
|
throw BrokenConnection("No connection to postgreSQL server");
|
||||||
|
@ -184,14 +182,23 @@ void PgClientImpl::execSql(const std::string &sql,
|
||||||
}
|
}
|
||||||
if (busy)
|
if (busy)
|
||||||
{
|
{
|
||||||
//FIXME call except callback
|
try
|
||||||
|
{
|
||||||
|
throw Failure("Too many queries in buffer");
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
exceptCb(std::current_exception());
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//LOG_TRACE << "Push query to buffer";
|
||||||
SqlCmd cmd;
|
SqlCmd cmd;
|
||||||
cmd._sql = sql;
|
cmd._sql = sql;
|
||||||
cmd._paraNum = paraNum;
|
cmd._paraNum = paraNum;
|
||||||
for (size_t i = 0; i < parameters.size(); i++)
|
for (size_t i = 0; i < parameters.size(); i++)
|
||||||
{
|
{
|
||||||
|
//LOG_TRACE << "parameters[" << i << "]=" << (size_t)(parameters[i]);
|
||||||
cmd._parameters.push_back(std::string(parameters[i], length[i]));
|
cmd._parameters.push_back(std::string(parameters[i], length[i]));
|
||||||
}
|
}
|
||||||
cmd._format = format;
|
cmd._format = format;
|
||||||
|
|
Loading…
Reference in New Issue