merged to master. Thanks for the report Jennifer and the super fast PR Koji.
On Tue, Jan 2, 2018 at 7:23 PM, Koji Kawamura <ijokaruma...@gmail.com> wrote: > Submitted a PR to fix the issue. > https://issues.apache.org/jira/browse/NIFI-4729 > https://github.com/apache/nifi/pull/2366 > > I confirmed that JSON Boolean values can be converted > (ConvertJSONToSQL, true -> 1, false -> 0), inserted (PutSQL) then > retrieved back into JSON object correctly (ExecuteSQL and > ConvertRecord 1 -> true, 0 -> false) using following NiFi flow. > https://gist.github.com/ijokarumawak/5b8d7dd5d799764dfd13dc6195025785 > > I hope this to get merged soon and available in the next release. > > Thanks, > Koji > > On Wed, Jan 3, 2018 at 8:13 AM, Koji Kawamura <ijokaruma...@gmail.com> wrote: >> Hi Jennifer, >> >> Thank you very much for reporting this. It seems the line converts a >> Boolean to "0" or "1" at ConvertJSONToSQL is implemented wrongly. >> Looks like a careless mistake. Sorry for the inconvenience. >> https://github.com/apache/nifi/commit/8acee02393f9557b9679038b933ba49705984cf8#diff-d99a1a0b78bf07b01f45c26059fc0d67R533 >> >> I will submit a JIRA and a PR to fix this. >> >> Thanks, >> Koji >> >> On Wed, Jan 3, 2018 at 6:31 AM, Jennifer Kissinger >> <jennifer.kissin...@semanticbits.com> wrote: >>> Good morning, >>> >>> We've uncovered a bug between 1.3.0 and 1.4.0 in the way ConvertJSONToSQL >>> handles booleans, which is flipping true to false and vice versa in our >>> data. >>> >>> Our input to ConvertJSONToSQL is a JSON array that contains true/false >>> values, like this: >>> >>> [ >>> { >>> "foo": true >>> }, >>> { >>> "foo": false >>> } >>> ... >>> ] >>> >>> After splitting the array and converting to sql, the output of >>> ConvertJSONToSQL feeds into PutSQL, which saves the data to a Postgres RDS >>> database. >>> >>> In 1.3.0, the processor outputs attributes from booleans like this: >>> ``` >>> sql.args.N.type >>> -7 >>> sql.args.N.value >>> t >>> ``` >>> >>> But in 1.4.0, the boolean attributes become: >>> >>> ``` >>> sql.args.N.type >>> -7 >>> sql.args.N.value >>> 0 >>> ``` >>> >>> In both cases, the value above was converted from 'true'. When PutSQL >>> executes the sql command, it interprets '0' as false--effectively flipping >>> our boolean values when saved to the database. >>> >>> It looks like this is a collision between >>> https://issues.apache.org/jira/browse/NIFI-1613 and >>> https://issues.apache.org/jira/browse/NIFI-3372--the latter associates "1" >>> and "t" with true in the PutSQL processor, while the former associates "0" >>> with true in the ConvertJSON processor (see PR: >>> https://github.com/apache/nifi/commit/8acee02393f9557b9679038b933ba49705984cf8#diff-d99a1a0b78bf07b01f45c26059fc0d67R533). >>> Personally I would think "1" would be true and "0" would be false, but it >>> doesn't matter, as long as it's consistent. >>> >>> We're rolling back to 1.3.0, but there is functionality in 1.4.0 I would >>> love to have--any chance of a patch? >>> >>> Thanks, >>> >>> ~Jenni >>> >>> -- >>> Jennifer Kissinger >>> Senior Data Engineer >>> SemanticBits, LLC >>> jennifer.kissin...@semanticbits.com >>> 603-290-1711