Repository navigation
Read a point cloud point and patch from their text - #466
Merged
estebanzimanyi merged 1 commit intoOct 18, 2026
Merged
Conversation
pcpoint and pcpatch cast from VARCHAR through Pcpoint_in_cast and Pcpatch_in_cast, which read the hex of the pgPointCloud WKB with MEOS's pcpoint_hex_in and pcpatch_hex_in, the twins of the pcpoint_hex_out and pcpatch_hex_out of the casts to VARCHAR beside them, as MobilityDB reads the text of a pcpoint and a pcpatch through pgPointCloud. A text that is no such hex is an error. Witness: on main `5d3ab06` with the pin advance of MobilityDB#464 (`bde7c2f`), `SELECT setUnionAgg(v)::VARCHAR FROM (VALUES ('0101...0040'::pcpatch), ('0101...0840'::pcpatch)) t(v)` ends the process with a segmentation fault in set_make_exp, and `SELECT ('0101...0040'::pcpatch)::VARCHAR` answers `PCSCHEMA for pcid 808464432 not registered`: with no cast from VARCHAR, DuckDB casts the text as a BLOB, so the value holds the characters of the hex, 808464432 being 0x30303030, the text "0000"; here both answer MobilityDB's text. Measured: test/sql/tpcpatch.test and test/sql/tpcpoint.test state two patches and a point read from their text, and setUnionAgg over the two patches, against the text MobilityDB answers for the same values, and a text that is no hex refused for each type. Why: a literal is how a query writes a point cloud value, and without the cast it reads as bytes no schema describes, which the functions over the value then read as a pgPointCloud header.
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.
pcpoint and pcpatch cast from VARCHAR through Pcpoint_in_cast and Pcpatch_in_cast, which read the
hex of the pgPointCloud WKB with MEOS's pcpoint_hex_in and pcpatch_hex_in, the twins of the
pcpoint_hex_out and pcpatch_hex_out of the casts to VARCHAR beside them, as MobilityDB reads the
text of a pcpoint and a pcpatch through pgPointCloud. A text that is no such hex is an error.
Witness: on main
5d3ab06with the pin advance of #464 (bde7c2f),SELECT setUnionAgg(v)::VARCHAR FROM (VALUES ('0101...0040'::pcpatch), ('0101...0840'::pcpatch)) t(v)ends the process with a segmentation fault in set_make_exp, andSELECT ('0101...0040'::pcpatch)::VARCHARanswersPCSCHEMA for pcid 808464432 not registered:with no cast from VARCHAR, DuckDB casts the text as a BLOB, so the value holds the characters of
the hex, 808464432 being 0x30303030, the text "0000"; here both answer MobilityDB's text.
Measured: test/sql/tpcpatch.test and test/sql/tpcpoint.test state two patches and a point read
from their text, and setUnionAgg over the two patches, against the text MobilityDB answers for the
same values, and a text that is no hex refused for each type.
Why: a literal is how a query writes a point cloud value, and without the cast it reads as bytes
no schema describes, which the functions over the value then read as a pgPointCloud header.