cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nikita Timofeev (Jira)" <>
Subject [jira] [Updated] (CAY-2694) Precision issues with reverse / forward engineering of time types on MySQL
Date Tue, 22 Dec 2020 14:37:00 GMT


Nikita Timofeev updated CAY-2694:
    Fix Version/s: 4.2.M3

> Precision issues with reverse / forward engineering of time types on MySQL
> --------------------------------------------------------------------------
>                 Key: CAY-2694
>                 URL:
>             Project: Cayenne
>          Issue Type: Bug
>         Environment: MySQL 5.7.24, Java 1.8, Cayenne 4.1
>            Reporter: Andrus Adamchik
>            Priority: Major
>             Fix For: 4.2.M3
> There is a number of issues with reverse and forward engineering of time-related types
on MySQL. Not sure if this affects other databases.
> h2. Background
DATETIME natibe types can be specified either without a numeric parameter (indicating truncation
to whole seconds) or with a single numeric parameter (indicating the number of fractional
digits). So "TIME" means whole seconds precision, "TIME(3)" means millisecond precision, "TIME(6)"
- microsecond precision.
> h2. Reverse Engineering
> Regardless of precision, Cayenne reverse-engineers the above 3 types to DbAttributes
with "maxlength" of "19" and no "scale". Expected - empty "maxlength" and "scale" matching
the precision of the column (e.g. none, 3, 6 for the example above).
> h2. Forward Engineering
> Currently "maxlength" is included in the generated SQL (e.g. "TIME(19)"), causing DB
errors. But even if there were no errors (if it was in the acceptable range), that would still
generate invalid column definitions. Expected - "maxlength" must be ignored, and "scale" used
if present (e.g. "TIME", "TIME(3)", etc.) 

This message was sent by Atlassian Jira

View raw message