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

Reply via email to