Skip to content

docs+oracle: SQL/MM type honesty packet + SQLMM_WKT - #660

Open
grootstebozewolf wants to merge 5 commits into
mainfrom
cursor/sqlmm-type-honesty-ccfa
Open

docs+oracle: SQL/MM type honesty packet + SQLMM_WKT#660
grootstebozewolf wants to merge 5 commits into
mainfrom
cursor/sqlmm-type-honesty-ccfa

Conversation

@grootstebozewolf

@grootstebozewolf grootstebozewolf commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Wayfinder packet plus the GEOS implement letter for the four SQL/MM type-honesty leftovers (ISO/IEC 13249-3), the structural SQLMM_WKT oracle, and the NTS named refuse. One Proofs PR so TRIAGE, the prose gate, and the ticket index do not collide.

Merge comment (one sentence). COMPOUNDCURVE, CURVEPOLYGON, MULTICURVE, and MULTISURFACE stay first-class SQL/MM types; GEOS now names the leftover (hull refuse + getLinearized, OverlayNG type identity, restrictToSurfaces via hasCurvedTypes) and named linear fallback stays named. ST_Clothoid, ST_Circle, ST_GeodesicString, ST_NURBSCurve, and ST_SpiralCurve are instantiable in §4.2.1 — not optional extras — oracle SQLMM_WKT parses their type identity, and NTS WKT names them and refuses (matching GEOS).

Destination

Name the four leftovers so a later session cannot steal a closed letter, steal tracker 509, or treat WKT/WKB round-trip as overlay honesty. /implement 660 on GEOS pointed at one named site per leftover.

Living files:

  • docs/scout/map-compoundcurve.md (WKB 9)
  • docs/scout/map-curvepolygon.md (WKB 10)
  • docs/scout/map-multicurve.md (WKB 11)
  • docs/scout/map-multisurface.md (WKB 12)

Tickets

  • 29 / 31 / 33 / 35 closed as the four charts.
  • Ticket 30 closed on GEOS: ensureNoCurvedComponents refuses and names getLinearized.
  • Ticket 32 closed on GEOS: OverlayNG + createSurface keep CURVEPOLYGON.
  • Ticket 34 closed on GEOS: OverlayNG keeps MULTICURVE. Coq still has no MultiCurve carrier.
  • Ticket 36 closed on GEOS: CascadedPolygonUnion::restrictToSurfaces checks hasCurvedTypes.
  • Ticket 37 closed on Proofs: oracle mode SQLMM_WKT (oracle/sqlmm_wkt.ml) parses CLOTHOID, CIRCLE, GEODESICSTRING, NURBSCURVE, SPIRALCURVE (and instantiable ELLIPTICALCURVE). Red tests in oracle/red_sqlmm_wkt_tests.py.
  • Ticket 38 closed on NTS: WKTReader names those types and refuses. Genuine unknown tokens still say Unknown type. CIRCLE does not steal CIRCULARSTRING.

Engine letters: grootstebozewolf/geos PR 9; grootstebozewolf/NetTopologySuite PR 21.

§4.2.1 + SQLMM_WKT + NTS refuse

ST_Clothoid, ST_Circle, ST_GeodesicString, ST_NURBSCurve, and ST_SpiralCurve are instantiable ST_Curve subtypes in ISO/IEC 13249-3 §4.2.1. They are not optional extras. GEOS and NTS WKT name them and refuse. The Proofs oracle parses type identity; it does not grow CurveSegment and does not remint 508.

SPIRALTYPE deviation. The standard writes <spiraltype text> as free-form <letters>, and §5.1.68 length-prefixes the value in WKB, so the value set is open — §4.2.12 lists clothoid, bloss, biquadratic, sine and cosine only as the initial set. Text has no length prefix, so the lexer reads up to the comma or parenthesis that terminates the value. Interior spaces are preserved (SPIRALTYPE Wiener Bogen parses as an open-set extension). A name containing a comma or a parenthesis is the one case this grammar cannot represent.

