There are a couple other open pull requests that should probably be
merged for the next reelase, and I suspect there might be at least one
or two other bugs that that might also want to be fixed. So I'd guess
it's going to take longer than 2 weeks. That's sort of a minimum for a
release.

But, I'll start a discuss thread on the dev list and see what the rest
of the dev community thinks about for a new release and see what else
might be needed before a release, to at least get the ball rolling.

- Steve

On 6/19/20 8:55 AM, Claude Mamo wrote:
> We can wait 2 weeks to release Smooks 2. Alternatively, we can implement some 
> hack to circumvent the problem and release now. As far as I can tell, the 
> EDIFACT dictionaries from which the DFDL schemas are generated don't specify 
> the numeric type. In theory, though it might not make sense, any numeric 
> field may have a decimal sign and a negative sign.
> 
> Claude
> 
> The fields may have decimal points
> 
> On 2020/06/18 13:31:26, "Beckerle, Mike" <mbecke...@tresys.com> wrote: 
>> I don't think maxLength is usable on anything but string and hexBinary.
>>
>> For integers you can use maxInclusive or maxExclusive.
>> ________________________________
>> From: Steve Lawrence <slawre...@apache.org>
>> Sent: Thursday, June 18, 2020 9:10 AM
>> To: users@daffodil.apache.org <users@daffodil.apache.org>
>> Subject: Re: java.lang.ArithmeticException: Overflow
>>
>> Thanks for the contribution! I've taken a look and made a few comments
>> in the PR. I think the totalDigits logic is actually much more
>> complicated than I originally thought it would be.
>>
>> Regarding the release, I'm not personally against a patch release, but
>> keep in mind that the Daffodil release process is fairly slow. We need
>> to start a DISCUSS thread on the dev mailing list which must remain open
>> for at least 72 hours and until discussions die down. We then must
>> create the release and start a VOTE thread on the dev list. The VOTE
>> takes a minimum of 72 hours. If that passes, we must then start a VOTE
>> on the incubator mailing list, which also takes a minimum of 72 hours,
>> but in my experience takes more like a week. And then the jars take
>> about a day or so to sync to maven repositories. So the whole process
>> generally takes about 2 weeks.
>>
>> Depending on how soon you're trying to get a release out, it might make
>> sense to see if we can come up with an alternative to totalDigits.
>>
>> Looking at the schema, to me it looks like the numeric1-10 and
>> numeric1-18 simple types that have this totalDigits issue are used for
>> fields that imply they are unsigned integer types rather than decimal
>> (e.g. NumberOfSegmentsInAMessage, NumberOfSecuritySegments,
>> LengthOfDataInOctetsOfBits). Is that the case? Are these fields allowed
>> to have decimal points? If not, rather than using an xs:decimal base you
>> could use an xs:unsignedInteger base and then use the maxLength
>> restriction rather than totalDigits. As far as I'm aware maxLength
>> doesn't have the same issue as totalDigits.
>>
>> On 6/17/20 4:01 PM, Claude Mamo wrote:
>>> I gave it a go Steve and opened a PR: 
>>> https://github.com/apache/incubator-daffodil/pull/387. Assuming it's 
>>> merged, can we have patch release for this? We are preparing to release the 
>>> EDI cartridge for Smooks 2 (https://github.com/smooks/smooks-edi-cartridge) 
>>> but there are many places in our generated EDIFACT schemas with totalDigits 
>>> > 9.
>>>
>>> Claude
>>>
>>> On 2020/06/09 11:41:20, Steve Lawrence <slawre...@apache.org> wrote:
>>>> Looks like total digits is just plain broken for anything greater than
>>>> or equal to 10, which is pretty bad. Looking at the code I *think* the
>>>> totalDigits check will always succeed if the value being validated is
>>>> negative, regardless of the number of digits.
>>>>
>>>> I've created DAFFODIL-2349 [1] to track this issue.
>>>>
>>>> If you (or anyone else) is interested in getting involved in Daffodil
>>>> development, this would be a good one to get your feet wet. The fix
>>>> should be pretty self-contained to one file/function.
>>>>
>>>> Unfortunately, I'm not sure if there's a good workaround using just
>>>> restrictions.
>>>>
>>>> Best I can come up with is have an inputValueCalc that strips out a
>>>> negative sign and decimal place, and then restrict that to a length of
>>>> 10, e.g.
>>>>
>>>>   <xs:element name="unscaled" dfdl:inputValueCalc="{
>>>>     fn:concat(
>>>>       fn:substring-before(xs:string(fn:abs(../value)), '.'),
>>>>       fn:substring-after(xs:string(../value), '.')
>>>>     )
>>>>   }">
>>>>   <xs:simpleType>
>>>>     <xs:restriction base="xs:string">
>>>>       <x:length value="10"/>
>>>>     </xs:restriction>
>>>>   </xs:simpleType>
>>>> </xs:element>
>>>>
>>>> That's pretty terrible though. Maybe someone else can come up with a
>>>> better workaround?
>>>>
>>>> [1] https://issues.apache.org/jira/browse/DAFFODIL-2349
>>>>
>>>>
>>>> On 6/9/20 2:29 AM, Claude Mamo wrote:
>>>>> Hello Daffodil team,
>>>>>
>>>>> Not sure if what I'm getting is expected behaviour. I have a facet 
>>>>> defined as follows:
>>>>>
>>>>> ```
>>>>>     <xsd:simpleType dfdl:textNumberPattern="#.#" name="numeric1-10">
>>>>>         <xsd:restriction base="xsd:decimal">
>>>>>             <xsd:totalDigits value="10"/>
>>>>>         </xsd:restriction>
>>>>>     </xsd:simpleType>
>>>>> ```
>>>>>
>>>>> When attempting to parse a file with full validation turned on, Daffodil 
>>>>> 2.6 throws an exception saying:
>>>>>
>>>>> ```
>>>>> org.apache.daffodil.exceptions.Abort:
>>>>> Invariant broken. Exception thrown with mark not returned: 
>>>>> java.lang.ArithmeticException: Overflow
>>>>> StackTrace:
>>>>> java.lang.ArithmeticException: Overflow
>>>>>         at java.math.BigDecimal.intValueExact(BigDecimal.java:3180)
>>>>>         at 
>>>>> org.apache.daffodil.processors.SimpleTypeRuntimeData.checkTotalDigits(RuntimeData.scala:526)
>>>>>         at 
>>>>> org.apache.daffodil.processors.SimpleTypeRuntimeData.$anonfun$executeFacetCheck$8(RuntimeData.scala:431)
>>>>>         at 
>>>>> org.apache.daffodil.processors.SimpleTypeRuntimeData.$anonfun$executeFacetCheck$8$adapted(RuntimeData.scala:427)
>>>>> ```
>>>>>
>>>>> Should I create a bug report? Any suitable alternatives to "totalDigits"?
>>>>>
>>>>> Claude
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>
>>

Reply via email to