Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions docs/object-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ hierarchies — `Box` (`TBox`, `STBox`, `TPCBox`), `Collection`
tstz/geo/… leaves) and `Value` — and `objectModel.algebra` records which
companion a temporal family yields.

`Value` holds the base values themselves: `Text`, `Jsonb`, `Geo` over
`Value` holds the base values themselves: `Text`, `Jsonb`, `JsonPath`, `Geo` over
`Geometry` and `Geography` (both a `GSERIALIZED`, parented exactly as
`TGeo` parents `TGeometry` and `TGeography`), `Cbuffer`, `Npoint`,
`Nsegment`, `Pose`, `PoseChain`, `Pcpoint`, `Pcpatch` and `Raquet`. A
Expand All @@ -123,8 +123,9 @@ a `uint64`, need no class and the ten by-reference base types do.
`DriftGate::test_every_byreference_base_type_has_a_value_class` derives
that set from the two predicates and fails until each has a class, so a
base type MEOS adds reaches the model with no edit to the file.
`Nsegment` and `Raquet` are the two MeosTypes no membership predicate
admits; the model states them, and the same gate states that it does.
`Nsegment`, `Raquet` and `JsonPath` are the MeosTypes no membership
predicate admits; the model states them, and the same gate states that it
does.

`Box` is covered the same way, from the `type_bboxtype` column of
`MEOS_RELTYPE_CATALOG`: it names the box each type stores, so its
Expand Down
10 changes: 10 additions & 0 deletions meta/object-model.json
Original file line number Diff line number Diff line change
Expand Up @@ -593,6 +593,16 @@
"conditional": "JSON",
"doc": "PostgreSQL jsonb, the base type of TJsonb and JsonbSet."
},
"JsonPath": {
"kind": "leaf",
"parent": "Value",
"prefixes": [
"jsonpath"
],
"temptype": "T_JSONPATH",
"conditional": "JSON",
"doc": "A path into a jsonb value. A MeosType no membership predicate admits, as Nsegment and Raquet are; the nine signatures naming it are what need it."
},
"Geo": {
"kind": "abstract",
"parent": "Value",
Expand Down
3 changes: 2 additions & 1 deletion tests/test_object_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,8 @@ def test_every_byreference_base_type_has_a_value_class(self):
self.assertEqual(needed - set(seen), set(),
"a base type MEOS passes by reference has no Value "
"class, so every method naming it stays untypable")
self.assertEqual(set(seen) - needed, {"T_NSEGMENT", "T_RAQUET"},
self.assertEqual(set(seen) - needed,
{"T_NSEGMENT", "T_RAQUET", "T_JSONPATH"},
"the Value classes MEOS admits without making them "
"base types moved; each is a MeosType a signature "
"names, and this states which")
Expand Down
Loading