E2E1 Keep a broken Date/Time value from overflowing the day count by dominion525 · Pull Request #157 · dominion525/jetdb · GitHub
[go: up one dir, main page]

Skip to content

Keep a broken Date/Time value from overflowing the day count - #157

Merged
dominion525 merged 1 commit into
mainfrom
fix/timestamp-range
Oct 26, 2026
Merged

dominion525 merged 1 commit into
mainfrom
fix/timestamp-range

Conversation

@dominion525
Copy link
Copy Markdown
Owner

Summary

  • A broken 8-byte Date/Time value such as 1e300 or 3e18 overflowed the day count in timestamp.rs: a panic in debug builds and a meaningless date such as -359315625-718635047-2576980370 in release builds. A DateTimeExtended with a day count of 19 digits overflowed the same way.
  • A Date/Time value out of the years 100 to 9999, the dates Access stores, now formats as the epoch 1899-12-30, as a NaN or an infinity already did; the value read stays the raw OLE Date. A DateTimeExtended out of the years 1 to 9999 is read as its bytes, or Null in a calculated column, as one whose seconds are out of range already was.
  • The CSV export of the 2,105 tables of the unencrypted test databases is the same before and after, byte for byte. New tests cover the first and last dates and values out of them, which panicked or failed before.

🤖 Generated with Claude Code

- Give the epoch 1899-12-30 for a Date/Time value out of the years 100 to 9999, as for a NaN or an infinity, comparing it with the range as a double before taking its day as an integer, since the day count of a broken value overflowed
- Read a DateTimeExtended whose day count is out of the years 1 to 9999 as its bytes, or Null in a calculated column, as one whose seconds are out of range, checking its range in one function
- Test the first and last dates and values out of them, which panicked before

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Coverage

For 5fb8c47.

Filename                       Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
jetdb-cli/src/export.rs            113                11    90.27%           6                 0   100.00%          65                 6    90.77%           0                 0         -
jetdb-cli/src/form.rs              239                19    92.05%          24                 5    79.17%         151                 6    96.03%           0                 0         -
jetdb-cli/src/macro_cmd.rs         117                10    91.45%           7                 2    71.43%          62                 4    93.55%           0                 0         -
jetdb-cli/src/main.rs              910                39    95.71%          82                 4    95.12%         578                28    95.16%           0                 0         -
jetdb-cli/src/prop.rs              330                18    94.55%          38                 2    94.74%         192                 7    96.35%           0                 0         -
jetdb-cli/src/query.rs              65                 3    95.38%           5                 0   100.00%          32                 0   100.00%           0                 0         -
jetdb-cli/src/vba.rs                59                 3    94.92%           5                 0   100.00%          28                 0   100.00%           0                 0         -
jetdb-wasm/src/lib.rs             3901                96    97.54%         257                 4    98.44%        2058                22    98.93%           0                 0         -
jetdb/src/catalog.rs               509                14    97.25%          46                 0   100.00%         299                 3    99.00%           0                 0         -
jetdb/src/complex.rs               924                32    96.54%          73                 0   100.00%         605                15    97.52%           0                 0         -
jetdb/src/crypto.rs               2300               112    95.13%         127                10    92.13%        1315                60    95.44%           0                 0         -
jetdb/src/csv.rs                   867                24    97.23%          73                 0   100.00%         492                 6    98.78%           0                 0         -
jetdb/src/data.rs                 4698                91    98.06%         295                 3    98.98%        2663                51    98.08%           0                 0         -
jetdb/src/ddl/access.rs             70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/mod.rs              2771                 8    99.71%         208                 2    99.04%        1501                 6    99.60%           0                 0         -
jetdb/src/ddl/mysql.rs              70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/postgres.rs           71                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/sqlite.rs             69                 0   100.00%           7                 0   100.00%          48                 0   100.00%           0                 0         -
jetdb/src/encoding.rs              284                 0   100.00%          30                 0   100.00%         153                 0   100.00%           0                 0         -
jetdb/src/file.rs                 1915                65    96.61%         117                 0   100.00%         983                18    98.17%           0                 0         -
jetdb/src/form.rs                 3123               128    95.90%         230                10    95.65%        1684                48    97.15%           0                 0         -
jetdb/src/form2000.rs              762                21    97.24%          56                 1    98.21%         402                 4    99.00%           0                 0         -
jetdb/src/format.rs                616                 2    99.68%          45                 0   100.00%         388                 2    99.48%           0                 0         -
jetdb/src/lib.rs                     3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
jetdb/src/macro_action.rs          299                19    93.65%          27                 3    88.89%         165                24    85.45%           0                 0         -
jetdb/src/macro_def.rs            2440                88    96.39%         196                 9    95.41%        1596                36    97.74%           0                 0         -
jetdb/src/macro_text.rs            804                24    97.01%          54                 2    96.30%         451                20    95.57%           0                 0         -
jetdb/src/map.rs                   416                13    96.88%          27                 0   100.00%         221                 5    97.74%           0                 0         -
jetdb/src/money.rs                 281                 0   100.00%          26                 0   100.00%         186                 0   100.00%           0                 0         -
jetdb/src/prop.rs                 1375                18    98.69%          90                 0   100.00%         695                10    98.56%           0                 0         -
jetdb/src/query.rs                2514                62    97.53%         200                 1    99.50%        1550                18    98.84%           0                 0         -
jetdb/src/relationship.rs          249                26    89.56%          22                 0   100.00%         177                10    94.35%           0                 0         -
jetdb/src/save_as_text.rs          574                27    95.30%          52                 3    94.23%         341                27    92.08%           0                 0         -
jetdb/src/storage.rs               764                32    95.81%          57                 0   100.00%         434                 6    98.62%           0                 0         -
jetdb/src/table.rs                1679                67    96.01%         109                 2    98.17%        1017                18    98.23%           0                 0         -
jetdb/src/timestamp.rs             491                 0   100.00%          51                 0   100.00%         285                 0   100.00%           0                 0         -
jetdb/src/vba.rs                   949                57    93.99%          82                11    86.59%         540                21    96.11%           0                 0         -
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                            37621              1129    97.00%        2746                74    97.31%       21498               481    97.76%           0                 0         -

@dominion525
dominion525 merged commit 0d01e97 into main Oct 26, 2026
11 checks passed
@dominion525
dominion525 deleted the fix/timestamp-range branch October 26, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0