test(parity): 007_spanset.test — spanset regression mirror#18
Merged
nhungoc1508 merged 1 commit intomainfrom May 4, 2026
Merged
test(parity): 007_spanset.test — spanset regression mirror#18nhungoc1508 merged 1 commit intomainfrom
nhungoc1508 merged 1 commit intomainfrom
Conversation
This was referenced Apr 25, 2026
…ssion
Ports mobilitydb/test/temporal/queries/007_spanset.test.sql to
test/sql/parity/007_spanset.test in DuckDB sqllogic format. Active
queries cover I/O parse errors, asText, ARRAY-of-span constructors
including the must-be-increasing error case, scalar/set/span/spanset
conversions in both directions, accessors (memSize, span, lower /
upper / lowerInc / upperInc, width with and without bounds-only
flag, duration with and without bounds-only, numSpans, startSpan /
endSpan / spanN, spans), date/timestamp accessors on dateset /
tstzspanset (numDates, startDate, endDate, dateN, dates,
numTimestamps, startTimestamp, endTimestamp, timestampN, timestamps),
comparison operators (=, <>, <, <=, >, >=, spanset_cmp), and
transformations (floor, ceil, round, shift, scale, shiftScale).
Skipped sections, each with a technical note:
- spanset('{}'::tstzspan[]) empty-array constructor: same shape as
the set-level empty-array gap; DuckDB rejects PG-array-literal
'{}' at the cast layer, and the DuckDB-native ARRAY[]::TSTZSPAN[]
form returns NULL from the wrapper instead of raising.
- tstzmultirange / range-type casts: not portable to DuckDB.
- splitNspans / splitEachNspans (lowercase): naming divergence —
src/temporal/spanset.cpp registers camelCase splitNSpans /
splitEachNSpans only.
- spanset_hash / spanset_hash_extended: not registered. MEOS
symbols: spanset_hash, spanset_hash_extended.
Full suite passes (762 assertions, 14 test cases).
Member
Author
|
Refreshed against current main. Removed mode skip for spanset_hash/_extended (PR #19 landed). Updated the empty-array test to use DuckDB-native Surfaced two new bugs while running the test suite:
Net change: -2 lines after edits. All 28 query assertions pass locally with TZ=UTC. |
3364075 to
3c4ae17
Compare
estebanzimanyi
added a commit
that referenced
this pull request
Apr 28, 2026
Single-file inventory of MobilityDB's mobilitydb/test/geo/queries/ surface. Rather than one parity file per upstream regression file, this lists what each file covers, what's bound in MobilityDuck today, and what's missing. Bound surface (per direct audit of src/geo/tgeompoint.cpp): - tgeompoint / tgeometry I/O for instant / discrete / continuous / sequence-set - asText / asEWKT / memSize / interp / round / transform - Constructors (TGEOMPOINT, tgeompointInst, tgeompointSeq, tgeompointSeqSet) - Spatial accessors: getX/Y/Z, length, cumulativeLength, speed, direction, azimuth, angularDifference, trajectory - Topological predicates: e/a/t variants of Contains, Disjoint, Dwithin, Intersects, Touches - Set ops: makeSimple, isSimple, stops - Restrictions: atGeometry, atStbox, atValues, atTime and the matching minus* - Modification: appendInstant, appendSequence, insert, update, deleteTime, merge - Comparison: temporal_eq / temporal_ne / etc. - twCentroid, shortestLine, distance_gs, collect_gs Unbound surface (per upstream regression file, with cross-references to the temporal-side parity-batch PRs that cover the same gap): - 051_stbox: stbox tests (whole file currently skipped in test/sql/stbox.test for DuckDB 1.4 signature issues). - 052_tgeo / 052_tpoint: mostly bound — per-type ports would mirror PRs #13 / #17 / #18 patterns. - 053_*_inout: asMFJSON / asWKB / asHexWKB / asGeoJSON — verify which are bound. - 054_*_compops: same parser blocker as PR #24's 030 (?= / #=). - 056_*_spatialfuncs: bulk bound; setSRID-on-temporal and reference-system accessors missing. - 058_*_tile: same gap as PR #23's 025 but for tspatial. - 060_*_topops: same pattern as PR #25's 032_temporal_topops. - 062_*_posops: same pattern as PR #24's 034_temporal_posops plus spatial-direction operators. - 064_*_distance: <-> for tgeo / tpoint; partially bound (shortestLine, distance_gs). - 066_tpoint_similarity: specialisation of PR #23's 038. - 068_*_aggfuncs: same architectural blocker as PR #21 (no AggregateFunction infra). Suite: 747 assertions, 23 test cases.
nhungoc1508
pushed a commit
that referenced
this pull request
May 4, 2026
Single-file inventory of MobilityDB's mobilitydb/test/geo/queries/ surface. Rather than one parity file per upstream regression file, this lists what each file covers, what's bound in MobilityDuck today, and what's missing. Bound surface (per direct audit of src/geo/tgeompoint.cpp): - tgeompoint / tgeometry I/O for instant / discrete / continuous / sequence-set - asText / asEWKT / memSize / interp / round / transform - Constructors (TGEOMPOINT, tgeompointInst, tgeompointSeq, tgeompointSeqSet) - Spatial accessors: getX/Y/Z, length, cumulativeLength, speed, direction, azimuth, angularDifference, trajectory - Topological predicates: e/a/t variants of Contains, Disjoint, Dwithin, Intersects, Touches - Set ops: makeSimple, isSimple, stops - Restrictions: atGeometry, atStbox, atValues, atTime and the matching minus* - Modification: appendInstant, appendSequence, insert, update, deleteTime, merge - Comparison: temporal_eq / temporal_ne / etc. - twCentroid, shortestLine, distance_gs, collect_gs Unbound surface (per upstream regression file, with cross-references to the temporal-side parity-batch PRs that cover the same gap): - 051_stbox: stbox tests (whole file currently skipped in test/sql/stbox.test for DuckDB 1.4 signature issues). - 052_tgeo / 052_tpoint: mostly bound — per-type ports would mirror PRs #13 / #17 / #18 patterns. - 053_*_inout: asMFJSON / asWKB / asHexWKB / asGeoJSON — verify which are bound. - 054_*_compops: same parser blocker as PR #24's 030 (?= / #=). - 056_*_spatialfuncs: bulk bound; setSRID-on-temporal and reference-system accessors missing. - 058_*_tile: same gap as PR #23's 025 but for tspatial. - 060_*_topops: same pattern as PR #25's 032_temporal_topops. - 062_*_posops: same pattern as PR #24's 034_temporal_posops plus spatial-direction operators. - 064_*_distance: <-> for tgeo / tpoint; partially bound (shortestLine, distance_gs). - 066_tpoint_similarity: specialisation of PR #23's 038. - 068_*_aggfuncs: same architectural blocker as PR #21 (no AggregateFunction infra). Suite: 747 assertions, 23 test cases.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ports
mobilitydb/test/temporal/queries/007_spanset.test.sqltotest/sql/parity/007_spanset.testin DuckDB sqllogic format. Same shape as the earlier parity files: active queries reflect MobilityDuck's display format; queries that hit a missing binding, naming divergence, or DuckDB/PG syntax-portability boundary are wrapped inmode skipwith a short technical note.Active coverage:
asText,ARRAY[<span>]constructors including the must-be-increasing error,memSize,span,lower/upper/lowerInc/upperInc,width(with and without bounds-only flag),duration(with and without bounds-only),numSpans,startSpan/endSpan/spanN,spans,numDates,startDate,endDate,dateN,dates,numTimestamps,startTimestamp,endTimestamp,timestampN,timestamps,=,<>,<,<=,>,>=,spanset_cmp),floor,ceil,round,shift,scale,shiftScale.Skipped — each with a one-line technical note:
spanset('{}'::tstzspan[])empty-array'{}'cast; DuckDB-nativeARRAY[]::TSTZSPAN[]reaches MEOS but the spanset constructor wrapper returns NULL. Same shape as set-level empty-array gap.tstzmultirangecastssplitNspans/splitEachNspans(lowercase)src/temporal/spanset.cppregisters camelCasesplitNSpans/splitEachNSpansonlyspanset_hash/spanset_hash_extendedspanset_hash,spanset_hash_extendedTest plan
make releasethenTZ=UTC ./build/release/test/unittest "<proj>/test/*"— full suite passes (762 assertions across 14 test cases).Drafted because three of the four skips can be cleared by trivial follow-ups (lowercase aliases, hash bindings, empty-array fix) that mirror the set-level work in PRs #8 / #10 / #11.