MySQL and fractional seconds

Hi,

while debugging TimerExecutionTest and TimerRecalculationTest are flaky · Issue #975 · operaton/operaton · GitHub I was looking into the recommended connection settings and realized that our testcontainers instance is not configured according to recommendations: MySQL Database Configuration | Operaton Documentation

Our documentation recommends to set the JDBC parameter sendFractionalSeconds to false. The link to the MySQL documentation is broken, and while searching for the correct one, I saw that some aspects in MySQLs handling of fractional seconds changed:

  1. It is in fact possible to configure fractional settings support for DATETIME columns, which operaton uses: https://dev.mysql.com/doc/refman/8.4/en/fractional-seconds.html DATETIME is created without fractional settings in our liquibase config
  2. The recommended parameter is now called sendFractionalSecondsForTime, the documentation states " Also, the connection property sendFractionalSeconds has become a global control for the sending of fractional seconds for ALL date-time types since release 8.0.23. As a result, if sendFractionalSeconds=false, fractional seconds are not sent irrespective of the value of sendFractionalSecondsForTime." which is a footgun that might be considered in the documentation. I will create a separate issue for this.

My train of thought is not ready enough to create an issue for fixing the fractional settings. If we decide to move on this topic, we might add a new changeset retroactively changing created columns, which could be a) expensive, b) breaking and c) unnecessary, if clients using MySQL already used the correct connection parameters.

What are your thoughts on this?

I would be careful on this and would wait for the actual need from users demanding this precision on MySQL. This would need a schema change, which at least is out of scope for 1.0. But also looking further, I don’t know a) how many Operaton users are using MySQL b) would benefit from a change.
Great that you came over this, and maybe some user will pick this thread up later. Until then, we just should make this clear in the documentation.