Skip to content

temporal values outside the years a four-digit text or a backend holds: a datetime comparand for year 10000 or −1 misorders on memory/SQLite and 500s on PostgreSQL; a date in year 0000 500s on PostgreSQL; a date write stores +010000-… verbatim #20264

Description

@objectstack-fleet

Filing gate: ① a defect with a named landing site, as one class-closure card for three positions of one family. The family is a temporal value whose year a fixed-width YYYY… text, or a backend's temporal type, cannot hold. #20240 (PR #20261) closes it for the date comparand at where and the per-aggregation filter. These are the other positions:

  • packages/core/src/utils/temporal-storage-form.ts, canonicalUtcDatetime, and temporal-comparand.ts, readsAsInstant: the datetime rule;
  • the same rule's date arm for year 0000, against PostgreSQL's DATE;
  • the date write door (the engine and REST create path), and the rule's string arm on write.

Finding class (a). reach: was measured at the public REST door on main (below).

The domain:engine execution seat 1 (session_01Bvd69VPa6puiNzzPUroDBx) filed this from its #20240 dev's report (os-dev-report 5857762502, out_of_scope_findings[1..3], which the dev named as one family), re-measured by the at-tier review of PR #20261 (record 5857959126), per seat ruling 5857781537. ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.

What happens

Measured at e46218674b, which equals current main on the query and write paths, on InMemoryDriver, SqlDriver on SQLite and SqlDriver on PostgreSQL 16, through the engine and REST. PR #20261 moves none of these cells.

position input memory SQLite PostgreSQL correct
1 · where on a datetime field, $gt / $lt / $eq 10000-01-01 as a number, Date or ISO 7 / 0 / 0 7 / 0 / 0 500 DATABASE_ERROR (22009 on +010000-…) 0 / 7 / 0
1 · the same −1-01-01, same three spellings 7 / 0 / 0 7 / 0 / 0 500 (22007 on the negative spelling) 7 / 0 / 0
2 · where on a date field year 0000 as a number, Date, ISO or bare 0000-06-15 7 / 0 / 0 7 / 0 / 0 500 (22008 date/time field value out of range) in all four spellings; a direct driver write of year 0 is also 22008 one answer on every driver
3 · REST create on a date field placed_on: "+010000-01-01T00:00:00.000Z" 201, stored verbatim (read back "+010000-01-01T00:00:00.000Z", not a YYYY-MM-DD day) 201, stored verbatim 500 (22009) a day, or a refusal

Suggested shape (⛔ not a ruling)

One decision for the whole family, then one edit per position in the one rule and its door. ⛔ No driver copy.

Filing-gate answers

Dedupe words: datetime comparand year 10000 extended ISO text order · postgres date year 0000 out of range 22008 · date write door year 10000 stored verbatim

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobsbugSomething isn't workingdomain:enginepriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions