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)

Reply via email to