Ido*Connection#FieldToEscapedString(): support NULL

refs #8727
This commit is contained in:
Alexander A. Klimov 2021-04-20 19:30:59 +02:00
parent 8918b38dea
commit 306a0f476c
2 changed files with 6 additions and 14 deletions

View File

@ -837,7 +837,9 @@ bool IdoMysqlConnection::FieldToEscapedString(const String& key, const Value& va
Value rawvalue = DbValue::ExtractValue(value);
if (rawvalue.IsObjectType<ConfigObject>()) {
if (rawvalue.GetType() == ValueEmpty) {
*result = "NULL";
} else if (rawvalue.IsObjectType<ConfigObject>()) {
DbObject::Ptr dbobjcol = DbObject::GetOrCreateByObject(rawvalue);
if (!dbobjcol) {
@ -950,9 +952,6 @@ bool IdoMysqlConnection::CanExecuteQuery(const DbQuery& query)
for (const Dictionary::Pair& kv : query.Fields) {
Value value;
if (kv.second.IsEmpty() && !kv.second.IsString())
continue;
if (!FieldToEscapedString(kv.first, kv.second, &value))
return false;
}
@ -1129,9 +1128,6 @@ void IdoMysqlConnection::InternalExecuteQuery(const DbQuery& query, int typeOver
for (const Dictionary::Pair& kv : query.Fields) {
Value value;
if (kv.second.IsEmpty() && !kv.second.IsString())
continue;
if (!FieldToEscapedString(kv.first, kv.second, &value)) {
#ifdef I2_DEBUG /* I2_DEBUG */

View File

@ -652,7 +652,9 @@ bool IdoPgsqlConnection::FieldToEscapedString(const String& key, const Value& va
Value rawvalue = DbValue::ExtractValue(value);
if (rawvalue.IsObjectType<ConfigObject>()) {
if (rawvalue.GetType() == ValueEmpty) {
*result = "NULL";
} else if (rawvalue.IsObjectType<ConfigObject>()) {
DbObject::Ptr dbobjcol = DbObject::GetOrCreateByObject(rawvalue);
if (!dbobjcol) {
@ -755,9 +757,6 @@ bool IdoPgsqlConnection::CanExecuteQuery(const DbQuery& query)
for (const Dictionary::Pair& kv : query.Fields) {
Value value;
if (kv.second.IsEmpty() && !kv.second.IsString())
continue;
if (!FieldToEscapedString(kv.first, kv.second, &value))
return false;
}
@ -911,9 +910,6 @@ void IdoPgsqlConnection::InternalExecuteQuery(const DbQuery& query, int typeOver
Value value;
bool first = true;
for (const Dictionary::Pair& kv : query.Fields) {
if (kv.second.IsEmpty() && !kv.second.IsString())
continue;
if (!FieldToEscapedString(kv.first, kv.second, &value)) {
m_QueryQueue.Enqueue([this, query]() { InternalExecuteQuery(query, -1); }, query.Priority);
return;