[ 
https://issues.apache.org/jira/browse/FINERACT-2951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adam Saghy resolved FINERACT-2951.
----------------------------------
      Assignee: Mandib Chaulagain
    Resolution: Fixed

> 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.7.0, 1.14.0, 1.15.0, 1.16.0
>         Environment: develop (d4ef4069547fba99400871877ceefadb62ad585b), 
> PostgreSQL 18.3
>            Reporter: Mandib Chaulagain
>            Assignee: Mandib Chaulagain
>            Priority: Major
>             Fix For: 1.16.0
>
>         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