diff --git a/lib/db_ido_mysql/idomysqlconnection.cpp b/lib/db_ido_mysql/idomysqlconnection.cpp index 08d427426..ed390a1b7 100644 --- a/lib/db_ido_mysql/idomysqlconnection.cpp +++ b/lib/db_ido_mysql/idomysqlconnection.cpp @@ -837,7 +837,9 @@ bool IdoMysqlConnection::FieldToEscapedString(const String& key, const Value& va Value rawvalue = DbValue::ExtractValue(value); - if (rawvalue.IsObjectType()) { + if (rawvalue.GetType() == ValueEmpty) { + *result = "NULL"; + } else if (rawvalue.IsObjectType()) { 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 */ diff --git a/lib/db_ido_pgsql/idopgsqlconnection.cpp b/lib/db_ido_pgsql/idopgsqlconnection.cpp index 5e8d6900f..47d4eb599 100644 --- a/lib/db_ido_pgsql/idopgsqlconnection.cpp +++ b/lib/db_ido_pgsql/idopgsqlconnection.cpp @@ -652,7 +652,9 @@ bool IdoPgsqlConnection::FieldToEscapedString(const String& key, const Value& va Value rawvalue = DbValue::ExtractValue(value); - if (rawvalue.IsObjectType()) { + if (rawvalue.GetType() == ValueEmpty) { + *result = "NULL"; + } else if (rawvalue.IsObjectType()) { 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;