Mandib Chaulagain created FINERACT-2951:
-------------------------------------------
Summary: Deactivating a charge fails on PostgreSQL with "operator
does not exist: boolean = integer"
Key: FINERACT-2951
URL: https://issues.apache.org/jira/browse/FINERACT-2951
Project: Apache Fineract
Issue Type: Bug
Components: Charges
Affects Versions: 1.15.0
Environment: develop (d4ef4069547fba99400871877ceefadb62ad585b),
PostgreSQL 18.3
Reporter: Mandib Chaulagain
Attachments: image-2026-10-14-19-46-56-148.png
On PostgreSQL, deactivating a charge fails.
Here are the steps to reproduce:
# Create any charge: POST /v1/charges
# Deactivate the charge: PUT /v1/charges/\{id} with this request body:
{code:json}
{
"active": false,
"locale": "en"
}
{code}
And you get this error (reproduced on develop with PostgreSQL 18.3):
!image-2026-10-14-19-46-56-148.png!
Here is the response body in text:
{code:json}
{
"developerMessage": "The request caused a data integrity issue to be fired by
the database.",
"httpStatusCode": "403",
"defaultUserMessage": "ERROR: operator does not exist: boolean = integer\n
Hint: No operator matches the given name and argument types. You might need to
add explicit type casts.\n Position: 96",
"userMessageGlobalisationCode": "error.msg.data.integrity.issue",
"errors": [
{
"developerMessage": "The request caused a data integrity issue to be
fired by the database.",
"defaultUserMessage": "ERROR: operator does not exist: boolean =
integer\n Hint: No operator matches the given name and argument types. You
might need to add explicit type casts.\n Position: 96",
"userMessageGlobalisationCode": "error.msg.data.integrity.issue",
"args": []
}
]
}
{code}
It works on MySQL/MariaDB but doesn't on PostgreSQL. The query in
ChargeWritePlatformServiceJpaRepositoryImpl.isAnySavingsProductsAssociateWithThisCharge
compares exists(...) with 1. The three similar queries in the same class were
fixed in FINERACT-984, but this one still has the "= 1".
It's not working right now because of PostgreSQL's stricter type checks as it
doesn't allow comparison of boolean with integer unlike MySQL/MariaDB.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)