Hello!
If you want to store the value in unix timestamp, you don't need MYSQL_TIME in save_result. You should calculate the value as a unix timestamp in ::check and store that in save_result.
Now you still have timezone conversion in ::update and that can fail.
Everything that can fail should be done in ::check, that's the contract.
Right. I missed the fact that timezone conversion failure may be also crucial. Or perhaps making another structure for storing timestamp with second_part stopped me. I made this change, in the separate commit for convenience, all the freshly rebased work can be found on `bb-10.3-nikita`. I might want to know that I'm going to squash following commits after the review: ee326018 make all conversions in check() to avoid possible errors 0b8b1fff refactor Sys_var_vers_asof 87ebaab5 MDEV-16481: set global system_versioning_asof=sf() crashes in specific case
May be also I reapplied your patches to 10.3 incorrectly when I was
reviewing. Perhaps you could rebase them yourself - to be sure I'm looking at the correct patch?
Yes, the patch looks correct according to what I can see in the PR. Nikita