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
[email protected]
603-290-1711

Reply via email to