Other documented deviations pinned by the same mode: keyword case-fold (CASEFOLD) and tagged LINESTRING inside COMPOUNDCURVE (DEVIATION TAGGED_LINESTRING).

Honesty

Four leftovers, four types:

  1. Silent chord Flatten of COMPOUNDCURVE — ticket 30. GEOS refuse + named stamp.
  2. Silent POLYGON / LinearRing emit of CURVEPOLYGON — ticket 32. GEOS OverlayNG keeps the type.
  3. Silent MULTILINESTRING emit of MULTICURVE — ticket 34. GEOS OverlayNG keeps the type. Coq has no MultiCurve carrier.
  4. Silent MULTIPOLYGON emit of MULTISURFACE — ticket 36. GEOS restrictToSurfaces no longer packs all-linear CurvePolygon into MultiPolygon. CurveGeometry.v : valid_curve_geometry is structural F-MS, not overlay honesty.

Named Linearize / toLinear / chord_approx_ring / to_geometry / OverlayNGCurve APPROX + isApproximate() / GEOS getLinearized stays named.

Jordan true-region stays on tracker 509. F-CP / F-MC / F-MS / V-CP TRIAGE rows do not flip. JTS #27 is out. JTS #38 (Option C DCEL) stays off JTS 7. No public noder. No type-9/10/11/12 reader PR. No GEO-TIN 15–17. Cite 13249-3. No DOI. JTS leftover overlay sites stay an engine grill and are not reminted here.

Supersedes the four colliding letters on cursor/compoundcurve-wayfinder-ccfa, cursor/curvepolygon-wayfinder-ccfa, cursor/multicurve-wayfinder-ccfa, and cursor/multisurface-wayfinder-ccfa.

topics: arc, wkt
claimId: none
witness: none

Open in Web Open in Cursor 

Fold the four sibling type-honesty letters into one packet so TRIAGE,
the prose gate, and the ticket index stop colliding. Four leftovers
stay distinct. HOLD implement stays lifted only for ticket 30.

Co-authored-by: jbloemscheer <jbloemscheer@gmail.com>
GEOS named the four leftovers. Ticket 30 refuses via
ensureNoCurvedComponents and stamps via getLinearized. Ticket 36
stamps via restrictToSurfaces hasCurvedTypes. Tickets 32/34 pin
OverlayNG type identity. No new Coq lemma. F-CP / F-MC / F-MS / V-CP
do not flip.

Co-authored-by: jbloemscheer <jbloemscheer@gmail.com>
@cursor cursor Bot changed the title docs: wayfinder packet for SQL/MM type honesty (CC / CP / MC / MS) docs: SQL/MM type honesty packet + GEOS leftover letter Sep 1, 2026
cursoragent and others added 2 commits September 1, 2026 19:06
ST_Clothoid, ST_Circle, ST_GeodesicString, ST_NURBSCurve, and
ST_SpiralCurve sit in the ISO/IEC 13249-3 hierarchy. GEOS WKT
refuses them as SQL/MM types. Do not remint 508. Not leftover XI.

Co-authored-by: jbloemscheer <jbloemscheer@gmail.com>
Structural I/O identity for CLOTHOID, CIRCLE, GEODESICSTRING,
NURBSCURVE, and SPIRALCURVE (plus instantiable ELLIPTICALCURVE).
SPIRALTYPE is an open set: the text lexer reads up to comma or
parenthesis and keeps interior spaces, so Wiener Bogen parses.
No length mint, no CurveSegment growth, no 508 remint.

Co-authored-by: jbloemscheer <jbloemscheer@gmail.com>
@cursor cursor Bot changed the title docs: SQL/MM type honesty packet + GEOS leftover letter docs+oracle: SQL/MM type honesty packet + SQLMM_WKT Sep 1, 2026
NTS WKTReader now matches GEOS: CLOTHOID / CIRCLE / GEODESICSTRING /
NURBSCURVE / SPIRALCURVE are instantiable, not Unknown type.

Co-authored-by: jbloemscheer <jbloemscheer@gmail.com>
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.

2 participants