From 8d178d86915162f5441046990357e163512293d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 4 Sep 2026 09:49:39 +0200 Subject: [PATCH 1/7] Carry a value in and out of a stream field the way the catalog states A shape names one arity and one operand vocabulary, so a function differing from a covered one only in the type of its second argument falls out of the streamable surface entirely. `value_marshalled` asks the catalog the same question of every argument and of the result -- can a stream field carry a value of this type, and can the answer be handed back -- and emits whenever all of them say yes. It is last in `SHAPES`, so every named shape keeps its own naming, ordering and comments and this answers only what none of them claimed. A span, a set and a spanset travel in hex-WKB because that is the only encoding that round-trips one: the text form of a `Span *` states no variety, and the catalog's own `in` for it is `bigintspan_in`, one of many. The `typeEncodings[T].decoders.wkb` entry names a decoder for the type itself, so one decoder answers every variety, and the result comes back through the `_as_hexwkb` sibling -- the same exchange form a temporal already travels in, so the output of one operator is the input of the next. A type carrying a text parser named for itself keeps it, which leaves the operators already emitted byte-identical. Every codec is called from its own catalogued signature rather than from the arity of the one the templates were written against: `interval_in` takes a typmod after the string, `raster_as_hexwkb` takes only a length, and `pcpoint_as_hexwkb` neither. A pointer-to-pointer marshals as nothing, since `rstrip("*")` reads `Cbuffer **` as a `Cbuffer`, which is an array or an answer written back through the argument and not one value. The operand that gets built is the first argument that needs building, and `primary_index` records where it goes back in the call, which is what lets an operand sit in the middle of a longer argument list. `structural_residue()` is asked before the shapes. What a function IS -- an aggregate's state transition, a value's own text form, an answer returned through its argument list -- decides that no per-event operator exists for it whatever a shape makes of its signature. The `--out` descriptor path applies the same gate, so the ledger and the descriptor name one set. The ledger reads 1695 GENERATED, 774 GAP, 868 RESIDUE and 172 DEFERRED over the 3509 public functions the catalog carries, and every one of the 1695 emitted operator cores compiles against a `-DMEOS=ON -DALL=ON` MEOS with 0 errors and 0 warnings. --- tools/codegen/README.md | 47 + tools/codegen/build_descriptor.py | 264 ++++- tools/codegen/codegen_nebula.py | 55 +- tools/codegen/coverage-ledger.txt | 1778 ++++++++++++++--------------- 4 files changed, 1233 insertions(+), 911 deletions(-) diff --git a/tools/codegen/README.md b/tools/codegen/README.md index 63928751f6..09e073944d 100644 --- a/tools/codegen/README.md +++ b/tools/codegen/README.md @@ -92,6 +92,53 @@ selects the corresponding physical C++ template in `codegen_nebula.py`. | `build_tnumber_point_with_scalar` | value, ts, scalar | `int fn(Temporal*, double\|int)` | | `build_generic` | arbitrary typed fields | any MEOS scalar, via GENERIC_RETURNS map | +## Value marshalling (the `value_marshalled` catch-all) + +The shapes above each name one arity and one operand vocabulary, so a function +differing from a covered one only in the type of its second argument falls out +of the surface. `value_marshalled` sits LAST in `SHAPES` and asks the catalog +the same question of every argument and of the result: can a stream field carry +a value of this type, and can the answer be handed back. It emits when all of +them say yes, so every named shape keeps its own naming and ordering and this +answers only what none of them claimed. + +One argument travels one of four ways, in this order of preference: + +| Argument type | Field | Read back with | +|---|---|---| +| `double` / `int` / `bool` / `int64_t` / `uint64_t` | its own width | — | +| `GSERIALIZED *` | VARSIZED WKT | `StaticGeometry` | +| a type whose `typeEncodings[T].in` is `_in` | VARSIZED text | `_in`, plus the arguments `in_aux` names | +| a type whose `typeEncodings[T].decoders.wkb` is `_from_hexwkb` | VARSIZED hex-WKB | `_from_hexwkb` | + +Text before hex-WKB is what keeps the operators already emitted byte-identical: +a Cbuffer and an STBox carry both encodings and their existing operators read +the text one. The hex-WKB row is what admits a span, a set and a spanset at all +— the text form of a `Span *` states no variety, and the catalog's own `in` for +it is `bigintspan_in`, so text cannot round-trip one, while hex-WKB carries the +variety inside the value and one decoder answers every variety. + +A result comes back as the number it is, or in the same hex-WKB exchange form, +so the output of one operator is the input of the next for a span and a set +exactly as it already is for a temporal. Every codec is called from its OWN +catalogued signature: `interval_in` takes a typmod after the string, +`raster_as_hexwkb` takes only a length, `pcpoint_as_hexwkb` neither. + +The operand that gets BUILT is the first argument that needs building; +`primary_index` records where it goes back in the call, which is what lets an +operand sit in the middle of a longer argument list. + +## Ledger bucket order + +`structural_residue()` is asked BEFORE the shapes and `_residue_reason()` after. +What a function IS — unreachable through an umbrella header, an aggregate +transition, a value's own text form, an answer returned through its argument +list — decides that no per-event operator exists for it whatever a shape makes +of its signature. A category merely outside the streamable set is DEFERRED +instead, which says no shape reaches that family YET, so a new shape is free to +answer it. The `--out` descriptor path applies the same structural gate, so what +the ledger calls GENERATED and what the descriptor carries are one set. + ## C-to-NES type map (GENERIC_RETURNS) | MEOS C return | nautilus_return | C++ return | zero literal | diff --git a/tools/codegen/build_descriptor.py b/tools/codegen/build_descriptor.py index 0d1faba5ea..f0e66c450a 100644 --- a/tools/codegen/build_descriptor.py +++ b/tools/codegen/build_descriptor.py @@ -529,14 +529,227 @@ def text_value_input(ctype): parser = enc.get("in") if not parser or parser != bare.lower() + "_in": return None + aux = _parser_aux_args(parser, enc) + if aux is None: + return None return { "fields": [["box", "VariableSizedData"]], "parser": parser, + "parser_aux": aux, "cpp_type": bare, "headers": catalog_header(parser), } +def _parser_aux_args(parser, enc): + """The literal arguments a text parser takes AFTER the string, or None. + + Most parsers read a string and nothing else, but `interval_in` also takes a + typmod, and the catalog says so twice over: the parser's own `params`, and + the `in_aux` entry naming the argument and the value to pass when a caller + has none. Counting the parameters rather than assuming one is what keeps a + type whose parser takes a second argument from being called with one. + """ + params = (_CATALOG.get(parser) or {}).get("params") + if not params or params[0] != "char*": + return None + aux = enc.get("in_aux") or [] + if len(params) != 1 + len(aux): + return None + return "".join(f", {a.get('default', 0)}" for a in aux) + + +def wkb_value_codec(ctype): + """The type-GENERIC hex-WKB codec pair for `ctype`, or None. + + The text form of a span states no variety: the catalog's own `in` for `Span` + is `bigintspan_in`, one of many, so a `Span *` argument cannot be read from + text without guessing which variety is meant, and `text_value_input` + declines it for exactly that reason. The hex-WKB form carries the variety + INSIDE the value, so ONE decoder answers every variety of the type, and MEOS + names that decoder for the type itself -- `span_from_hexwkb`, + `set_from_hexwkb`, `spanset_from_hexwkb`, `temporal_from_hexwkb`. + + Both halves are read off the catalog: the decoder from + `typeEncodings[T].decoders.wkb`, the encoder as the `_as_hexwkb` sibling the + catalog declares. A type MEOS gives no generic decoder, or no encoder to + hand the value back on, declines rather than travel in a form it cannot + round-trip. + """ + bare = ctype.rstrip("*") + enc = _TYPE_ENCODINGS.get(bare) or {} + decoder = (enc.get("decoders") or {}).get("wkb") + if decoder != bare.lower() + "_from_hexwkb": + return None + if (_CATALOG.get(decoder) or {}).get("params") != ["char*"]: + return None + encoder = bare.lower() + "_as_hexwkb" + args = _hexwkb_encoder_args(encoder) + if args is None: + return None + return {"parser": decoder, "serializer": encoder, "serializer_args": args, + "cpp_type": bare, "headers": catalog_header(decoder)} + + +def _hexwkb_encoder_args(encoder): + """The arguments a hex-WKB encoder takes AFTER the value, or None. + + The family is not one signature: `span_as_hexwkb` takes an endian variant + and a length out-parameter, `raster_as_hexwkb` only the length, and + `pcpoint_as_hexwkb` neither. Each parameter is read from the catalog and + answered by what it IS -- the variant by the NDR default this binding + already writes, the length by the local it fills -- so an encoder whose + parameters say something else declines instead of being called wrongly. + """ + params = (_CATALOG.get(encoder) or {}).get("params") + if not params: + return None + out = [] + for param in params[1:]: + if param == "uint8_t": + out.append(", 0") + elif param == "size_t*": + out.append(", &hexSize") + else: + return None + return "".join(out) + + +def operand_marshalling(ctype): + """How one argument of `ctype` travels in a stream field, or None. + + ONE reading of an argument type, shared by every shape, so a type admitted + by one is admitted by all. The order states the preference: a by-value + scalar is a column of its own width; a geometry is the WKT its own field + carries; a static value with a parser named for its type is that text; and + anything else MEOS gives a generic hex-WKB codec travels in that form. + + Text before hex-WKB is what keeps the operators this generator already emits + byte-identical: a Cbuffer and an STBox carry both encodings, and the text one + is what their existing operators read. + """ + if ctype in SCALAR_CPP: + return {"kind": "scalar", "cpp": SCALAR_CPP[ctype]} + if ctype == "GSERIALIZED*": + return {"kind": "geom"} + # `rstrip("*")` reads `Cbuffer**` as `Cbuffer`, so without this a + # pointer-to-pointer -- an array of values, or a value written back through + # the argument -- would be marshalled as the single value it is not. + if not ctype.endswith("*") or ctype.endswith("**"): + return None + spec = text_value_input(ctype) + if spec: + return {"kind": "box", "box_type": spec["cpp_type"], + "parser": spec["parser"], "parser_aux": spec["parser_aux"], + "header": (spec["headers"] or ["meos.h"])[0]} + spec = wkb_value_codec(ctype) + if spec: + return {"kind": "wkb_value", "value_type": spec["cpp_type"], + "parser": spec["parser"], + "header": (spec["headers"] or ["meos.h"])[0]} + return None + + +def result_marshalling(ret): + """How the result of a function comes back out, as a return_kind, or None. + + A number is the value itself. Anything MEOS gives a generic hex-WKB encoder + is handed on in that form, which is the SAME exchange form the operand side + reads -- so the output of one operator is the input of the next, for a span + and a set exactly as it already is for a temporal. + """ + if ret in ("bool", "int", "double"): + return ret, None + spec = wkb_value_codec(ret) + if spec: + return "wkb", spec + return None, None + + +def primary_operand_spec(marsh, index): + """The `input_spec` for the operand the emitted lambda builds first. + + The emitter builds ONE operand ahead of the call and passes the rest as + extra arguments; which of the function's arguments that is depends only on + which one needs building, so it is read here rather than assumed to be the + first. + """ + if marsh["kind"] == "box": + return {"fields": [["box", "VariableSizedData"]], + "parser": marsh["parser"], "parser_aux": marsh["parser_aux"], + "cpp_type": marsh["box_type"], "headers": [marsh["header"]]} + if marsh["kind"] == "wkb_value": + t, parser = marsh["value_type"], marsh["parser"] + return { + "fields": [["val", "VariableSizedData"]], + "header": marsh["header"], + "headers": [marsh["header"]], + "cpp_type": t, + "build": (' std::string {var}Hex(valPtr, valSize);\n' + f' {t}* {{var}} = {parser}({{var}}Hex.c_str());\n' + ' if (!{var}) return {z};\n'), + } + return None + + +def value_marshalled(fn, ret, args): + """Any function whose result and EVERY argument the catalog can marshal. + + The shapes above each name one arity and one operand vocabulary, so a + function differing from a covered one only in which type its second argument + takes falls out of the surface entirely. This one asks the catalog the same + question of every argument -- can a stream field carry a value of this type, + and can the answer be handed back -- and emits whenever all of them say yes. + It sits LAST, so every named shape keeps its own naming, ordering and + comments, and this answers only what none of them claimed. + + The operand that gets BUILT is the first argument that needs building; the + rest travel as extra arguments in their own order, and `primary_index` + records where the built one goes back in the call. A function of scalars + alone declines: it has no operand to build, so it is not a per-event + operator over a MEOS value. + """ + if not args: + return None + marsh = [operand_marshalling(a) for a in args] + if not all(marsh): + return None + return_kind, result = result_marshalling(ret) + if not return_kind: + return None + primary = next((i for i, m in enumerate(marsh) if m["kind"] != "scalar"), None) + if primary is None: + return None + spec = primary_operand_spec(marsh[primary], primary) + if not spec: + return None + headers = set(catalog_header(fn)) | {marsh[primary]["header"]} + extras = [] + for i, m in enumerate(marsh): + if i == primary: + continue + extras.append(m) + if m["kind"] in ("box", "wkb_value"): + headers.add(m["header"]) + d = { + "nebula_name": pascal(fn), "sql_token": fn.upper(), "meos_call": fn, + "build_generic": True, "return_kind": return_kind, + "input_type": spec["cpp_type"].lower() + "_value", + "input_spec": spec, "extra_args": extras, "primary_index": primary, + "comment_one_liner": + f"Per-event {fn}: {len(args)} catalog-marshalled operand(s) -> {return_kind}.", + } + if result: + d["result_type"] = result["cpp_type"] + d["result_serializer"] = result["serializer"] + d["result_serializer_args"] = result["serializer_args"] + headers.update(result["headers"]) + headers.discard("meos.h") + if headers: + d["extra_headers"] = sorted(headers) + return d + + def _operand_phrase(inp): """How to name an operand of this input type in a generated comment. @@ -1149,6 +1362,7 @@ def trgeometry_nad(fn, ret, args): "trgeometry_trgeometry_predicate": trgeometry_trgeometry_predicate, "trgeometry_trgeometry_dwithin": trgeometry_trgeometry_dwithin, "trgeometry_nad": trgeometry_nad, + "value_marshalled": value_marshalled, } @@ -1219,20 +1433,21 @@ def reachable_header(header): return bool(header) and bool(_UMBRELLA.fullmatch(header)) and "internal" not in header -def _residue_reason(fn, ret, args, facts): - """Why this public function carries no per-event streamable operator. +def structural_residue(fn, ret, args, facts): + """The residue reading no shape may override, or None. - Returns a reason string, or None when the function IS a candidate and its - absence from the generated set is a GAP the generator owes rather than a - property of the function. + What a function IS -- unreachable, an aggregate transition, a value's own + text form, an answer returned through its argument list -- decides that no + per-event operator exists for it, whatever a shape makes of its signature. + So this is asked BEFORE the shapes: asking it only where nothing matched + lets a shape claim an out-parameter or an aggregate's state transition and + the ledger then reads GENERATED for code no stream can run. """ if not reachable_header(facts["file"]): return "RESIDUE:internal-header" category = facts["category"] if category in ("io", "constructor", "lifecycle", "index", "aggregate"): return f"RESIDUE:{category}" - if category not in _STREAMABLE_CATEGORIES: - return f"DEFERRED:category-{category}" # A pointer-to-pointer or a scalar out-parameter returns through its # argument list, which no per-event operator signature can express. if any(a.endswith("**") for a in args): @@ -1244,6 +1459,25 @@ def _residue_reason(fn, ret, args, facts): return None +def _residue_reason(fn, ret, args, facts): + """Why this public function carries no per-event streamable operator. + + Returns a reason string, or None when the function IS a candidate and its + absence from the generated set is a GAP the generator owes rather than a + property of the function. + + A category outside the streamable set is DEFERRED rather than residue: it + says no shape reaches this family YET, which a new shape is free to answer, + so it is read AFTER the shapes while `structural_residue` is read before. + """ + structural = structural_residue(fn, ret, args, facts) + if structural: + return structural + if facts["category"] not in _STREAMABLE_CATEGORIES: + return f"DEFERRED:category-{facts['category']}" + return None + + def write_ledger(path, catalog, shapes): """The complete partition of the public surface, one line per function. @@ -1258,10 +1492,11 @@ def write_ledger(path, catalog, shapes): for fn in sorted(facts): ret, args = sigs.get(fn, ("", ())) bucket = None - if not reachable_header(facts[fn]["file"]): - # nothing can call it, so no shape may claim it - rows.append(f"RESIDUE:internal-header\t{fn}") - tally["RESIDUE"] += 1 + structural = structural_residue(fn, ret, args, facts[fn]) + if structural: + # what the function IS settles it, so no shape may claim it + rows.append(f"{structural}\t{fn}") + tally[structural.split(":")[0]] += 1 continue for name, cls in shapes: try: @@ -1318,7 +1553,12 @@ def main(): if a.catalog: sigs = catalog_sigs(a.catalog) facts = catalog_candidates(a.catalog) - gap = {fn for fn, f in facts.items() if reachable_header(f["file"])} + # The SAME structural gate the ledger applies, so what the ledger calls + # GENERATED and what the descriptor carries are one set: a gate on only + # one of the two makes the ledger a claim about code the emitter does + # not write, or writes for a function the ledger calls residue. + gap = {fn for fn, f in facts.items() + if not structural_residue(fn, *sigs.get(fn, ("", ())), f)} else: sigs = parse_sigs(a.sigs) gap = {ln.strip() for ln in open(a.gap) if ln.strip()} diff --git a/tools/codegen/codegen_nebula.py b/tools/codegen/codegen_nebula.py index a97c6e8be0..6b4f44dd90 100644 --- a/tools/codegen/codegen_nebula.py +++ b/tools/codegen/codegen_nebula.py @@ -1737,11 +1737,15 @@ def input_spec(op): # stripping and the NULL check are the stbox builder's, parameterized by # type and parser -- reusing it keeps the two from drifting apart. base = GENERIC_INPUTS["stbox_text"] + # `interval_in` takes a typmod after the string; the descriptor carries + # whatever the catalog says follows, so the call is written from the + # parser's own signature rather than from stbox_in's arity. + call = f'{spec["parser"]}({{var}}S.c_str(){spec.get("parser_aux", "")})' return dict( spec, header="meos.h", build=(base["build"].replace("STBox", spec["cpp_type"]) - .replace("stbox_in", spec["parser"]))) + .replace("stbox_in({var}S.c_str())", call))) # Build the instant through the constructor rather than by spelling a WKT # literal. The timestamp goes through the same epoch helper the text form # uses, so the two agree on the stream's epoch convention by construction. @@ -4128,7 +4132,7 @@ def assemble_generic_physical(op): f' std::string arg{i}S(arg{i}Ptr, arg{i}Size);\n' f' while (!arg{i}S.empty() && (arg{i}S.front()==\'\\\'\' || arg{i}S.front()==\'"\')) arg{i}S.erase(arg{i}S.begin());\n' f' while (!arg{i}S.empty() && (arg{i}S.back()==\'\\\'\' || arg{i}S.back()==\'"\')) arg{i}S.pop_back();\n' - f' {ex["box_type"]}* arg{i}B = {ex["parser"]}(arg{i}S.c_str());\n' + f' {ex["box_type"]}* arg{i}B = {ex["parser"]}(arg{i}S.c_str(){ex.get("parser_aux", "")});\n' f' if (!arg{i}B) {{ free(temp); return {zero}; }}\n') call_terms.append(f"arg{i}B") box_frees.append(f"free(arg{i}B);") @@ -4144,6 +4148,20 @@ def assemble_generic_physical(op): f' if (!arg{i}T) {{ free(temp); return {zero}; }}\n') call_terms.append(f"arg{i}T") box_frees.append(f"free(arg{i}T);") + elif ex["kind"] == "wkb_value": + # A static MEOS value -- a span, a set, a spanset, a box -- carried + # as a VARSIZED hex-WKB field and read back with the type-generic + # decoder the catalog names for it. The text form of a span states + # no variety, so hex-WKB is the only encoding that round-trips one; + # this is the same exchange form a temporal operand already uses. + fields.append((f"arg{i}", "VariableSizedData")) + headers.add(ex.get("header", "meos.h")) + parse_lines.append( + f' std::string arg{i}Hex(arg{i}Ptr, arg{i}Size);\n' + f' {ex["value_type"]}* arg{i}V = {ex["parser"]}(arg{i}Hex.c_str());\n' + f' if (!arg{i}V) {{ free(temp); return {zero}; }}\n') + call_terms.append(f"arg{i}V") + box_frees.append(f"free(arg{i}V);") # Build the parameterValues casts, lambda params, and invoke args from fields. casts, lparams, invoke = [], [], [] @@ -4164,20 +4182,37 @@ def assemble_generic_physical(op): inc = "\n".join(f"#include <{h}>" for h in ["meos.h"] + sorted(h for h in headers if h != "meos.h")) - # A literal-first op (e.g. above_stbox_tspatial(box, temp), - # acontains_geo_tgeo(geom, temp)) calls with the STATIC operand -- box, span - # or geometry -- before the temporal; the default order is temporal-first. - if op.get("literal_first") and len(call_terms) == 2: - call_terms = [call_terms[1], call_terms[0]] + # The built operand goes back into the call where its own argument sits. + # `primary_index` says where that is; a literal-first op (e.g. + # above_stbox_tspatial(box, temp), acontains_geo_tgeo(geom, temp)) states the + # same thing the older way, that the STATIC operand -- box, span or geometry + # -- is called before the temporal. Reading the index rather than swapping a + # pair is what lets an operand sit in the middle of a longer argument list. + primary = op.get("primary_index") + if primary is None: + primary = 1 if (op.get("literal_first") and len(extras) == 1) else 0 + call_terms = call_terms[1:] + call_terms.insert(primary, "temp") callargs = ", ".join(call_terms) bf = "".join(f" {x}\n" for x in box_frees) if wkb: - call_marshal = (f" Temporal* res = {op['meos_call']}({callargs});\n" + # What the result IS, and which encoder hands it on, are the result + # type's own facts and the descriptor carries both: a span comes back + # through span_as_hexwkb exactly as a temporal comes back through + # temporal_as_hexwkb, so the exchange form is one form for every type. + res_type = op.get("result_type", "Temporal") + res_ser = op.get("result_serializer", "temporal_as_hexwkb") + res_args = op.get("result_serializer_args", ", 0, &hexSize") + # `pcpoint_as_hexwkb` takes the value alone, so the length local it + # would fill is declared only where the encoder asks for one. + size_decl = (" size_t hexSize = 0;\n" + if "&hexSize" in res_args else "") + call_marshal = (f" {res_type}* res = {op['meos_call']}({callargs});\n" f" free(temp);\n" f"{bf}" f" if (!res) return {zero};\n" - f" size_t hexSize = 0;\n" - f" char* hexOut = temporal_as_hexwkb(res, 0, &hexSize);\n" + f"{size_decl}" + f" char* hexOut = {res_ser}(res{res_args});\n" f" free(res);\n" f" return hexOut;") elif extract_fn is None: diff --git a/tools/codegen/coverage-ledger.txt b/tools/codegen/coverage-ledger.txt index 9dc100e280..6ab1c46997 100644 --- a/tools/codegen/coverage-ledger.txt +++ b/tools/codegen/coverage-ledger.txt @@ -5,7 +5,7 @@ GENERATED:temporal_x_box above_stbox_tspatial GENERATED:two_static_values above_tpcbox_tpcbox GENERATED:temporal_x_box above_tspatial_stbox GENERATED:two_temporal_scalar above_tspatial_tspatial -GAP acontains_cbuffer_tcbuffer +GENERATED:value_marshalled acontains_cbuffer_tcbuffer GENERATED:temporal_x_geom acontains_geo_tcbuffer GENERATED:temporal_x_geom acontains_geo_tgeo GENERATED:geo_trgeometry_predicate acontains_geo_trgeometry @@ -13,7 +13,7 @@ GENERATED:sprel_scalar_existing acontains_tcbuffer_cbuffer GENERATED:temporal_x_geom acontains_tcbuffer_geo GENERATED:two_temporal_scalar acontains_tcbuffer_tcbuffer GENERATED:sprel_scalar_existing acontains_tgeo_geo -GAP acovers_cbuffer_tcbuffer +GENERATED:value_marshalled acovers_cbuffer_tcbuffer GENERATED:temporal_x_geom acovers_geo_tcbuffer GENERATED:temporal_x_geom acovers_geo_tgeo GENERATED:geo_trgeometry_predicate acovers_geo_trgeometry @@ -23,14 +23,14 @@ GENERATED:two_temporal_scalar acovers_tcbuffer_tcbuffer GENERATED:sprel_scalar_existing acovers_tgeo_geo GENERATED:two_temporal_scalar acovers_tgeo_tgeo GENERATED:trgeometry_geo_predicate acovers_trgeometry_geo -GAP add_bigint_tbigint +GENERATED:value_marshalled add_bigint_tbigint RESIDUE:internal-header add_date_int RESIDUE:internal-header add_date_interval RESIDUE:internal-header add_float8_float8 -GAP add_float_tfloat +GENERATED:value_marshalled add_float_tfloat RESIDUE:internal-header add_int32_int32 RESIDUE:internal-header add_int64_int64 -GAP add_int_tint +GENERATED:value_marshalled add_int_tint RESIDUE:internal-header add_interval_interval GENERATED:temporal_scalar_transform add_tbigint_bigint GENERATED:temporal_scalar_transform add_tfloat_float @@ -48,24 +48,24 @@ GENERATED:two_temporal_scalar adisjoint_tgeo_tgeo RESIDUE:out-param-array adisjoint_tgeoarr_tgeoarr GENERATED:trgeometry_geo_predicate adisjoint_trgeometry_geo GENERATED:two_temporal_scalar adisjoint_trgeometry_trgeometry -GAP adjacent_bigint_span +GENERATED:value_marshalled adjacent_bigint_span GAP adjacent_date_span -GAP adjacent_float_span -GAP adjacent_int_span -GAP adjacent_numspan_tnumber -GAP adjacent_span_bigint +GENERATED:value_marshalled adjacent_float_span +GENERATED:value_marshalled adjacent_int_span +GENERATED:value_marshalled adjacent_numspan_tnumber +GENERATED:value_marshalled adjacent_span_bigint GAP adjacent_span_date -GAP adjacent_span_float -GAP adjacent_span_int -GAP adjacent_span_span -GAP adjacent_span_spanset +GENERATED:value_marshalled adjacent_span_float +GENERATED:value_marshalled adjacent_span_int +GENERATED:value_marshalled adjacent_span_span +GENERATED:value_marshalled adjacent_span_spanset GAP adjacent_span_timestamptz -GAP adjacent_spanset_bigint +GENERATED:value_marshalled adjacent_spanset_bigint GAP adjacent_spanset_date -GAP adjacent_spanset_float -GAP adjacent_spanset_int -GAP adjacent_spanset_span -GAP adjacent_spanset_spanset +GENERATED:value_marshalled adjacent_spanset_float +GENERATED:value_marshalled adjacent_spanset_int +GENERATED:value_marshalled adjacent_spanset_span +GENERATED:value_marshalled adjacent_spanset_spanset GAP adjacent_spanset_timestamptz GENERATED:two_static_values adjacent_stbox_stbox GENERATED:temporal_x_box adjacent_stbox_tspatial @@ -74,22 +74,22 @@ GENERATED:temporal_x_box adjacent_tbox_tnumber GENERATED:two_temporal_scalar adjacent_temporal_temporal GENERATED:temporal_x_box adjacent_temporal_tstzspan GAP adjacent_timestamptz_span -GAP adjacent_tnumber_numspan +GENERATED:value_marshalled adjacent_tnumber_numspan GENERATED:temporal_x_box adjacent_tnumber_tbox GENERATED:two_temporal_scalar adjacent_tnumber_tnumber GENERATED:two_static_values adjacent_tpcbox_tpcbox -GAP adjacent_tpcbox_tpointcloud -GAP adjacent_tpointcloud_tpcbox +GENERATED:value_marshalled adjacent_tpcbox_tpointcloud +GENERATED:value_marshalled adjacent_tpointcloud_tpcbox GENERATED:two_temporal_scalar adjacent_tpointcloud_tpointcloud GENERATED:temporal_x_box adjacent_tspatial_stbox GENERATED:two_temporal_scalar adjacent_tspatial_tspatial -GAP adjacent_tstzspan_temporal +GENERATED:value_marshalled adjacent_tstzspan_temporal GAP adwithin_geo_tgeo -GAP adwithin_tcbuffer_cbuffer -GAP adwithin_tcbuffer_geo -GAP adwithin_tcbuffer_tcbuffer -GAP adwithin_tgeo_geo -GAP adwithin_tgeo_tgeo +GENERATED:value_marshalled adwithin_tcbuffer_cbuffer +GENERATED:value_marshalled adwithin_tcbuffer_geo +GENERATED:value_marshalled adwithin_tcbuffer_tcbuffer +GENERATED:value_marshalled adwithin_tgeo_geo +GENERATED:value_marshalled adwithin_tgeo_tgeo RESIDUE:out-param-array adwithin_tgeoarr_tgeoarr GENERATED:trgeometry_geo_dwithin adwithin_trgeometry_geo GENERATED:trgeometry_trgeometry_dwithin adwithin_trgeometry_trgeometry @@ -116,7 +116,7 @@ GENERATED:two_temporal_scalar after_tnumber_tnumber GENERATED:two_static_values after_tpcbox_tpcbox GENERATED:temporal_x_box after_tspatial_stbox GENERATED:two_temporal_scalar after_tspatial_tspatial -GAP after_tstzspan_temporal +GENERATED:value_marshalled after_tstzspan_temporal GENERATED:temporal_x_geom aintersects_geo_tgeo GENERATED:sprel_scalar_existing aintersects_tcbuffer_cbuffer GENERATED:temporal_x_geom aintersects_tcbuffer_geo @@ -128,18 +128,18 @@ GENERATED:trgeometry_geo_predicate aintersects_trgeometry_geo GENERATED:two_temporal_scalar aintersects_trgeometry_trgeometry GENERATED:cmp_scalar_scalarfirst always_eq_bigint_tbigint GENERATED:cmp_scalar_scalarfirst always_eq_bool_tbool -GAP always_eq_cbuffer_tcbuffer +GENERATED:value_marshalled always_eq_cbuffer_tcbuffer GENERATED:cmp_scalar_scalarfirst always_eq_float_tfloat GENERATED:temporal_x_geom always_eq_geo_tgeo GENERATED:geo_trgeometry_predicate always_eq_geo_trgeometry GENERATED:cmp_scalar_scalarfirst always_eq_h3index_th3index GENERATED:cmp_scalar_scalarfirst always_eq_int_tint -GAP always_eq_jsonb_tjsonb -GAP always_eq_npoint_tnpoint -GAP always_eq_pcpatch_tpcpatch -GAP always_eq_pcpoint_tpcpoint -GAP always_eq_pose_tpose -GAP always_eq_posechain_tposechain +GENERATED:value_marshalled always_eq_jsonb_tjsonb +GENERATED:value_marshalled always_eq_npoint_tnpoint +GENERATED:value_marshalled always_eq_pcpatch_tpcpatch +GENERATED:value_marshalled always_eq_pcpoint_tpcpoint +GENERATED:value_marshalled always_eq_pose_tpose +GENERATED:value_marshalled always_eq_posechain_tposechain GENERATED:cmp_scalar_scalarfirst always_eq_quadbin_tquadbin GAP always_eq_s2cell_ts2cell GENERATED:cmp_scalar_tempfirst always_eq_tbigint_bigint @@ -154,17 +154,17 @@ GENERATED:two_temporal_scalar always_eq_tgeo_tgeo GENERATED:cmp_scalar_tempfirst always_eq_th3index_h3index GENERATED:two_temporal_scalar always_eq_th3index_th3index GENERATED:cmp_scalar_tempfirst always_eq_tint_int -GAP always_eq_tjsonb_jsonb +GENERATED:value_marshalled always_eq_tjsonb_jsonb GENERATED:two_temporal_scalar always_eq_tjsonb_tjsonb -GAP always_eq_tnpoint_npoint +GENERATED:value_marshalled always_eq_tnpoint_npoint GENERATED:two_temporal_scalar always_eq_tnpoint_tnpoint -GAP always_eq_tpcpatch_pcpatch +GENERATED:value_marshalled always_eq_tpcpatch_pcpatch GENERATED:two_temporal_scalar always_eq_tpcpatch_tpcpatch -GAP always_eq_tpcpoint_pcpoint +GENERATED:value_marshalled always_eq_tpcpoint_pcpoint GENERATED:two_temporal_scalar always_eq_tpcpoint_tpcpoint -GAP always_eq_tpose_pose +GENERATED:value_marshalled always_eq_tpose_pose GENERATED:two_temporal_scalar always_eq_tpose_tpose -GAP always_eq_tposechain_posechain +GENERATED:value_marshalled always_eq_tposechain_posechain GENERATED:two_temporal_scalar always_eq_tposechain_tposechain GENERATED:cmp_scalar_tempfirst always_eq_tquadbin_quadbin GENERATED:two_temporal_scalar always_eq_tquadbin_tquadbin @@ -211,18 +211,18 @@ GENERATED:cmp_scalar_tempfirst always_lt_tint_int GAP always_lt_ttext_text GENERATED:cmp_scalar_scalarfirst always_ne_bigint_tbigint GENERATED:cmp_scalar_scalarfirst always_ne_bool_tbool -GAP always_ne_cbuffer_tcbuffer +GENERATED:value_marshalled always_ne_cbuffer_tcbuffer GENERATED:cmp_scalar_scalarfirst always_ne_float_tfloat GENERATED:temporal_x_geom always_ne_geo_tgeo GENERATED:geo_trgeometry_predicate always_ne_geo_trgeometry GENERATED:cmp_scalar_scalarfirst always_ne_h3index_th3index GENERATED:cmp_scalar_scalarfirst always_ne_int_tint -GAP always_ne_jsonb_tjsonb -GAP always_ne_npoint_tnpoint -GAP always_ne_pcpatch_tpcpatch -GAP always_ne_pcpoint_tpcpoint -GAP always_ne_pose_tpose -GAP always_ne_posechain_tposechain +GENERATED:value_marshalled always_ne_jsonb_tjsonb +GENERATED:value_marshalled always_ne_npoint_tnpoint +GENERATED:value_marshalled always_ne_pcpatch_tpcpatch +GENERATED:value_marshalled always_ne_pcpoint_tpcpoint +GENERATED:value_marshalled always_ne_pose_tpose +GENERATED:value_marshalled always_ne_posechain_tposechain GENERATED:cmp_scalar_scalarfirst always_ne_quadbin_tquadbin GAP always_ne_s2cell_ts2cell GENERATED:cmp_scalar_tempfirst always_ne_tbigint_bigint @@ -237,17 +237,17 @@ GENERATED:two_temporal_scalar always_ne_tgeo_tgeo GENERATED:cmp_scalar_tempfirst always_ne_th3index_h3index GENERATED:two_temporal_scalar always_ne_th3index_th3index GENERATED:cmp_scalar_tempfirst always_ne_tint_int -GAP always_ne_tjsonb_jsonb +GENERATED:value_marshalled always_ne_tjsonb_jsonb GENERATED:two_temporal_scalar always_ne_tjsonb_tjsonb -GAP always_ne_tnpoint_npoint +GENERATED:value_marshalled always_ne_tnpoint_npoint GENERATED:two_temporal_scalar always_ne_tnpoint_tnpoint -GAP always_ne_tpcpatch_pcpatch +GENERATED:value_marshalled always_ne_tpcpatch_pcpatch GENERATED:two_temporal_scalar always_ne_tpcpatch_tpcpatch -GAP always_ne_tpcpoint_pcpoint +GENERATED:value_marshalled always_ne_tpcpoint_pcpoint GENERATED:two_temporal_scalar always_ne_tpcpoint_tpcpoint -GAP always_ne_tpose_pose +GENERATED:value_marshalled always_ne_tpose_pose GENERATED:two_temporal_scalar always_ne_tpose_tpose -GAP always_ne_tposechain_posechain +GENERATED:value_marshalled always_ne_tposechain_posechain GENERATED:two_temporal_scalar always_ne_tposechain_tposechain GENERATED:cmp_scalar_tempfirst always_ne_tquadbin_quadbin GENERATED:two_temporal_scalar always_ne_tquadbin_tquadbin @@ -273,7 +273,7 @@ GENERATED:two_static_values back_tpcbox_tpcbox GENERATED:temporal_x_box back_tspatial_stbox GENERATED:two_temporal_scalar back_tspatial_tspatial GAP bearing_point_point -GAP bearing_tpoint_point +GENERATED:value_marshalled bearing_tpoint_point GENERATED:two_temporal_temporal bearing_tpoint_tpoint GAP before_date_set GAP before_date_span @@ -298,7 +298,7 @@ GENERATED:two_temporal_scalar before_tnumber_tnumber GENERATED:two_static_values before_tpcbox_tpcbox GENERATED:temporal_x_box before_tspatial_stbox GENERATED:two_temporal_scalar before_tspatial_tspatial -GAP before_tstzspan_temporal +GENERATED:value_marshalled before_tstzspan_temporal GENERATED:two_static_values below_stbox_stbox GENERATED:temporal_x_box below_stbox_tspatial GENERATED:two_static_values below_tpcbox_tpcbox @@ -311,32 +311,32 @@ DEFERRED:category-conversion bigint_to_set DEFERRED:category-conversion bigint_to_span DEFERRED:category-conversion bigint_to_spanset DEFERRED:category-conversion bigint_to_tbox -DEFERRED:category-conversion bigint_tstzspan_to_tbox +GENERATED:value_marshalled bigint_tstzspan_to_tbox RESIDUE:aggregate bigint_union_transfn GAP bigintset_end_value RESIDUE:io bigintset_in RESIDUE:constructor bigintset_make RESIDUE:io bigintset_out -GAP bigintset_shift_scale +GENERATED:value_marshalled bigintset_shift_scale GAP bigintset_start_value GAP bigintset_value_n GAP bigintset_values GAP bigintspan_bins -GAP bigintspan_expand +GENERATED:value_marshalled bigintspan_expand RESIDUE:io bigintspan_in GAP bigintspan_lower RESIDUE:constructor bigintspan_make RESIDUE:io bigintspan_out -GAP bigintspan_shift_scale -DEFERRED:category-conversion bigintspan_to_floatspan -DEFERRED:category-conversion bigintspan_to_intspan +GENERATED:value_marshalled bigintspan_shift_scale +GENERATED:value_marshalled bigintspan_to_floatspan +GENERATED:value_marshalled bigintspan_to_intspan GAP bigintspan_upper GAP bigintspan_width GAP bigintspanset_bins RESIDUE:io bigintspanset_in GAP bigintspanset_lower RESIDUE:io bigintspanset_out -GAP bigintspanset_shift_scale +GENERATED:value_marshalled bigintspanset_shift_scale GAP bigintspanset_upper GAP bigintspanset_width RESIDUE:internal-header bool_eq @@ -353,7 +353,7 @@ RESIDUE:internal-header bool_to_text RESIDUE:io box3d_in RESIDUE:constructor box3d_make RESIDUE:io box3d_out -DEFERRED:category-conversion box3d_to_stbox +GENERATED:value_marshalled box3d_to_stbox RESIDUE:io cbuffer_as_ewkt RESIDUE:io cbuffer_as_hexwkb RESIDUE:io cbuffer_as_text @@ -375,26 +375,26 @@ GENERATED:two_static_values cbuffer_ne GENERATED:two_static_values cbuffer_nsame RESIDUE:io cbuffer_out GAP cbuffer_point -GAP cbuffer_radius -GAP cbuffer_round +GENERATED:value_marshalled cbuffer_radius +GENERATED:value_marshalled cbuffer_round GENERATED:two_static_values cbuffer_same GAP cbuffer_set_srid GAP cbuffer_srid DEFERRED:category-conversion cbuffer_timestamptz_to_stbox DEFERRED:category-conversion cbuffer_to_geom -DEFERRED:category-conversion cbuffer_to_set -DEFERRED:category-conversion cbuffer_to_stbox +GENERATED:value_marshalled cbuffer_to_set +GENERATED:value_marshalled cbuffer_to_stbox GAP cbuffer_transform GAP cbuffer_transform_pipeline -DEFERRED:category-conversion cbuffer_tstzspan_to_stbox +GENERATED:value_marshalled cbuffer_tstzspan_to_stbox RESIDUE:aggregate cbuffer_union_transfn RESIDUE:out-param-array cbufferarr_round -DEFERRED:category-conversion cbufferarr_to_geom -GAP cbufferset_end_value +RESIDUE:out-param-array cbufferarr_to_geom +GENERATED:value_marshalled cbufferset_end_value RESIDUE:io cbufferset_in RESIDUE:constructor cbufferset_make RESIDUE:io cbufferset_out -GAP cbufferset_start_value +GENERATED:value_marshalled cbufferset_start_value RESIDUE:out-param-array cbufferset_value_n GAP cbufferset_values RESIDUE:internal-header cmp_date_date @@ -405,35 +405,35 @@ RESIDUE:internal-header cmp_timestamp_timestamp RESIDUE:internal-header cmp_timestamp_timestamptz RESIDUE:internal-header cmp_timestamptz_date RESIDUE:internal-header cmp_timestamptz_timestamp -GAP concat_jsonbset_jsonb -GAP concat_tjsonb_jsonb +GENERATED:value_marshalled concat_jsonbset_jsonb +GENERATED:value_marshalled concat_tjsonb_jsonb GENERATED:two_temporal_temporal concat_tjsonb_tjsonb -GAP contained_bigint_set -GAP contained_bigint_span -GAP contained_bigint_spanset -GAP contained_cbuffer_set +GENERATED:value_marshalled contained_bigint_set +GENERATED:value_marshalled contained_bigint_span +GENERATED:value_marshalled contained_bigint_spanset +GENERATED:value_marshalled contained_cbuffer_set GAP contained_date_set GAP contained_date_span GAP contained_date_spanset -GAP contained_float_set -GAP contained_float_span -GAP contained_float_spanset +GENERATED:value_marshalled contained_float_set +GENERATED:value_marshalled contained_float_span +GENERATED:value_marshalled contained_float_spanset GAP contained_geo_set -GAP contained_int_set -GAP contained_int_span -GAP contained_int_spanset -GAP contained_jsonb_set -GAP contained_npoint_set -GAP contained_numspan_tnumber -GAP contained_pcpatch_set -GAP contained_pcpoint_set -GAP contained_pose_set -GAP contained_posechain_set -GAP contained_set_set -GAP contained_span_span -GAP contained_span_spanset -GAP contained_spanset_span -GAP contained_spanset_spanset +GENERATED:value_marshalled contained_int_set +GENERATED:value_marshalled contained_int_span +GENERATED:value_marshalled contained_int_spanset +GENERATED:value_marshalled contained_jsonb_set +GENERATED:value_marshalled contained_npoint_set +GENERATED:value_marshalled contained_numspan_tnumber +GENERATED:value_marshalled contained_pcpatch_set +GENERATED:value_marshalled contained_pcpoint_set +GENERATED:value_marshalled contained_pose_set +GENERATED:value_marshalled contained_posechain_set +GENERATED:value_marshalled contained_set_set +GENERATED:value_marshalled contained_span_span +GENERATED:value_marshalled contained_span_spanset +GENERATED:value_marshalled contained_spanset_span +GENERATED:value_marshalled contained_spanset_spanset GENERATED:two_static_values contained_stbox_stbox GENERATED:temporal_x_box contained_stbox_tspatial GENERATED:two_static_values contained_tbox_tbox @@ -444,46 +444,46 @@ GAP contained_text_set GAP contained_timestamptz_set GAP contained_timestamptz_span GAP contained_timestamptz_spanset -GAP contained_tnumber_numspan +GENERATED:value_marshalled contained_tnumber_numspan GENERATED:temporal_x_box contained_tnumber_tbox GENERATED:two_temporal_scalar contained_tnumber_tnumber GENERATED:two_static_values contained_tpcbox_tpcbox -GAP contained_tpcbox_tpointcloud -GAP contained_tpointcloud_tpcbox +GENERATED:value_marshalled contained_tpcbox_tpointcloud +GENERATED:value_marshalled contained_tpointcloud_tpcbox GENERATED:two_temporal_scalar contained_tpointcloud_tpointcloud GENERATED:temporal_x_box contained_tspatial_stbox GENERATED:two_temporal_scalar contained_tspatial_tspatial -GAP contained_tstzspan_temporal +GENERATED:value_marshalled contained_tstzspan_temporal GENERATED:two_static_values contains_cbuffer_cbuffer -GAP contains_numspan_tnumber -GAP contains_set_bigint -GAP contains_set_cbuffer +GENERATED:value_marshalled contains_numspan_tnumber +GENERATED:value_marshalled contains_set_bigint +GENERATED:value_marshalled contains_set_cbuffer GAP contains_set_date -GAP contains_set_float -GAP contains_set_geo -GAP contains_set_int -GAP contains_set_jsonb -GAP contains_set_npoint -GAP contains_set_pcpatch -GAP contains_set_pcpoint -GAP contains_set_pose -GAP contains_set_posechain -GAP contains_set_set +GENERATED:value_marshalled contains_set_float +GENERATED:value_marshalled contains_set_geo +GENERATED:value_marshalled contains_set_int +GENERATED:value_marshalled contains_set_jsonb +GENERATED:value_marshalled contains_set_npoint +GENERATED:value_marshalled contains_set_pcpatch +GENERATED:value_marshalled contains_set_pcpoint +GENERATED:value_marshalled contains_set_pose +GENERATED:value_marshalled contains_set_posechain +GENERATED:value_marshalled contains_set_set GAP contains_set_text GAP contains_set_timestamptz -GAP contains_span_bigint +GENERATED:value_marshalled contains_span_bigint GAP contains_span_date -GAP contains_span_float -GAP contains_span_int -GAP contains_span_span -GAP contains_span_spanset +GENERATED:value_marshalled contains_span_float +GENERATED:value_marshalled contains_span_int +GENERATED:value_marshalled contains_span_span +GENERATED:value_marshalled contains_span_spanset GAP contains_span_timestamptz -GAP contains_spanset_bigint +GENERATED:value_marshalled contains_spanset_bigint GAP contains_spanset_date -GAP contains_spanset_float -GAP contains_spanset_int -GAP contains_spanset_span -GAP contains_spanset_spanset +GENERATED:value_marshalled contains_spanset_float +GENERATED:value_marshalled contains_spanset_int +GENERATED:value_marshalled contains_spanset_span +GENERATED:value_marshalled contains_spanset_spanset GAP contains_spanset_timestamptz GENERATED:two_static_values contains_stbox_stbox GENERATED:temporal_x_box contains_stbox_tspatial @@ -491,18 +491,18 @@ GENERATED:two_static_values contains_tbox_tbox GENERATED:temporal_x_box contains_tbox_tnumber GENERATED:two_temporal_scalar contains_temporal_temporal GENERATED:temporal_x_box contains_temporal_tstzspan -GAP contains_tjsonb_jsonb +GENERATED:value_marshalled contains_tjsonb_jsonb GENERATED:two_temporal_temporal contains_tjsonb_tjsonb -GAP contains_tnumber_numspan +GENERATED:value_marshalled contains_tnumber_numspan GENERATED:temporal_x_box contains_tnumber_tbox GENERATED:two_temporal_scalar contains_tnumber_tnumber GENERATED:two_static_values contains_tpcbox_tpcbox -GAP contains_tpcbox_tpointcloud -GAP contains_tpointcloud_tpcbox +GENERATED:value_marshalled contains_tpcbox_tpointcloud +GENERATED:value_marshalled contains_tpointcloud_tpcbox GENERATED:two_temporal_scalar contains_tpointcloud_tpointcloud GENERATED:temporal_x_box contains_tspatial_stbox GENERATED:two_temporal_scalar contains_tspatial_tspatial -GAP contains_tstzspan_temporal +GENERATED:value_marshalled contains_tstzspan_temporal GENERATED:two_static_values covers_cbuffer_cbuffer RESIDUE:internal-header cstring_to_text RESIDUE:aggregate date_extent_transfn @@ -528,9 +528,9 @@ GAP dateset_end_value RESIDUE:io dateset_in RESIDUE:constructor dateset_make RESIDUE:io dateset_out -GAP dateset_shift_scale +GENERATED:value_marshalled dateset_shift_scale GAP dateset_start_value -DEFERRED:category-conversion dateset_to_tstzset +GENERATED:value_marshalled dateset_to_tstzset GAP dateset_value_n GAP dateset_values GAP datespan_bins @@ -539,21 +539,21 @@ RESIDUE:io datespan_in GAP datespan_lower RESIDUE:constructor datespan_make RESIDUE:io datespan_out -GAP datespan_shift_scale -DEFERRED:category-conversion datespan_to_tstzspan +GENERATED:value_marshalled datespan_shift_scale +GENERATED:value_marshalled datespan_to_tstzspan GAP datespan_upper GAP datespanset_bins GAP datespanset_date_n -GAP datespanset_dates +GENERATED:value_marshalled datespanset_dates GAP datespanset_duration GAP datespanset_end_date RESIDUE:io datespanset_in GAP datespanset_lower -GAP datespanset_num_dates +GENERATED:value_marshalled datespanset_num_dates RESIDUE:io datespanset_out -GAP datespanset_shift_scale +GENERATED:value_marshalled datespanset_shift_scale GAP datespanset_start_date -DEFERRED:category-conversion datespanset_to_tstzspanset +GENERATED:value_marshalled datespanset_to_tstzspanset GAP datespanset_upper GENERATED:two_static_values disjoint_cbuffer_cbuffer GAP distance_bigintset_bigintset @@ -561,55 +561,55 @@ GAP distance_bigintspan_bigintspan GAP distance_bigintspanset_bigintspan GAP distance_bigintspanset_bigintspanset GENERATED:two_static_values distance_cbuffer_cbuffer -GAP distance_cbuffer_geo -GAP distance_cbuffer_stbox -GAP distance_dateset_dateset -GAP distance_datespan_datespan -GAP distance_datespanset_datespan -GAP distance_datespanset_datespanset -GAP distance_floatset_floatset -GAP distance_floatspan_floatspan -GAP distance_floatspanset_floatspan -GAP distance_floatspanset_floatspanset -GAP distance_intset_intset -GAP distance_intspan_intspan -GAP distance_intspanset_intspan -GAP distance_intspanset_intspanset -GAP distance_pose_geo +GENERATED:value_marshalled distance_cbuffer_geo +GENERATED:value_marshalled distance_cbuffer_stbox +GENERATED:value_marshalled distance_dateset_dateset +GENERATED:value_marshalled distance_datespan_datespan +GENERATED:value_marshalled distance_datespanset_datespan +GENERATED:value_marshalled distance_datespanset_datespanset +GENERATED:value_marshalled distance_floatset_floatset +GENERATED:value_marshalled distance_floatspan_floatspan +GENERATED:value_marshalled distance_floatspanset_floatspan +GENERATED:value_marshalled distance_floatspanset_floatspanset +GENERATED:value_marshalled distance_intset_intset +GENERATED:value_marshalled distance_intspan_intspan +GENERATED:value_marshalled distance_intspanset_intspan +GENERATED:value_marshalled distance_intspanset_intspanset +GENERATED:value_marshalled distance_pose_geo GENERATED:two_static_values distance_pose_pose -GAP distance_pose_stbox +GENERATED:value_marshalled distance_pose_stbox GAP distance_set_bigint GAP distance_set_date -GAP distance_set_float -GAP distance_set_int +GENERATED:value_marshalled distance_set_float +GENERATED:value_marshalled distance_set_int GAP distance_set_timestamptz GAP distance_span_bigint GAP distance_span_date -GAP distance_span_float -GAP distance_span_int +GENERATED:value_marshalled distance_span_float +GENERATED:value_marshalled distance_span_int GAP distance_span_timestamptz GAP distance_spanset_bigint GAP distance_spanset_date -GAP distance_spanset_float -GAP distance_spanset_int +GENERATED:value_marshalled distance_spanset_float +GENERATED:value_marshalled distance_spanset_int GAP distance_spanset_timestamptz -GAP distance_tstzset_tstzset -GAP distance_tstzspan_tstzspan -GAP distance_tstzspanset_tstzspan -GAP distance_tstzspanset_tstzspanset -GAP div_bigint_tbigint +GENERATED:value_marshalled distance_tstzset_tstzset +GENERATED:value_marshalled distance_tstzspan_tstzspan +GENERATED:value_marshalled distance_tstzspanset_tstzspan +GENERATED:value_marshalled distance_tstzspanset_tstzspanset +GENERATED:value_marshalled div_bigint_tbigint RESIDUE:internal-header div_float8_float8 -GAP div_float_tfloat +GENERATED:value_marshalled div_float_tfloat RESIDUE:internal-header div_int32_int32 RESIDUE:internal-header div_int64_int64 -GAP div_int_tint +GENERATED:value_marshalled div_int_tint RESIDUE:internal-header div_interval_float8 GENERATED:temporal_scalar_transform div_tbigint_bigint GENERATED:temporal_scalar_transform div_tfloat_float GENERATED:temporal_scalar_transform div_tint_int GENERATED:two_temporal_temporal div_tnumber_tnumber -GAP dwithin_cbuffer_cbuffer -GAP econtains_cbuffer_tcbuffer +GENERATED:value_marshalled dwithin_cbuffer_cbuffer +GENERATED:value_marshalled econtains_cbuffer_tcbuffer GENERATED:temporal_x_geom econtains_geo_tgeo GENERATED:geo_trgeometry_predicate econtains_geo_trgeometry GENERATED:sprel_scalar_existing econtains_tcbuffer_cbuffer @@ -617,7 +617,7 @@ GENERATED:temporal_x_geom econtains_tcbuffer_geo GENERATED:two_temporal_scalar econtains_tcbuffer_tcbuffer GENERATED:sprel_scalar_existing econtains_tgeo_geo GENERATED:two_temporal_scalar econtains_tgeo_tgeo -GAP ecovers_cbuffer_tcbuffer +GENERATED:value_marshalled ecovers_cbuffer_tcbuffer GENERATED:temporal_x_geom ecovers_geo_tcbuffer GENERATED:temporal_x_geom ecovers_geo_tgeo GENERATED:geo_trgeometry_predicate ecovers_geo_trgeometry @@ -636,11 +636,11 @@ RESIDUE:out-param-array edisjoint_tgeoarr_tgeoarr GENERATED:trgeometry_geo_predicate edisjoint_trgeometry_geo GENERATED:two_temporal_scalar edisjoint_trgeometry_trgeometry GAP edwithin_geo_tgeo -GAP edwithin_tcbuffer_cbuffer -GAP edwithin_tcbuffer_geo -GAP edwithin_tcbuffer_tcbuffer -GAP edwithin_tgeo_geo -GAP edwithin_tgeo_tgeo +GENERATED:value_marshalled edwithin_tcbuffer_cbuffer +GENERATED:value_marshalled edwithin_tcbuffer_geo +GENERATED:value_marshalled edwithin_tcbuffer_tcbuffer +GENERATED:value_marshalled edwithin_tgeo_geo +GENERATED:value_marshalled edwithin_tgeo_tgeo RESIDUE:out-param-array edwithin_tgeoarr_tgeoarr GENERATED:trgeometry_geo_dwithin edwithin_trgeometry_geo GENERATED:trgeometry_trgeometry_dwithin edwithin_trgeometry_trgeometry @@ -651,7 +651,7 @@ GENERATED:two_temporal_scalar eintersects_tcbuffer_tcbuffer GENERATED:sprel_scalar_existing eintersects_tgeo_geo GENERATED:two_temporal_scalar eintersects_tgeo_tgeo RESIDUE:out-param-array eintersects_tgeoarr_tgeoarr -GAP eintersects_tpcpoint_geo +GENERATED:value_marshalled eintersects_tpcpoint_geo GENERATED:trgeometry_geo_predicate eintersects_trgeometry_geo GENERATED:two_temporal_scalar eintersects_trgeometry_trgeometry RESIDUE:internal-header eq_date_date @@ -682,19 +682,19 @@ GENERATED:sprel_scalar_existing etouches_tpoint_geo GENERATED:trgeometry_geo_predicate etouches_trgeometry_geo GENERATED:cmp_scalar_scalarfirst ever_eq_bigint_tbigint GENERATED:cmp_scalar_scalarfirst ever_eq_bool_tbool -GAP ever_eq_cbuffer_tcbuffer +GENERATED:value_marshalled ever_eq_cbuffer_tcbuffer GENERATED:cmp_scalar_scalarfirst ever_eq_float_tfloat GENERATED:temporal_x_geom ever_eq_geo_tgeo GENERATED:geo_trgeometry_predicate ever_eq_geo_trgeometry GENERATED:cmp_scalar_scalarfirst ever_eq_h3index_th3index -GAP ever_eq_h3indexset_th3index +GENERATED:value_marshalled ever_eq_h3indexset_th3index GENERATED:cmp_scalar_scalarfirst ever_eq_int_tint -GAP ever_eq_jsonb_tjsonb -GAP ever_eq_npoint_tnpoint -GAP ever_eq_pcpatch_tpcpatch -GAP ever_eq_pcpoint_tpcpoint -GAP ever_eq_pose_tpose -GAP ever_eq_posechain_tposechain +GENERATED:value_marshalled ever_eq_jsonb_tjsonb +GENERATED:value_marshalled ever_eq_npoint_tnpoint +GENERATED:value_marshalled ever_eq_pcpatch_tpcpatch +GENERATED:value_marshalled ever_eq_pcpoint_tpcpoint +GENERATED:value_marshalled ever_eq_pose_tpose +GENERATED:value_marshalled ever_eq_posechain_tposechain GENERATED:cmp_scalar_scalarfirst ever_eq_quadbin_tquadbin GAP ever_eq_s2cell_ts2cell GENERATED:cmp_scalar_tempfirst ever_eq_tbigint_bigint @@ -709,17 +709,17 @@ GENERATED:two_temporal_scalar ever_eq_tgeo_tgeo GENERATED:cmp_scalar_tempfirst ever_eq_th3index_h3index GENERATED:two_temporal_scalar ever_eq_th3index_th3index GENERATED:cmp_scalar_tempfirst ever_eq_tint_int -GAP ever_eq_tjsonb_jsonb +GENERATED:value_marshalled ever_eq_tjsonb_jsonb GENERATED:two_temporal_scalar ever_eq_tjsonb_tjsonb -GAP ever_eq_tnpoint_npoint +GENERATED:value_marshalled ever_eq_tnpoint_npoint GENERATED:two_temporal_scalar ever_eq_tnpoint_tnpoint -GAP ever_eq_tpcpatch_pcpatch +GENERATED:value_marshalled ever_eq_tpcpatch_pcpatch GENERATED:two_temporal_scalar ever_eq_tpcpatch_tpcpatch -GAP ever_eq_tpcpoint_pcpoint +GENERATED:value_marshalled ever_eq_tpcpoint_pcpoint GENERATED:two_temporal_scalar ever_eq_tpcpoint_tpcpoint -GAP ever_eq_tpose_pose +GENERATED:value_marshalled ever_eq_tpose_pose GENERATED:two_temporal_scalar ever_eq_tpose_tpose -GAP ever_eq_tposechain_posechain +GENERATED:value_marshalled ever_eq_tposechain_posechain GENERATED:two_temporal_scalar ever_eq_tposechain_tposechain GENERATED:cmp_scalar_tempfirst ever_eq_tquadbin_quadbin GENERATED:two_temporal_scalar ever_eq_tquadbin_tquadbin @@ -766,18 +766,18 @@ GENERATED:cmp_scalar_tempfirst ever_lt_tint_int GAP ever_lt_ttext_text GENERATED:cmp_scalar_scalarfirst ever_ne_bigint_tbigint GENERATED:cmp_scalar_scalarfirst ever_ne_bool_tbool -GAP ever_ne_cbuffer_tcbuffer +GENERATED:value_marshalled ever_ne_cbuffer_tcbuffer GENERATED:cmp_scalar_scalarfirst ever_ne_float_tfloat GENERATED:temporal_x_geom ever_ne_geo_tgeo GENERATED:geo_trgeometry_predicate ever_ne_geo_trgeometry GENERATED:cmp_scalar_scalarfirst ever_ne_h3index_th3index GENERATED:cmp_scalar_scalarfirst ever_ne_int_tint -GAP ever_ne_jsonb_tjsonb -GAP ever_ne_npoint_tnpoint -GAP ever_ne_pcpatch_tpcpatch -GAP ever_ne_pcpoint_tpcpoint -GAP ever_ne_pose_tpose -GAP ever_ne_posechain_tposechain +GENERATED:value_marshalled ever_ne_jsonb_tjsonb +GENERATED:value_marshalled ever_ne_npoint_tnpoint +GENERATED:value_marshalled ever_ne_pcpatch_tpcpatch +GENERATED:value_marshalled ever_ne_pcpoint_tpcpoint +GENERATED:value_marshalled ever_ne_pose_tpose +GENERATED:value_marshalled ever_ne_posechain_tposechain GENERATED:cmp_scalar_scalarfirst ever_ne_quadbin_tquadbin GAP ever_ne_s2cell_ts2cell GENERATED:cmp_scalar_tempfirst ever_ne_tbigint_bigint @@ -792,17 +792,17 @@ GENERATED:two_temporal_scalar ever_ne_tgeo_tgeo GENERATED:cmp_scalar_tempfirst ever_ne_th3index_h3index GENERATED:two_temporal_scalar ever_ne_th3index_th3index GENERATED:cmp_scalar_tempfirst ever_ne_tint_int -GAP ever_ne_tjsonb_jsonb +GENERATED:value_marshalled ever_ne_tjsonb_jsonb GENERATED:two_temporal_scalar ever_ne_tjsonb_tjsonb -GAP ever_ne_tnpoint_npoint +GENERATED:value_marshalled ever_ne_tnpoint_npoint GENERATED:two_temporal_scalar ever_ne_tnpoint_tnpoint -GAP ever_ne_tpcpatch_pcpatch +GENERATED:value_marshalled ever_ne_tpcpatch_pcpatch GENERATED:two_temporal_scalar ever_ne_tpcpatch_tpcpatch -GAP ever_ne_tpcpoint_pcpoint +GENERATED:value_marshalled ever_ne_tpcpoint_pcpoint GENERATED:two_temporal_scalar ever_ne_tpcpoint_tpcpoint -GAP ever_ne_tpose_pose +GENERATED:value_marshalled ever_ne_tpose_pose GENERATED:two_temporal_scalar ever_ne_tpose_tpose -GAP ever_ne_tposechain_posechain +GENERATED:value_marshalled ever_ne_tposechain_posechain GENERATED:two_temporal_scalar ever_ne_tposechain_tposechain GENERATED:cmp_scalar_tempfirst ever_ne_tquadbin_quadbin GENERATED:two_temporal_scalar ever_ne_tquadbin_tquadbin @@ -837,50 +837,50 @@ DEFERRED:category-conversion float_to_set DEFERRED:category-conversion float_to_span DEFERRED:category-conversion float_to_spanset DEFERRED:category-conversion float_to_tbox -DEFERRED:category-conversion float_tstzspan_to_tbox +GENERATED:value_marshalled float_tstzspan_to_tbox RESIDUE:aggregate float_union_transfn -GAP floatset_ceil -GAP floatset_degrees -GAP floatset_end_value -GAP floatset_floor +GENERATED:value_marshalled floatset_ceil +GENERATED:value_marshalled floatset_degrees +GENERATED:value_marshalled floatset_end_value +GENERATED:value_marshalled floatset_floor RESIDUE:io floatset_in RESIDUE:constructor floatset_make RESIDUE:io floatset_out -GAP floatset_radians -GAP floatset_shift_scale -GAP floatset_start_value -DEFERRED:category-conversion floatset_to_intset +GENERATED:value_marshalled floatset_radians +GENERATED:value_marshalled floatset_shift_scale +GENERATED:value_marshalled floatset_start_value +GENERATED:value_marshalled floatset_to_intset GAP floatset_value_n GAP floatset_values GAP floatspan_bins -GAP floatspan_ceil -GAP floatspan_degrees -GAP floatspan_expand -GAP floatspan_floor +GENERATED:value_marshalled floatspan_ceil +GENERATED:value_marshalled floatspan_degrees +GENERATED:value_marshalled floatspan_expand +GENERATED:value_marshalled floatspan_floor RESIDUE:io floatspan_in -GAP floatspan_lower +GENERATED:value_marshalled floatspan_lower RESIDUE:constructor floatspan_make RESIDUE:io floatspan_out -GAP floatspan_radians -GAP floatspan_round -GAP floatspan_shift_scale -DEFERRED:category-conversion floatspan_to_bigintspan -DEFERRED:category-conversion floatspan_to_intspan -GAP floatspan_upper -GAP floatspan_width +GENERATED:value_marshalled floatspan_radians +GENERATED:value_marshalled floatspan_round +GENERATED:value_marshalled floatspan_shift_scale +GENERATED:value_marshalled floatspan_to_bigintspan +GENERATED:value_marshalled floatspan_to_intspan +GENERATED:value_marshalled floatspan_upper +GENERATED:value_marshalled floatspan_width GAP floatspanset_bins -GAP floatspanset_ceil -GAP floatspanset_degrees -GAP floatspanset_floor +GENERATED:value_marshalled floatspanset_ceil +GENERATED:value_marshalled floatspanset_degrees +GENERATED:value_marshalled floatspanset_floor RESIDUE:io floatspanset_in -GAP floatspanset_lower +GENERATED:value_marshalled floatspanset_lower RESIDUE:io floatspanset_out -GAP floatspanset_radians -GAP floatspanset_round -GAP floatspanset_shift_scale -DEFERRED:category-conversion floatspanset_to_intspanset -GAP floatspanset_upper -GAP floatspanset_width +GENERATED:value_marshalled floatspanset_radians +GENERATED:value_marshalled floatspanset_round +GENERATED:value_marshalled floatspanset_shift_scale +GENERATED:value_marshalled floatspanset_to_intspanset +GENERATED:value_marshalled floatspanset_upper +GENERATED:value_marshalled floatspanset_width GENERATED:two_static_values front_stbox_stbox GENERATED:temporal_x_box front_stbox_tspatial GENERATED:two_static_values front_tpcbox_tpcbox @@ -889,7 +889,7 @@ GENERATED:two_temporal_scalar front_tspatial_tspatial RESIDUE:io gbox_in RESIDUE:constructor gbox_make RESIDUE:io gbox_out -DEFERRED:category-conversion gbox_to_stbox +GENERATED:value_marshalled gbox_to_stbox RESIDUE:internal-header ge_date_date RESIDUE:internal-header ge_date_timestamp RESIDUE:internal-header ge_date_timestamptz @@ -1060,7 +1060,7 @@ RESIDUE:internal-header h3index_out DEFERRED:category-conversion h3index_timestamptz_to_stbox DEFERRED:category-conversion h3index_to_set DEFERRED:category-conversion h3index_to_stbox -DEFERRED:category-conversion h3index_tstzspan_to_stbox +GENERATED:value_marshalled h3index_tstzspan_to_stbox RESIDUE:internal-header int32_abs RESIDUE:internal-header int32_cmp RESIDUE:internal-header int32_hash @@ -1080,51 +1080,51 @@ DEFERRED:category-conversion int_to_set DEFERRED:category-conversion int_to_span DEFERRED:category-conversion int_to_spanset DEFERRED:category-conversion int_to_tbox -DEFERRED:category-conversion int_tstzspan_to_tbox +GENERATED:value_marshalled int_tstzspan_to_tbox RESIDUE:aggregate int_union_transfn -GAP intersection_bigint_set -GAP intersection_cbuffer_set +GENERATED:value_marshalled intersection_bigint_set +GENERATED:value_marshalled intersection_cbuffer_set GAP intersection_date_set -GAP intersection_float_set +GENERATED:value_marshalled intersection_float_set GAP intersection_geo_set -GAP intersection_int_set -GAP intersection_jsonb_set -GAP intersection_npoint_set -GAP intersection_pcpatch_set -GAP intersection_pcpoint_set -GAP intersection_pose_set -GAP intersection_posechain_set -GAP intersection_set_bigint -GAP intersection_set_cbuffer +GENERATED:value_marshalled intersection_int_set +GENERATED:value_marshalled intersection_jsonb_set +GENERATED:value_marshalled intersection_npoint_set +GENERATED:value_marshalled intersection_pcpatch_set +GENERATED:value_marshalled intersection_pcpoint_set +GENERATED:value_marshalled intersection_pose_set +GENERATED:value_marshalled intersection_posechain_set +GENERATED:value_marshalled intersection_set_bigint +GENERATED:value_marshalled intersection_set_cbuffer GAP intersection_set_date -GAP intersection_set_float -GAP intersection_set_geo -GAP intersection_set_int -GAP intersection_set_jsonb -GAP intersection_set_npoint -GAP intersection_set_pcpatch -GAP intersection_set_pcpoint -GAP intersection_set_pose -GAP intersection_set_posechain -GAP intersection_set_set +GENERATED:value_marshalled intersection_set_float +GENERATED:value_marshalled intersection_set_geo +GENERATED:value_marshalled intersection_set_int +GENERATED:value_marshalled intersection_set_jsonb +GENERATED:value_marshalled intersection_set_npoint +GENERATED:value_marshalled intersection_set_pcpatch +GENERATED:value_marshalled intersection_set_pcpoint +GENERATED:value_marshalled intersection_set_pose +GENERATED:value_marshalled intersection_set_posechain +GENERATED:value_marshalled intersection_set_set GAP intersection_set_text GAP intersection_set_timestamptz -GAP intersection_span_bigint +GENERATED:value_marshalled intersection_span_bigint GAP intersection_span_date -GAP intersection_span_float -GAP intersection_span_int -GAP intersection_span_span -GAP intersection_span_spanset +GENERATED:value_marshalled intersection_span_float +GENERATED:value_marshalled intersection_span_int +GENERATED:value_marshalled intersection_span_span +GENERATED:value_marshalled intersection_span_spanset GAP intersection_span_timestamptz -GAP intersection_spanset_bigint +GENERATED:value_marshalled intersection_spanset_bigint GAP intersection_spanset_date -GAP intersection_spanset_float -GAP intersection_spanset_int -GAP intersection_spanset_span -GAP intersection_spanset_spanset +GENERATED:value_marshalled intersection_spanset_float +GENERATED:value_marshalled intersection_spanset_int +GENERATED:value_marshalled intersection_spanset_span +GENERATED:value_marshalled intersection_spanset_spanset GAP intersection_spanset_timestamptz -GAP intersection_stbox_stbox -GAP intersection_tbox_tbox +GENERATED:value_marshalled intersection_stbox_stbox +GENERATED:value_marshalled intersection_tbox_tbox GAP intersection_text_set GAP intersection_timestamptz_set GAP intersection_tpcbox_tpcbox @@ -1154,34 +1154,34 @@ RESIDUE:internal-header interval_scale RESIDUE:internal-header interval_smaller RESIDUE:internal-header interval_to_time RESIDUE:internal-header interval_trunc -GAP intset_end_value +GENERATED:value_marshalled intset_end_value RESIDUE:io intset_in RESIDUE:constructor intset_make RESIDUE:io intset_out -GAP intset_shift_scale -GAP intset_start_value -DEFERRED:category-conversion intset_to_floatset +GENERATED:value_marshalled intset_shift_scale +GENERATED:value_marshalled intset_start_value +GENERATED:value_marshalled intset_to_floatset GAP intset_value_n GAP intset_values GAP intspan_bins GAP intspan_expand RESIDUE:io intspan_in -GAP intspan_lower +GENERATED:value_marshalled intspan_lower RESIDUE:constructor intspan_make RESIDUE:io intspan_out -GAP intspan_shift_scale -DEFERRED:category-conversion intspan_to_bigintspan -DEFERRED:category-conversion intspan_to_floatspan -GAP intspan_upper -GAP intspan_width +GENERATED:value_marshalled intspan_shift_scale +GENERATED:value_marshalled intspan_to_bigintspan +GENERATED:value_marshalled intspan_to_floatspan +GENERATED:value_marshalled intspan_upper +GENERATED:value_marshalled intspan_width GAP intspanset_bins RESIDUE:io intspanset_in -GAP intspanset_lower +GENERATED:value_marshalled intspanset_lower RESIDUE:io intspanset_out -GAP intspanset_shift_scale -DEFERRED:category-conversion intspanset_to_floatspanset -GAP intspanset_upper -GAP intspanset_width +GENERATED:value_marshalled intspanset_shift_scale +GENERATED:value_marshalled intspanset_to_floatspanset +GENERATED:value_marshalled intspanset_upper +GENERATED:value_marshalled intspanset_width GAP json_array_element GAP json_array_element_text GAP json_array_elements @@ -1204,7 +1204,7 @@ GAP jsonb_array_element GAP jsonb_array_element_text GAP jsonb_array_elements GAP jsonb_array_elements_text -GAP jsonb_array_length +GENERATED:value_marshalled jsonb_array_length GENERATED:two_static_values jsonb_cmp GAP jsonb_concat GENERATED:two_static_values jsonb_contained @@ -1237,8 +1237,8 @@ GAP jsonb_object_field GAP jsonb_object_field_text GAP jsonb_object_keys RESIDUE:io jsonb_out -GAP jsonb_path_exists -GAP jsonb_path_match +GENERATED:value_marshalled jsonb_path_exists +GENERATED:value_marshalled jsonb_path_match GAP jsonb_path_query_all GAP jsonb_path_query_array GAP jsonb_path_query_first @@ -1246,7 +1246,7 @@ GAP jsonb_pretty RESIDUE:out-param-array jsonb_set RESIDUE:out-param-array jsonb_set_lax GAP jsonb_strip_nulls -GAP jsonb_to_bool +GENERATED:value_marshalled jsonb_to_bool DEFERRED:category-conversion jsonb_to_cstring DEFERRED:category-conversion jsonb_to_float4 DEFERRED:category-conversion jsonb_to_float8 @@ -1254,14 +1254,14 @@ DEFERRED:category-conversion jsonb_to_int16 DEFERRED:category-conversion jsonb_to_int32 DEFERRED:category-conversion jsonb_to_int64 DEFERRED:category-conversion jsonb_to_numeric -DEFERRED:category-conversion jsonb_to_set +GENERATED:value_marshalled jsonb_to_set DEFERRED:category-conversion jsonb_to_text RESIDUE:aggregate jsonb_union_transfn GAP jsonbset_array_element -GAP jsonbset_array_length +GENERATED:value_marshalled jsonbset_array_length GAP jsonbset_delete RESIDUE:out-param-array jsonbset_delete_array -GAP jsonbset_delete_index +GENERATED:value_marshalled jsonbset_delete_index RESIDUE:out-param-array jsonbset_delete_path GAP jsonbset_end_value GAP jsonbset_exists @@ -1274,12 +1274,12 @@ GAP jsonbset_object_field RESIDUE:io jsonbset_out GAP jsonbset_path_exists GAP jsonbset_path_match -GAP jsonbset_path_query_array -GAP jsonbset_path_query_first -GAP jsonbset_pretty +GENERATED:value_marshalled jsonbset_path_query_array +GENERATED:value_marshalled jsonbset_path_query_first +GENERATED:value_marshalled jsonbset_pretty RESIDUE:out-param-array jsonbset_set GAP jsonbset_start_value -GAP jsonbset_strip_nulls +GENERATED:value_marshalled jsonbset_strip_nulls DEFERRED:category-conversion jsonbset_to_alphanumset DEFERRED:category-conversion jsonbset_to_bigintset DEFERRED:category-conversion jsonbset_to_floatset @@ -1303,37 +1303,37 @@ RESIDUE:internal-header le_timestamp_timestamp RESIDUE:internal-header le_timestamp_timestamptz RESIDUE:internal-header le_timestamptz_date RESIDUE:internal-header le_timestamptz_timestamp -GAP left_bigint_set -GAP left_bigint_span -GAP left_bigint_spanset -GAP left_float_set -GAP left_float_span -GAP left_float_spanset -GAP left_int_set -GAP left_int_span -GAP left_int_spanset -GAP left_numspan_tnumber -GAP left_set_bigint -GAP left_set_float -GAP left_set_int -GAP left_set_set +GENERATED:value_marshalled left_bigint_set +GENERATED:value_marshalled left_bigint_span +GENERATED:value_marshalled left_bigint_spanset +GENERATED:value_marshalled left_float_set +GENERATED:value_marshalled left_float_span +GENERATED:value_marshalled left_float_spanset +GENERATED:value_marshalled left_int_set +GENERATED:value_marshalled left_int_span +GENERATED:value_marshalled left_int_spanset +GENERATED:value_marshalled left_numspan_tnumber +GENERATED:value_marshalled left_set_bigint +GENERATED:value_marshalled left_set_float +GENERATED:value_marshalled left_set_int +GENERATED:value_marshalled left_set_set GAP left_set_text -GAP left_span_bigint -GAP left_span_float -GAP left_span_int -GAP left_span_span -GAP left_span_spanset -GAP left_spanset_bigint -GAP left_spanset_float -GAP left_spanset_int -GAP left_spanset_span -GAP left_spanset_spanset +GENERATED:value_marshalled left_span_bigint +GENERATED:value_marshalled left_span_float +GENERATED:value_marshalled left_span_int +GENERATED:value_marshalled left_span_span +GENERATED:value_marshalled left_span_spanset +GENERATED:value_marshalled left_spanset_bigint +GENERATED:value_marshalled left_spanset_float +GENERATED:value_marshalled left_spanset_int +GENERATED:value_marshalled left_spanset_span +GENERATED:value_marshalled left_spanset_spanset GENERATED:two_static_values left_stbox_stbox GENERATED:temporal_x_box left_stbox_tspatial GENERATED:two_static_values left_tbox_tbox GENERATED:temporal_x_box left_tbox_tnumber GAP left_text_set -GAP left_tnumber_numspan +GENERATED:value_marshalled left_tnumber_numspan GENERATED:temporal_x_box left_tnumber_tbox GENERATED:two_temporal_scalar left_tnumber_tnumber GENERATED:two_static_values left_tpcbox_tpcbox @@ -1401,13 +1401,13 @@ RESIDUE:lifecycle meos_set_pointcloud_schemas_xml RESIDUE:lifecycle meos_set_spatial_ref_sys_csv RESIDUE:lifecycle meos_set_ways_csv RESIDUE:lifecycle meos_version -GAP mindistance_tcbuffer_tcbuffer -GAP mindistance_tgeo_tgeo +GENERATED:value_marshalled mindistance_tcbuffer_tcbuffer +GENERATED:value_marshalled mindistance_tgeo_tgeo RESIDUE:out-param-array mindistance_tgeoarr_tgeoarr -GAP minus_bigint_set -GAP minus_bigint_span -GAP minus_bigint_spanset -GAP minus_cbuffer_set +GENERATED:value_marshalled minus_bigint_set +GENERATED:value_marshalled minus_bigint_span +GENERATED:value_marshalled minus_bigint_spanset +GENERATED:value_marshalled minus_cbuffer_set RESIDUE:internal-header minus_date_date RESIDUE:internal-header minus_date_int RESIDUE:internal-header minus_date_interval @@ -1415,50 +1415,50 @@ GAP minus_date_set GAP minus_date_span GAP minus_date_spanset RESIDUE:internal-header minus_float8_float8 -GAP minus_float_set -GAP minus_float_span -GAP minus_float_spanset +GENERATED:value_marshalled minus_float_set +GENERATED:value_marshalled minus_float_span +GENERATED:value_marshalled minus_float_spanset GAP minus_geo_set RESIDUE:internal-header minus_int32_int32 RESIDUE:internal-header minus_int64_int64 -GAP minus_int_set -GAP minus_int_span -GAP minus_int_spanset +GENERATED:value_marshalled minus_int_set +GENERATED:value_marshalled minus_int_span +GENERATED:value_marshalled minus_int_spanset RESIDUE:internal-header minus_interval_interval -GAP minus_jsonb_set -GAP minus_npoint_set -GAP minus_pcpatch_set -GAP minus_pcpoint_set -GAP minus_pose_set -GAP minus_posechain_set -GAP minus_set_bigint -GAP minus_set_cbuffer +GENERATED:value_marshalled minus_jsonb_set +GENERATED:value_marshalled minus_npoint_set +GENERATED:value_marshalled minus_pcpatch_set +GENERATED:value_marshalled minus_pcpoint_set +GENERATED:value_marshalled minus_pose_set +GENERATED:value_marshalled minus_posechain_set +GENERATED:value_marshalled minus_set_bigint +GENERATED:value_marshalled minus_set_cbuffer GAP minus_set_date -GAP minus_set_float -GAP minus_set_geo -GAP minus_set_int -GAP minus_set_jsonb -GAP minus_set_npoint -GAP minus_set_pcpatch -GAP minus_set_pcpoint -GAP minus_set_pose -GAP minus_set_posechain -GAP minus_set_set +GENERATED:value_marshalled minus_set_float +GENERATED:value_marshalled minus_set_geo +GENERATED:value_marshalled minus_set_int +GENERATED:value_marshalled minus_set_jsonb +GENERATED:value_marshalled minus_set_npoint +GENERATED:value_marshalled minus_set_pcpatch +GENERATED:value_marshalled minus_set_pcpoint +GENERATED:value_marshalled minus_set_pose +GENERATED:value_marshalled minus_set_posechain +GENERATED:value_marshalled minus_set_set GAP minus_set_text GAP minus_set_timestamptz -GAP minus_span_bigint +GENERATED:value_marshalled minus_span_bigint GAP minus_span_date -GAP minus_span_float -GAP minus_span_int -GAP minus_span_span -GAP minus_span_spanset +GENERATED:value_marshalled minus_span_float +GENERATED:value_marshalled minus_span_int +GENERATED:value_marshalled minus_span_span +GENERATED:value_marshalled minus_span_spanset GAP minus_span_timestamptz -GAP minus_spanset_bigint +GENERATED:value_marshalled minus_spanset_bigint GAP minus_spanset_date -GAP minus_spanset_float -GAP minus_spanset_int -GAP minus_spanset_span -GAP minus_spanset_spanset +GENERATED:value_marshalled minus_spanset_float +GENERATED:value_marshalled minus_spanset_int +GENERATED:value_marshalled minus_spanset_span +GENERATED:value_marshalled minus_spanset_spanset GAP minus_spanset_timestamptz GAP minus_text_set RESIDUE:internal-header minus_time_interval @@ -1474,22 +1474,22 @@ RESIDUE:internal-header minus_timestamptz_timestamptz RESIDUE:internal-header minus_timetz_interval GAP mobilitydb_full_version GAP mobilitydb_version -GAP mul_bigint_tbigint +GENERATED:value_marshalled mul_bigint_tbigint RESIDUE:internal-header mul_float8_float8 RESIDUE:internal-header mul_float8_interval -GAP mul_float_tfloat +GENERATED:value_marshalled mul_float_tfloat RESIDUE:internal-header mul_int32_int32 RESIDUE:internal-header mul_int64_int64 -GAP mul_int_tint +GENERATED:value_marshalled mul_int_tint RESIDUE:internal-header mul_interval_float8 GENERATED:temporal_scalar_transform mul_tbigint_bigint GENERATED:temporal_scalar_transform mul_tfloat_float GENERATED:temporal_scalar_transform mul_tint_int GENERATED:two_temporal_temporal mul_tnumber_tnumber -GAP nad_cbuffer_stbox -GAP nad_stbox_geo +GENERATED:value_marshalled nad_cbuffer_stbox +GENERATED:value_marshalled nad_stbox_geo GENERATED:two_static_values nad_stbox_stbox -GAP nad_stbox_trgeometry +GENERATED:value_marshalled nad_stbox_trgeometry GAP nad_tbigint_bigint GAP nad_tbigint_tbigint GAP nad_tbigint_tbox @@ -1510,19 +1510,19 @@ GENERATED:temporal_x_scalar nad_tint_int GENERATED:temporal_x_box nad_tint_tbox GENERATED:two_temporal_scalar nad_tint_tint GENERATED:temporal_x_geom nad_tnpoint_geo -GAP nad_tnpoint_npoint +GENERATED:value_marshalled nad_tnpoint_npoint GENERATED:temporal_x_box nad_tnpoint_stbox GENERATED:two_temporal_scalar nad_tnpoint_tnpoint RESIDUE:internal-header nad_tpcbox_tpcbox -GAP nad_tpcpoint_geo +GENERATED:value_marshalled nad_tpcpoint_geo RESIDUE:internal-header nad_tpointcloud_tpcbox RESIDUE:internal-header nad_tpointcloud_tpointcloud GENERATED:temporal_x_geom nad_tpose_geo -GAP nad_tpose_pose +GENERATED:value_marshalled nad_tpose_pose GENERATED:temporal_x_box nad_tpose_stbox GENERATED:two_temporal_scalar nad_tpose_tpose GENERATED:trgeometry_nad nad_trgeometry_geo -GAP nad_trgeometry_stbox +GENERATED:value_marshalled nad_trgeometry_stbox GENERATED:two_temporal_scalar nad_trgeometry_tpoint GENERATED:two_temporal_scalar nad_trgeometry_trgeometry GAP nai_tcbuffer_cbuffer @@ -1570,28 +1570,28 @@ GENERATED:two_static_values npoint_lt RESIDUE:constructor npoint_make GENERATED:two_static_values npoint_ne RESIDUE:io npoint_out -GAP npoint_position -GAP npoint_round +GENERATED:value_marshalled npoint_position +GENERATED:value_marshalled npoint_round GAP npoint_route GENERATED:two_static_values npoint_same GAP npoint_srid DEFERRED:category-conversion npoint_timestamptz_to_stbox DEFERRED:category-conversion npoint_to_geompoint DEFERRED:category-conversion npoint_to_nsegment -DEFERRED:category-conversion npoint_to_set -DEFERRED:category-conversion npoint_to_stbox -DEFERRED:category-conversion npoint_tstzspan_to_stbox +GENERATED:value_marshalled npoint_to_set +GENERATED:value_marshalled npoint_to_stbox +GENERATED:value_marshalled npoint_tstzspan_to_stbox RESIDUE:aggregate npoint_union_transfn -GAP npointset_end_value +GENERATED:value_marshalled npointset_end_value RESIDUE:io npointset_in RESIDUE:constructor npointset_make RESIDUE:io npointset_out -GAP npointset_routes -GAP npointset_start_value +GENERATED:value_marshalled npointset_routes +GENERATED:value_marshalled npointset_start_value RESIDUE:out-param-array npointset_value_n GAP npointset_values GENERATED:two_static_values nsegment_cmp -GAP nsegment_end_position +GENERATED:value_marshalled nsegment_end_position GENERATED:two_static_values nsegment_eq GENERATED:two_static_values nsegment_ge GENERATED:two_static_values nsegment_gt @@ -1604,12 +1604,12 @@ RESIDUE:io nsegment_out GAP nsegment_round GAP nsegment_route GAP nsegment_srid -GAP nsegment_start_position +GENERATED:value_marshalled nsegment_start_position DEFERRED:category-conversion nsegment_to_geom -DEFERRED:category-conversion nsegment_to_stbox +GENERATED:value_marshalled nsegment_to_stbox DEFERRED:category-conversion null_handle_type_from_string DEFERRED:category-conversion numspan_timestamptz_to_tbox -DEFERRED:category-conversion numspan_tstzspan_to_tbox +GENERATED:value_marshalled numspan_tstzspan_to_tbox GENERATED:two_static_values overabove_stbox_stbox GENERATED:temporal_x_box overabove_stbox_tspatial GENERATED:two_static_values overabove_tpcbox_tpcbox @@ -1638,7 +1638,7 @@ GENERATED:two_temporal_scalar overafter_tnumber_tnumber GENERATED:two_static_values overafter_tpcbox_tpcbox GENERATED:temporal_x_box overafter_tspatial_stbox GENERATED:two_temporal_scalar overafter_tspatial_tspatial -GAP overafter_tstzspan_temporal +GENERATED:value_marshalled overafter_tstzspan_temporal GENERATED:two_static_values overback_stbox_stbox GENERATED:temporal_x_box overback_stbox_tspatial GENERATED:two_static_values overback_tpcbox_tpcbox @@ -1667,7 +1667,7 @@ GENERATED:two_temporal_scalar overbefore_tnumber_tnumber GENERATED:two_static_values overbefore_tpcbox_tpcbox GENERATED:temporal_x_box overbefore_tspatial_stbox GENERATED:two_temporal_scalar overbefore_tspatial_tspatial -GAP overbefore_tstzspan_temporal +GENERATED:value_marshalled overbefore_tstzspan_temporal GENERATED:two_static_values overbelow_stbox_stbox GENERATED:temporal_x_box overbelow_stbox_tspatial GENERATED:two_static_values overbelow_tpcbox_tpcbox @@ -1678,159 +1678,159 @@ GENERATED:temporal_x_box overfront_stbox_tspatial GENERATED:two_static_values overfront_tpcbox_tpcbox GENERATED:temporal_x_box overfront_tspatial_stbox GENERATED:two_temporal_scalar overfront_tspatial_tspatial -GAP overlaps_numspan_tnumber -GAP overlaps_set_set -GAP overlaps_span_span -GAP overlaps_span_spanset -GAP overlaps_spanset_span -GAP overlaps_spanset_spanset +GENERATED:value_marshalled overlaps_numspan_tnumber +GENERATED:value_marshalled overlaps_set_set +GENERATED:value_marshalled overlaps_span_span +GENERATED:value_marshalled overlaps_span_spanset +GENERATED:value_marshalled overlaps_spanset_span +GENERATED:value_marshalled overlaps_spanset_spanset GENERATED:two_static_values overlaps_stbox_stbox GENERATED:temporal_x_box overlaps_stbox_tspatial GENERATED:two_static_values overlaps_tbox_tbox GENERATED:temporal_x_box overlaps_tbox_tnumber GENERATED:two_temporal_scalar overlaps_temporal_temporal GENERATED:temporal_x_box overlaps_temporal_tstzspan -GAP overlaps_tnumber_numspan +GENERATED:value_marshalled overlaps_tnumber_numspan GENERATED:temporal_x_box overlaps_tnumber_tbox GENERATED:two_temporal_scalar overlaps_tnumber_tnumber GENERATED:two_static_values overlaps_tpcbox_tpcbox -GAP overlaps_tpcbox_tpointcloud -GAP overlaps_tpointcloud_tpcbox +GENERATED:value_marshalled overlaps_tpcbox_tpointcloud +GENERATED:value_marshalled overlaps_tpointcloud_tpcbox GENERATED:two_temporal_scalar overlaps_tpointcloud_tpointcloud GENERATED:temporal_x_box overlaps_tspatial_stbox GENERATED:two_temporal_scalar overlaps_tspatial_tspatial -GAP overlaps_tstzspan_temporal -GAP overleft_bigint_set -GAP overleft_bigint_span -GAP overleft_bigint_spanset -GAP overleft_float_set -GAP overleft_float_span -GAP overleft_float_spanset -GAP overleft_int_set -GAP overleft_int_span -GAP overleft_int_spanset -GAP overleft_numspan_tnumber -GAP overleft_set_bigint -GAP overleft_set_float -GAP overleft_set_int -GAP overleft_set_set +GENERATED:value_marshalled overlaps_tstzspan_temporal +GENERATED:value_marshalled overleft_bigint_set +GENERATED:value_marshalled overleft_bigint_span +GENERATED:value_marshalled overleft_bigint_spanset +GENERATED:value_marshalled overleft_float_set +GENERATED:value_marshalled overleft_float_span +GENERATED:value_marshalled overleft_float_spanset +GENERATED:value_marshalled overleft_int_set +GENERATED:value_marshalled overleft_int_span +GENERATED:value_marshalled overleft_int_spanset +GENERATED:value_marshalled overleft_numspan_tnumber +GENERATED:value_marshalled overleft_set_bigint +GENERATED:value_marshalled overleft_set_float +GENERATED:value_marshalled overleft_set_int +GENERATED:value_marshalled overleft_set_set GAP overleft_set_text -GAP overleft_span_bigint -GAP overleft_span_float -GAP overleft_span_int -GAP overleft_span_span -GAP overleft_span_spanset -GAP overleft_spanset_bigint -GAP overleft_spanset_float -GAP overleft_spanset_int -GAP overleft_spanset_span -GAP overleft_spanset_spanset +GENERATED:value_marshalled overleft_span_bigint +GENERATED:value_marshalled overleft_span_float +GENERATED:value_marshalled overleft_span_int +GENERATED:value_marshalled overleft_span_span +GENERATED:value_marshalled overleft_span_spanset +GENERATED:value_marshalled overleft_spanset_bigint +GENERATED:value_marshalled overleft_spanset_float +GENERATED:value_marshalled overleft_spanset_int +GENERATED:value_marshalled overleft_spanset_span +GENERATED:value_marshalled overleft_spanset_spanset GENERATED:two_static_values overleft_stbox_stbox GENERATED:temporal_x_box overleft_stbox_tspatial GENERATED:two_static_values overleft_tbox_tbox GENERATED:temporal_x_box overleft_tbox_tnumber GAP overleft_text_set -GAP overleft_tnumber_numspan +GENERATED:value_marshalled overleft_tnumber_numspan GENERATED:temporal_x_box overleft_tnumber_tbox GENERATED:two_temporal_scalar overleft_tnumber_tnumber GENERATED:two_static_values overleft_tpcbox_tpcbox GENERATED:temporal_x_box overleft_tspatial_stbox GENERATED:two_temporal_scalar overleft_tspatial_tspatial -GAP overright_bigint_set -GAP overright_bigint_span -GAP overright_bigint_spanset -GAP overright_float_set -GAP overright_float_span -GAP overright_float_spanset -GAP overright_int_set -GAP overright_int_span -GAP overright_int_spanset -GAP overright_numspan_tnumber -GAP overright_set_bigint -GAP overright_set_float -GAP overright_set_int -GAP overright_set_set +GENERATED:value_marshalled overright_bigint_set +GENERATED:value_marshalled overright_bigint_span +GENERATED:value_marshalled overright_bigint_spanset +GENERATED:value_marshalled overright_float_set +GENERATED:value_marshalled overright_float_span +GENERATED:value_marshalled overright_float_spanset +GENERATED:value_marshalled overright_int_set +GENERATED:value_marshalled overright_int_span +GENERATED:value_marshalled overright_int_spanset +GENERATED:value_marshalled overright_numspan_tnumber +GENERATED:value_marshalled overright_set_bigint +GENERATED:value_marshalled overright_set_float +GENERATED:value_marshalled overright_set_int +GENERATED:value_marshalled overright_set_set GAP overright_set_text -GAP overright_span_bigint -GAP overright_span_float -GAP overright_span_int -GAP overright_span_span -GAP overright_span_spanset -GAP overright_spanset_bigint -GAP overright_spanset_float -GAP overright_spanset_int -GAP overright_spanset_span -GAP overright_spanset_spanset +GENERATED:value_marshalled overright_span_bigint +GENERATED:value_marshalled overright_span_float +GENERATED:value_marshalled overright_span_int +GENERATED:value_marshalled overright_span_span +GENERATED:value_marshalled overright_span_spanset +GENERATED:value_marshalled overright_spanset_bigint +GENERATED:value_marshalled overright_spanset_float +GENERATED:value_marshalled overright_spanset_int +GENERATED:value_marshalled overright_spanset_span +GENERATED:value_marshalled overright_spanset_spanset GENERATED:two_static_values overright_stbox_stbox GENERATED:temporal_x_box overright_stbox_tspatial GENERATED:two_static_values overright_tbox_tbox GENERATED:temporal_x_box overright_tbox_tnumber GAP overright_text_set -GAP overright_tnumber_numspan +GENERATED:value_marshalled overright_tnumber_numspan GENERATED:temporal_x_box overright_tnumber_tbox GENERATED:two_temporal_scalar overright_tnumber_tnumber GENERATED:two_static_values overright_tpcbox_tpcbox GENERATED:temporal_x_box overright_tspatial_stbox GENERATED:two_temporal_scalar overright_tspatial_tspatial RESIDUE:io pcpatch_as_hexwkb -GAP pcpatch_cmp +GENERATED:value_marshalled pcpatch_cmp RESIDUE:constructor pcpatch_copy -GAP pcpatch_eq +GENERATED:value_marshalled pcpatch_eq RESIDUE:io pcpatch_from_hexwkb -GAP pcpatch_ge +GENERATED:value_marshalled pcpatch_ge GAP pcpatch_get_pcid -GAP pcpatch_gt +GENERATED:value_marshalled pcpatch_gt GAP pcpatch_hash GAP pcpatch_hash_extended RESIDUE:io pcpatch_hex_in RESIDUE:io pcpatch_hex_out -GAP pcpatch_le -GAP pcpatch_lt +GENERATED:value_marshalled pcpatch_le +GENERATED:value_marshalled pcpatch_lt RESIDUE:constructor pcpatch_make GAP pcpatch_make_coords -GAP pcpatch_ne +GENERATED:value_marshalled pcpatch_ne GAP pcpatch_npoints -GAP pcpatch_point_n +GENERATED:value_marshalled pcpatch_point_n GAP pcpatch_points DEFERRED:category-conversion pcpatch_to_geom -DEFERRED:category-conversion pcpatch_to_set +GENERATED:value_marshalled pcpatch_to_set DEFERRED:category-conversion pcpatch_to_tpcbox RESIDUE:aggregate pcpatch_union_transfn -GAP pcpatchset_end_value +GENERATED:value_marshalled pcpatchset_end_value RESIDUE:io pcpatchset_in RESIDUE:constructor pcpatchset_make RESIDUE:io pcpatchset_out -GAP pcpatchset_start_value +GENERATED:value_marshalled pcpatchset_start_value RESIDUE:out-param-array pcpatchset_value_n GAP pcpatchset_values RESIDUE:io pcpoint_as_hexwkb -GAP pcpoint_cmp +GENERATED:value_marshalled pcpoint_cmp RESIDUE:constructor pcpoint_copy -GAP pcpoint_eq +GENERATED:value_marshalled pcpoint_eq RESIDUE:io pcpoint_from_hexwkb -GAP pcpoint_ge +GENERATED:value_marshalled pcpoint_ge GAP pcpoint_get_dim GAP pcpoint_get_pcid GAP pcpoint_get_x GAP pcpoint_get_y GAP pcpoint_get_z -GAP pcpoint_gt +GENERATED:value_marshalled pcpoint_gt GAP pcpoint_hash GAP pcpoint_hash_extended RESIDUE:io pcpoint_hex_in RESIDUE:io pcpoint_hex_out -GAP pcpoint_le -GAP pcpoint_lt +GENERATED:value_marshalled pcpoint_le +GENERATED:value_marshalled pcpoint_lt RESIDUE:constructor pcpoint_make -GAP pcpoint_ne -DEFERRED:category-conversion pcpoint_to_set +GENERATED:value_marshalled pcpoint_ne +GENERATED:value_marshalled pcpoint_to_set DEFERRED:category-conversion pcpoint_to_tpcbox RESIDUE:aggregate pcpoint_union_transfn -GAP pcpointset_end_value +GENERATED:value_marshalled pcpointset_end_value RESIDUE:io pcpointset_in RESIDUE:constructor pcpointset_make RESIDUE:io pcpointset_out -GAP pcpointset_start_value +GENERATED:value_marshalled pcpointset_start_value RESIDUE:out-param-array pcpointset_value_n GAP pcpointset_values RESIDUE:internal-header plus_time_interval @@ -1843,8 +1843,8 @@ RESIDUE:io pose_as_hexwkb RESIDUE:io pose_as_text RESIDUE:io pose_as_wkb GENERATED:two_static_values pose_cmp -GAP pose_compose -GAP pose_compose_tpose +GENERATED:value_marshalled pose_compose +GENERATED:value_marshalled pose_compose_tpose RESIDUE:constructor pose_copy GENERATED:two_static_values pose_eq DEFERRED:category-conversion pose_from_geopose @@ -1855,7 +1855,7 @@ GENERATED:two_static_values pose_gt GAP pose_hash GAP pose_hash_extended RESIDUE:io pose_in -GAP pose_inverse +GENERATED:value_marshalled pose_inverse GENERATED:two_static_values pose_le GENERATED:two_static_values pose_lt GAP pose_make_2d @@ -1864,36 +1864,36 @@ GAP pose_make_point2d GAP pose_make_point3d GAP pose_make_point3d_ypr GENERATED:two_static_values pose_ne -GAP pose_normalize +GENERATED:value_marshalled pose_normalize GENERATED:two_static_values pose_nsame RESIDUE:io pose_out -GAP pose_pitch +GENERATED:value_marshalled pose_pitch GAP pose_quaternion -GAP pose_roll -GAP pose_round +GENERATED:value_marshalled pose_roll +GENERATED:value_marshalled pose_round GENERATED:two_static_values pose_same GAP pose_set_srid GAP pose_srid DEFERRED:category-conversion pose_timestamptz_to_stbox DEFERRED:category-conversion pose_to_point -DEFERRED:category-conversion pose_to_posechain -DEFERRED:category-conversion pose_to_set -DEFERRED:category-conversion pose_to_stbox +GENERATED:value_marshalled pose_to_posechain +GENERATED:value_marshalled pose_to_set +GENERATED:value_marshalled pose_to_stbox GAP pose_transform GAP pose_transform_pipeline -DEFERRED:category-conversion pose_tstzspan_to_stbox +GENERATED:value_marshalled pose_tstzspan_to_stbox RESIDUE:aggregate pose_union_transfn -GAP pose_yaw +GENERATED:value_marshalled pose_yaw GAP pose_ypr RESIDUE:out-param-array posearr_round -GAP posechain_append +GENERATED:value_marshalled posechain_append RESIDUE:io posechain_as_ewkt RESIDUE:io posechain_as_hexwkb RESIDUE:io posechain_as_text RESIDUE:io posechain_as_wkb GENERATED:two_static_values posechain_cmp RESIDUE:constructor posechain_copy -GAP posechain_end_pose +GENERATED:value_marshalled posechain_end_pose GENERATED:two_static_values posechain_eq RESIDUE:io posechain_from_hexwkb RESIDUE:io posechain_from_wkb @@ -1907,37 +1907,37 @@ GENERATED:two_static_values posechain_lt RESIDUE:constructor posechain_make GENERATED:two_static_values posechain_ne GENERATED:two_static_values posechain_nsame -GAP posechain_num_poses +GENERATED:value_marshalled posechain_num_poses RESIDUE:io posechain_out -GAP posechain_pose_n +GENERATED:value_marshalled posechain_pose_n GAP posechain_poses -GAP posechain_prefix_pose -GAP posechain_round +GENERATED:value_marshalled posechain_prefix_pose +GENERATED:value_marshalled posechain_round GENERATED:two_static_values posechain_same GAP posechain_set_srid GAP posechain_srid -GAP posechain_start_pose +GENERATED:value_marshalled posechain_start_pose DEFERRED:category-conversion posechain_timestamptz_to_stbox DEFERRED:category-conversion posechain_to_point -DEFERRED:category-conversion posechain_to_pose -DEFERRED:category-conversion posechain_to_set -DEFERRED:category-conversion posechain_to_stbox +GENERATED:value_marshalled posechain_to_pose +GENERATED:value_marshalled posechain_to_set +GENERATED:value_marshalled posechain_to_stbox GAP posechain_transform GAP posechain_transform_pipeline -DEFERRED:category-conversion posechain_tstzspan_to_stbox +GENERATED:value_marshalled posechain_tstzspan_to_stbox RESIDUE:aggregate posechain_union_transfn -GAP posechainset_end_value +GENERATED:value_marshalled posechainset_end_value RESIDUE:io posechainset_in RESIDUE:constructor posechainset_make RESIDUE:io posechainset_out -GAP posechainset_start_value +GENERATED:value_marshalled posechainset_start_value RESIDUE:out-param-array posechainset_value_n GAP posechainset_values -GAP poseset_end_value +GENERATED:value_marshalled poseset_end_value RESIDUE:io poseset_in RESIDUE:constructor poseset_make RESIDUE:io poseset_out -GAP poseset_start_value +GENERATED:value_marshalled poseset_start_value RESIDUE:out-param-array poseset_value_n GAP poseset_values GAP quadbin_cell_area @@ -1971,7 +1971,7 @@ DEFERRED:category-conversion quadbin_tile_to_cell DEFERRED:category-conversion quadbin_timestamptz_to_stbox DEFERRED:category-conversion quadbin_to_set DEFERRED:category-conversion quadbin_to_stbox -DEFERRED:category-conversion quadbin_tstzspan_to_stbox +GENERATED:value_marshalled quadbin_tstzspan_to_stbox RESIDUE:io raquet_as_hexwkb RESIDUE:io raquet_as_wkb GENERATED:two_static_values raquet_cmp @@ -1983,13 +1983,13 @@ GENERATED:two_static_values raquet_ge GENERATED:two_static_values raquet_gt GAP raquet_hash GAP raquet_hash_extended -GAP raquet_height +GENERATED:value_marshalled raquet_height RESIDUE:io raquet_in GENERATED:two_static_values raquet_le GENERATED:two_static_values raquet_lt RESIDUE:constructor raquet_make GENERATED:two_static_values raquet_ne -GAP raquet_nodata +GENERATED:value_marshalled raquet_nodata RESIDUE:io raquet_out GAP raquet_pixels GAP raquet_pixtype @@ -1998,8 +1998,8 @@ GAP raquet_pixtype_size GAP raquet_quadbin GAP raquet_read GAP raquet_read_bytes -DEFERRED:category-conversion raquet_to_stbox -GAP raquet_width +GENERATED:value_marshalled raquet_to_stbox +GENERATED:value_marshalled raquet_width RESIDUE:io raster_as_hexwkb RESIDUE:io raster_as_wkb GAP raster_at_value @@ -2008,43 +2008,43 @@ RESIDUE:io raster_from_hexwkb RESIDUE:io raster_from_wkb GAP raster_minus_value GAP raster_minus_value_gdal -GAP raster_num_bands -GAP raster_tile_value +GENERATED:value_marshalled raster_num_bands +GENERATED:value_marshalled raster_tile_value RESIDUE:out-param-array raster_tile_value_array GAP raster_tile_value_quadbin GAP raster_value GAP raster_value_gdal -GAP right_bigint_set -GAP right_bigint_span -GAP right_bigint_spanset -GAP right_float_set -GAP right_float_span -GAP right_float_spanset -GAP right_int_set -GAP right_int_span -GAP right_int_spanset -GAP right_numspan_tnumber -GAP right_set_bigint -GAP right_set_float -GAP right_set_int -GAP right_set_set +GENERATED:value_marshalled right_bigint_set +GENERATED:value_marshalled right_bigint_span +GENERATED:value_marshalled right_bigint_spanset +GENERATED:value_marshalled right_float_set +GENERATED:value_marshalled right_float_span +GENERATED:value_marshalled right_float_spanset +GENERATED:value_marshalled right_int_set +GENERATED:value_marshalled right_int_span +GENERATED:value_marshalled right_int_spanset +GENERATED:value_marshalled right_numspan_tnumber +GENERATED:value_marshalled right_set_bigint +GENERATED:value_marshalled right_set_float +GENERATED:value_marshalled right_set_int +GENERATED:value_marshalled right_set_set GAP right_set_text -GAP right_span_bigint -GAP right_span_float -GAP right_span_int -GAP right_span_span -GAP right_span_spanset -GAP right_spanset_bigint -GAP right_spanset_float -GAP right_spanset_int -GAP right_spanset_span -GAP right_spanset_spanset +GENERATED:value_marshalled right_span_bigint +GENERATED:value_marshalled right_span_float +GENERATED:value_marshalled right_span_int +GENERATED:value_marshalled right_span_span +GENERATED:value_marshalled right_span_spanset +GENERATED:value_marshalled right_spanset_bigint +GENERATED:value_marshalled right_spanset_float +GENERATED:value_marshalled right_spanset_int +GENERATED:value_marshalled right_spanset_span +GENERATED:value_marshalled right_spanset_spanset GENERATED:two_static_values right_stbox_stbox GENERATED:temporal_x_box right_stbox_tspatial GENERATED:two_static_values right_tbox_tbox GENERATED:temporal_x_box right_tbox_tnumber GAP right_text_set -GAP right_tnumber_numspan +GENERATED:value_marshalled right_tnumber_numspan GENERATED:temporal_x_box right_tnumber_tbox GENERATED:two_temporal_scalar right_tnumber_tnumber GENERATED:two_static_values right_tpcbox_tpcbox @@ -2110,47 +2110,47 @@ DEFERRED:category-conversion s2cell_to_set DEFERRED:category-conversion s2cell_to_stbox DEFERRED:category-conversion s2cell_token_to_cell DEFERRED:category-conversion s2cell_tstzspan_to_stbox -GAP same_numspan_tnumber -GAP same_span_span +GENERATED:value_marshalled same_numspan_tnumber +GENERATED:value_marshalled same_span_span GENERATED:two_static_values same_stbox_stbox GENERATED:temporal_x_box same_stbox_tspatial GENERATED:two_static_values same_tbox_tbox GENERATED:temporal_x_box same_tbox_tnumber GENERATED:two_temporal_scalar same_temporal_temporal GENERATED:temporal_x_box same_temporal_tstzspan -GAP same_tnumber_numspan +GENERATED:value_marshalled same_tnumber_numspan GENERATED:temporal_x_box same_tnumber_tbox GENERATED:two_temporal_scalar same_tnumber_tnumber GENERATED:two_static_values same_tpcbox_tpcbox -GAP same_tpcbox_tpointcloud -GAP same_tpointcloud_tpcbox +GENERATED:value_marshalled same_tpcbox_tpointcloud +GENERATED:value_marshalled same_tpointcloud_tpcbox GENERATED:two_temporal_scalar same_tpointcloud_tpointcloud GENERATED:temporal_x_box same_tspatial_stbox GENERATED:two_temporal_scalar same_tspatial_tspatial -GAP same_tstzspan_temporal +GENERATED:value_marshalled same_tstzspan_temporal RESIDUE:io set_as_hexwkb RESIDUE:io set_as_wkb -GAP set_cmp +GENERATED:value_marshalled set_cmp RESIDUE:constructor set_copy -GAP set_eq +GENERATED:value_marshalled set_eq RESIDUE:aggregate set_extent_transfn RESIDUE:io set_from_hexwkb RESIDUE:io set_from_wkb -GAP set_ge -GAP set_gt +GENERATED:value_marshalled set_ge +GENERATED:value_marshalled set_gt GAP set_hash GAP set_hash_extended -GAP set_le -GAP set_lt -GAP set_ne -GAP set_num_values -GAP set_round +GENERATED:value_marshalled set_le +GENERATED:value_marshalled set_lt +GENERATED:value_marshalled set_ne +GENERATED:value_marshalled set_num_values +GENERATED:value_marshalled set_round GAP set_spans GAP set_split_each_n_spans GAP set_split_n_spans -DEFERRED:category-conversion set_to_span -DEFERRED:category-conversion set_to_spanset -DEFERRED:category-conversion set_to_tbox +GENERATED:value_marshalled set_to_span +GENERATED:value_marshalled set_to_spanset +GENERATED:value_marshalled set_to_tbox RESIDUE:aggregate set_union_finalfn RESIDUE:aggregate set_union_transfn GAP shortestline_tcbuffer_cbuffer @@ -2169,60 +2169,60 @@ GAP shortestline_trgeometry_tpoint GAP shortestline_trgeometry_trgeometry RESIDUE:io span_as_hexwkb RESIDUE:io span_as_wkb -GAP span_cmp +GENERATED:value_marshalled span_cmp RESIDUE:constructor span_copy -GAP span_eq +GENERATED:value_marshalled span_eq RESIDUE:aggregate span_extent_transfn RESIDUE:io span_from_hexwkb RESIDUE:io span_from_wkb -GAP span_ge -GAP span_gt +GENERATED:value_marshalled span_ge +GENERATED:value_marshalled span_gt GAP span_hash GAP span_hash_extended -GAP span_le -GAP span_lower_inc -GAP span_lt -GAP span_ne -DEFERRED:category-conversion span_to_spanset -DEFERRED:category-conversion span_to_tbox +GENERATED:value_marshalled span_le +GENERATED:value_marshalled span_lower_inc +GENERATED:value_marshalled span_lt +GENERATED:value_marshalled span_ne +GENERATED:value_marshalled span_to_spanset +GENERATED:value_marshalled span_to_tbox RESIDUE:aggregate span_union_transfn -GAP span_upper_inc +GENERATED:value_marshalled span_upper_inc RESIDUE:io spanset_as_hexwkb RESIDUE:io spanset_as_wkb -GAP spanset_cmp +GENERATED:value_marshalled spanset_cmp RESIDUE:constructor spanset_copy -GAP spanset_end_span -GAP spanset_eq +GENERATED:value_marshalled spanset_end_span +GENERATED:value_marshalled spanset_eq RESIDUE:aggregate spanset_extent_transfn RESIDUE:io spanset_from_hexwkb RESIDUE:io spanset_from_wkb -GAP spanset_ge -GAP spanset_gt +GENERATED:value_marshalled spanset_ge +GENERATED:value_marshalled spanset_gt GAP spanset_hash GAP spanset_hash_extended -GAP spanset_le -GAP spanset_lower_inc -GAP spanset_lt +GENERATED:value_marshalled spanset_le +GENERATED:value_marshalled spanset_lower_inc +GENERATED:value_marshalled spanset_lt RESIDUE:constructor spanset_make -GAP spanset_ne -GAP spanset_num_spans -GAP spanset_span -GAP spanset_span_n +GENERATED:value_marshalled spanset_ne +GENERATED:value_marshalled spanset_num_spans +GENERATED:value_marshalled spanset_span +GENERATED:value_marshalled spanset_span_n GAP spanset_spanarr GAP spanset_spans GAP spanset_split_each_n_spans GAP spanset_split_n_spans -GAP spanset_start_span -DEFERRED:category-conversion spanset_to_tbox +GENERATED:value_marshalled spanset_start_span +GENERATED:value_marshalled spanset_to_tbox RESIDUE:aggregate spanset_union_finalfn RESIDUE:aggregate spanset_union_transfn -GAP spanset_upper_inc +GENERATED:value_marshalled spanset_upper_inc RESIDUE:io spatialset_as_ewkt RESIDUE:io spatialset_as_text RESIDUE:io spatialset_out GAP spatialset_set_srid GAP spatialset_srid -DEFERRED:category-conversion spatialset_to_stbox +GENERATED:value_marshalled spatialset_to_stbox GAP spatialset_transform GAP spatialset_transform_pipeline GAP sptree_create_bigintspan @@ -2247,39 +2247,39 @@ GAP sptree_nn_cursor_open GAP sptree_num_entries GAP sptree_search GAP sptree_search_temporal -GAP stbox_area +GENERATED:value_marshalled stbox_area RESIDUE:io stbox_as_hexwkb RESIDUE:io stbox_as_wkb GENERATED:two_static_values stbox_cmp RESIDUE:constructor stbox_copy GENERATED:two_static_values stbox_eq -GAP stbox_expand_space -GAP stbox_expand_time +GENERATED:value_marshalled stbox_expand_space +GENERATED:value_marshalled stbox_expand_time RESIDUE:io stbox_from_hexwkb RESIDUE:io stbox_from_wkb GENERATED:two_static_values stbox_ge -GAP stbox_get_space +GENERATED:value_marshalled stbox_get_space GAP stbox_get_space_tile GAP stbox_get_space_time_tile GAP stbox_get_time_tile GENERATED:two_static_values stbox_gt GAP stbox_hash GAP stbox_hash_extended -GAP stbox_hast -GAP stbox_hasx -GAP stbox_hasz +GENERATED:value_marshalled stbox_hast +GENERATED:value_marshalled stbox_hasx +GENERATED:value_marshalled stbox_hasz RESIDUE:io stbox_in -GAP stbox_isgeodetic +GENERATED:value_marshalled stbox_isgeodetic GENERATED:two_static_values stbox_le GENERATED:two_static_values stbox_lt RESIDUE:constructor stbox_make GENERATED:two_static_values stbox_ne RESIDUE:io stbox_out -GAP stbox_perimeter +GENERATED:value_marshalled stbox_perimeter GAP stbox_quad_split -GAP stbox_round +GENERATED:value_marshalled stbox_round GAP stbox_set_srid -GAP stbox_shift_scale_time +GENERATED:value_marshalled stbox_shift_scale_time GAP stbox_space_tiles GAP stbox_space_time_tiles GENERATED:two_static_values stbox_spatial_distance @@ -2292,36 +2292,36 @@ GAP stbox_tmin_inc DEFERRED:category-conversion stbox_to_box3d DEFERRED:category-conversion stbox_to_gbox DEFERRED:category-conversion stbox_to_geo -DEFERRED:category-conversion stbox_to_tstzspan +GENERATED:value_marshalled stbox_to_tstzspan GAP stbox_transform GAP stbox_transform_pipeline -GAP stbox_volume +GENERATED:value_marshalled stbox_volume GAP stbox_xmax GAP stbox_xmin GAP stbox_ymax GAP stbox_ymin GAP stbox_zmax GAP stbox_zmin -GAP stboxarr_round -GAP sub_bigint_tbigint -GAP sub_float_tfloat -GAP sub_int_tint +GENERATED:value_marshalled stboxarr_round +GENERATED:value_marshalled sub_bigint_tbigint +GENERATED:value_marshalled sub_float_tfloat +GENERATED:value_marshalled sub_int_tint GENERATED:temporal_scalar_transform sub_tbigint_bigint GENERATED:temporal_scalar_transform sub_tfloat_float GENERATED:temporal_scalar_transform sub_tint_int GENERATED:two_temporal_temporal sub_tnumber_tnumber -GAP tand_bool_tbool +GENERATED:value_marshalled tand_bool_tbool GENERATED:temporal_scalar_transform tand_tbool_bool GENERATED:two_temporal_temporal tand_tbool_tbool GAP tbigint_end_value -DEFERRED:category-conversion tbigint_from_base_temp +GENERATED:value_marshalled tbigint_from_base_temp RESIDUE:io tbigint_from_mfjson RESIDUE:io tbigint_in GAP tbigint_max_value GAP tbigint_min_value RESIDUE:io tbigint_out GENERATED:temporal_scalar_transform tbigint_scale_value -GAP tbigint_shift_scale_value +GENERATED:value_marshalled tbigint_shift_scale_value GENERATED:temporal_scalar_transform tbigint_shift_value GAP tbigint_start_value RESIDUE:aggregate tbigint_tmax_combinefn @@ -2341,15 +2341,15 @@ GAP tbigint_values RESIDUE:aggregate tbigint_wmax_transfn RESIDUE:aggregate tbigint_wmin_transfn RESIDUE:aggregate tbigint_wsum_transfn -GAP tbigintbox_expand -GAP tbigintbox_shift_scale +GENERATED:value_marshalled tbigintbox_expand +GENERATED:value_marshalled tbigintbox_shift_scale RESIDUE:constructor tbigintinst_make DEFERRED:category-conversion tbigintseq_from_base_tstzset DEFERRED:category-conversion tbigintseq_from_base_tstzspan DEFERRED:category-conversion tbigintseqset_from_base_tstzspanset GENERATED:temporal_scalar_transform tbool_at_value GENERATED:temporal_unary_scalar tbool_end_value -DEFERRED:category-conversion tbool_from_base_temp +GENERATED:value_marshalled tbool_from_base_temp RESIDUE:io tbool_from_mfjson RESIDUE:io tbool_in GENERATED:temporal_scalar_transform tbool_minus_value @@ -2363,7 +2363,7 @@ RESIDUE:aggregate tbool_tor_transfn GAP tbool_value_at_timestamptz GAP tbool_value_n GAP tbool_values -GAP tbool_when_true +GENERATED:value_marshalled tbool_when_true RESIDUE:constructor tboolinst_make DEFERRED:category-conversion tboolseq_from_base_tstzset DEFERRED:category-conversion tboolseq_from_base_tstzspan @@ -2373,31 +2373,31 @@ RESIDUE:io tbox_as_wkb GENERATED:two_static_values tbox_cmp RESIDUE:constructor tbox_copy GENERATED:two_static_values tbox_eq -GAP tbox_expand_time +GENERATED:value_marshalled tbox_expand_time RESIDUE:io tbox_from_hexwkb RESIDUE:io tbox_from_wkb GENERATED:two_static_values tbox_ge GENERATED:two_static_values tbox_gt GAP tbox_hash GAP tbox_hash_extended -GAP tbox_hast -GAP tbox_hasx +GENERATED:value_marshalled tbox_hast +GENERATED:value_marshalled tbox_hasx RESIDUE:io tbox_in GENERATED:two_static_values tbox_le GENERATED:two_static_values tbox_lt RESIDUE:constructor tbox_make GENERATED:two_static_values tbox_ne RESIDUE:io tbox_out -GAP tbox_round -GAP tbox_shift_scale_time +GENERATED:value_marshalled tbox_round +GENERATED:value_marshalled tbox_shift_scale_time GAP tbox_tmax GAP tbox_tmax_inc GAP tbox_tmin GAP tbox_tmin_inc -DEFERRED:category-conversion tbox_to_bigintspan -DEFERRED:category-conversion tbox_to_floatspan -DEFERRED:category-conversion tbox_to_intspan -DEFERRED:category-conversion tbox_to_tstzspan +GENERATED:value_marshalled tbox_to_bigintspan +GENERATED:value_marshalled tbox_to_floatspan +GENERATED:value_marshalled tbox_to_intspan +GENERATED:value_marshalled tbox_to_tstzspan GAP tbox_xmax GAP tbox_xmax_inc GAP tbox_xmin @@ -2408,22 +2408,22 @@ GAP tboxfloat_xmax GAP tboxfloat_xmin GAP tboxint_xmax GAP tboxint_xmin -GAP tcbuffer_at_cbuffer +GENERATED:value_marshalled tcbuffer_at_cbuffer GENERATED:temporal_geom_transform tcbuffer_at_geom -GAP tcbuffer_at_stbox +GENERATED:value_marshalled tcbuffer_at_stbox GAP tcbuffer_convex_hull -GAP tcbuffer_end_value +GENERATED:value_marshalled tcbuffer_end_value GENERATED:temporal_scalar_transform tcbuffer_expand -DEFERRED:category-conversion tcbuffer_from_base_temp +GENERATED:value_marshalled tcbuffer_from_base_temp RESIDUE:io tcbuffer_from_mfjson RESIDUE:io tcbuffer_in -GENERATED:two_temporal_temporal tcbuffer_make -GAP tcbuffer_minus_cbuffer +RESIDUE:constructor tcbuffer_make +GENERATED:value_marshalled tcbuffer_minus_cbuffer GENERATED:temporal_geom_transform tcbuffer_minus_geom -GAP tcbuffer_minus_stbox -GAP tcbuffer_points -GAP tcbuffer_radius -GAP tcbuffer_start_value +GENERATED:value_marshalled tcbuffer_minus_stbox +GENERATED:value_marshalled tcbuffer_points +GENERATED:value_marshalled tcbuffer_radius +GENERATED:value_marshalled tcbuffer_start_value GENERATED:temporal_extract_scalar tcbuffer_to_tfloat GENERATED:temporal_unary_transform tcbuffer_to_tgeompoint GAP tcbuffer_traversed_area @@ -2434,38 +2434,38 @@ RESIDUE:constructor tcbufferinst_make DEFERRED:category-conversion tcbufferseq_from_base_tstzset DEFERRED:category-conversion tcbufferseq_from_base_tstzspan DEFERRED:category-conversion tcbufferseqset_from_base_tstzspanset -GAP tcellindex_cell_area -DEFERRED:category-conversion tcellindex_cell_to_boundary +GENERATED:value_marshalled tcellindex_cell_area +GENERATED:value_marshalled tcellindex_cell_to_boundary DEFERRED:category-conversion tcellindex_cell_to_parent -DEFERRED:category-conversion tcellindex_cell_to_point -GAP tcellindex_get_resolution -GAP tcellindex_is_valid_cell -GAP tcontains_cbuffer_tcbuffer +GENERATED:value_marshalled tcellindex_cell_to_point +GENERATED:value_marshalled tcellindex_get_resolution +GENERATED:value_marshalled tcellindex_is_valid_cell +GENERATED:value_marshalled tcontains_cbuffer_tcbuffer GENERATED:temporal_geom_transform tcontains_geo_tcbuffer GENERATED:temporal_geom_transform tcontains_geo_tgeo -GAP tcontains_tcbuffer_cbuffer +GENERATED:value_marshalled tcontains_tcbuffer_cbuffer GENERATED:temporal_geom_transform tcontains_tcbuffer_geo GENERATED:two_temporal_temporal tcontains_tcbuffer_tcbuffer GENERATED:temporal_geom_transform tcontains_tgeo_geo GENERATED:two_temporal_temporal tcontains_tgeo_tgeo -GAP tcovers_cbuffer_tcbuffer +GENERATED:value_marshalled tcovers_cbuffer_tcbuffer GENERATED:temporal_geom_transform tcovers_geo_tcbuffer GENERATED:temporal_geom_transform tcovers_geo_tgeo -GAP tcovers_tcbuffer_cbuffer +GENERATED:value_marshalled tcovers_tcbuffer_cbuffer GENERATED:temporal_geom_transform tcovers_tcbuffer_geo GENERATED:two_temporal_temporal tcovers_tcbuffer_tcbuffer GENERATED:temporal_geom_transform tcovers_tgeo_geo GENERATED:two_temporal_temporal tcovers_tgeo_tgeo -GAP tdisjoint_cbuffer_tcbuffer +GENERATED:value_marshalled tdisjoint_cbuffer_tcbuffer GENERATED:temporal_geom_transform tdisjoint_geo_tcbuffer GENERATED:temporal_geom_transform tdisjoint_geo_tgeo -GAP tdisjoint_tcbuffer_cbuffer +GENERATED:value_marshalled tdisjoint_tcbuffer_cbuffer GENERATED:temporal_geom_transform tdisjoint_tcbuffer_geo GENERATED:two_temporal_temporal tdisjoint_tcbuffer_tcbuffer GENERATED:temporal_geom_transform tdisjoint_tgeo_geo GENERATED:two_temporal_temporal tdisjoint_tgeo_tgeo RESIDUE:out-param-array tdisjoint_tgeoarr_tgeoarr -GAP tdistance_tcbuffer_cbuffer +GENERATED:value_marshalled tdistance_tcbuffer_cbuffer GENERATED:temporal_geom_transform tdistance_tcbuffer_geo GENERATED:two_temporal_temporal tdistance_tcbuffer_tcbuffer GENERATED:temporal_scalar_transform tdistance_tfloat_float @@ -2473,22 +2473,22 @@ GENERATED:temporal_geom_transform tdistance_tgeo_geo GENERATED:two_temporal_temporal tdistance_tgeo_tgeo GENERATED:temporal_scalar_transform tdistance_tint_int GENERATED:temporal_geom_transform tdistance_tnpoint_geo -GAP tdistance_tnpoint_npoint +GENERATED:value_marshalled tdistance_tnpoint_npoint GENERATED:two_temporal_temporal tdistance_tnpoint_tnpoint GENERATED:two_temporal_temporal tdistance_tnumber_tnumber GENERATED:temporal_geom_transform tdistance_tpose_geo -GAP tdistance_tpose_pose +GENERATED:value_marshalled tdistance_tpose_pose GENERATED:two_temporal_temporal tdistance_tpose_tpose -GAP tdistance_trgeometry_geo +GENERATED:value_marshalled tdistance_trgeometry_geo GENERATED:two_temporal_temporal tdistance_trgeometry_tpoint GENERATED:two_temporal_temporal tdistance_trgeometry_trgeometry GAP tdwithin_geo_tcbuffer GAP tdwithin_geo_tgeo -GAP tdwithin_tcbuffer_cbuffer -GAP tdwithin_tcbuffer_geo -GAP tdwithin_tcbuffer_tcbuffer -GAP tdwithin_tgeo_geo -GAP tdwithin_tgeo_tgeo +GENERATED:value_marshalled tdwithin_tcbuffer_cbuffer +GENERATED:value_marshalled tdwithin_tcbuffer_geo +GENERATED:value_marshalled tdwithin_tcbuffer_tcbuffer +GENERATED:value_marshalled tdwithin_tgeo_geo +GENERATED:value_marshalled tdwithin_tgeo_tgeo RESIDUE:out-param-array tdwithin_tgeoarr_tgeoarr RESIDUE:out-param-array temparr_round GAP temporal_after_timestamptz @@ -2503,19 +2503,19 @@ RESIDUE:io temporal_as_wkb GENERATED:temporal_unary_transform temporal_at_max GENERATED:temporal_unary_transform temporal_at_min GAP temporal_at_timestamptz -GAP temporal_at_tstzset -GAP temporal_at_tstzspan -GAP temporal_at_tstzspanset -GAP temporal_at_values +GENERATED:value_marshalled temporal_at_tstzset +GENERATED:value_marshalled temporal_at_tstzspan +GENERATED:value_marshalled temporal_at_tstzspanset +GENERATED:value_marshalled temporal_at_values GENERATED:two_temporal_scalar temporal_average_hausdorff_distance GAP temporal_basetype_name GAP temporal_before_timestamptz GENERATED:two_temporal_scalar temporal_cmp -GENERATED:temporal_unary_transform temporal_copy +RESIDUE:constructor temporal_copy GAP temporal_delete_timestamptz -GAP temporal_delete_tstzset -GAP temporal_delete_tstzspan -GAP temporal_delete_tstzspanset +GENERATED:value_marshalled temporal_delete_tstzset +GENERATED:value_marshalled temporal_delete_tstzspan +GENERATED:value_marshalled temporal_delete_tstzspanset GENERATED:temporal_unary_transform temporal_derivative GAP temporal_duration GENERATED:two_temporal_scalar temporal_dyntimewarp_distance @@ -2524,7 +2524,7 @@ GAP temporal_end_instant GAP temporal_end_sequence GAP temporal_end_timestamptz GENERATED:two_temporal_scalar temporal_eq -GAP temporal_ext_kalman_filter +GENERATED:value_marshalled temporal_ext_kalman_filter RESIDUE:aggregate temporal_extent_transfn GENERATED:two_temporal_scalar temporal_frechet_distance GAP temporal_frechet_path @@ -2535,11 +2535,11 @@ GENERATED:two_temporal_scalar temporal_gt GAP temporal_hash GAP temporal_hash_extended GENERATED:two_temporal_scalar temporal_hausdorff_distance -GAP temporal_insert +GENERATED:value_marshalled temporal_insert GAP temporal_instant_n GAP temporal_instants GAP temporal_interp -GAP temporal_lcss_distance +GENERATED:value_marshalled temporal_lcss_distance GENERATED:two_temporal_scalar temporal_le GENERATED:temporal_unary_scalar temporal_lower_inc GENERATED:two_temporal_scalar temporal_lt @@ -2552,27 +2552,27 @@ GAP temporal_min_instant GENERATED:temporal_unary_transform temporal_minus_max GENERATED:temporal_unary_transform temporal_minus_min GAP temporal_minus_timestamptz -GAP temporal_minus_tstzset -GAP temporal_minus_tstzspan -GAP temporal_minus_tstzspanset -GAP temporal_minus_values +GENERATED:value_marshalled temporal_minus_tstzset +GENERATED:value_marshalled temporal_minus_tstzspan +GENERATED:value_marshalled temporal_minus_tstzspanset +GENERATED:value_marshalled temporal_minus_values GENERATED:two_temporal_scalar temporal_ne GENERATED:temporal_unary_scalar temporal_num_instants GENERATED:temporal_unary_scalar temporal_num_sequences GENERATED:temporal_unary_scalar temporal_num_timestamps GENERATED:temporal_scalar_transform temporal_round -GAP temporal_scale_time +GENERATED:value_marshalled temporal_scale_time GAP temporal_segm_duration GAP temporal_segments GAP temporal_sequence_n GAP temporal_sequences GAP temporal_set_interp -GAP temporal_shift_scale_time -GAP temporal_shift_time -GAP temporal_simplify_dp -GAP temporal_simplify_max_dist +GENERATED:value_marshalled temporal_shift_scale_time +GENERATED:value_marshalled temporal_shift_time +GENERATED:value_marshalled temporal_simplify_dp +GENERATED:value_marshalled temporal_simplify_max_dist GENERATED:temporal_scalar_transform temporal_simplify_min_dist -GAP temporal_simplify_min_tdelta +GENERATED:value_marshalled temporal_simplify_min_tdelta GAP temporal_spans GAP temporal_split_each_n_spans GAP temporal_split_n_spans @@ -2584,35 +2584,35 @@ GAP temporal_subtype RESIDUE:aggregate temporal_tagg_finalfn RESIDUE:aggregate temporal_tcount_combinefn RESIDUE:aggregate temporal_tcount_transfn -GAP temporal_time +GENERATED:value_marshalled temporal_time GAP temporal_time_bins GENERATED:two_temporal_scalar temporal_time_overlaps RESIDUE:out-param-array temporal_time_split GAP temporal_timestamps GAP temporal_timestamptz_n -DEFERRED:category-conversion temporal_to_tstzspan +GENERATED:value_marshalled temporal_to_tstzspan GAP temporal_tprecision GAP temporal_tsample -GAP temporal_update +GENERATED:value_marshalled temporal_update GENERATED:temporal_unary_scalar temporal_upper_inc -GAP teq_bigint_tbigint -GAP teq_bool_tbool -GAP teq_cbuffer_tcbuffer -GAP teq_float_tfloat +GENERATED:value_marshalled teq_bigint_tbigint +GENERATED:value_marshalled teq_bool_tbool +GENERATED:value_marshalled teq_cbuffer_tcbuffer +GENERATED:value_marshalled teq_float_tfloat GENERATED:temporal_geom_transform teq_geo_tgeo GAP teq_geo_trgeometry -GAP teq_h3index_th3index -GAP teq_int_tint -GAP teq_jsonb_tjsonb -GAP teq_pcpatch_tpcpatch -GAP teq_pcpoint_tpcpoint -GAP teq_pose_tpose -GAP teq_posechain_tposechain -GAP teq_quadbin_tquadbin +GENERATED:value_marshalled teq_h3index_th3index +GENERATED:value_marshalled teq_int_tint +GENERATED:value_marshalled teq_jsonb_tjsonb +GENERATED:value_marshalled teq_pcpatch_tpcpatch +GENERATED:value_marshalled teq_pcpoint_tpcpoint +GENERATED:value_marshalled teq_pose_tpose +GENERATED:value_marshalled teq_posechain_tposechain +GENERATED:value_marshalled teq_quadbin_tquadbin GAP teq_s2cell_ts2cell GENERATED:temporal_scalar_transform teq_tbigint_bigint GENERATED:temporal_scalar_transform teq_tbool_bool -GAP teq_tcbuffer_cbuffer +GENERATED:value_marshalled teq_tcbuffer_cbuffer GENERATED:two_temporal_temporal teq_temporal_temporal GAP teq_text_ttext GENERATED:temporal_scalar_transform teq_tfloat_float @@ -2620,15 +2620,15 @@ GENERATED:temporal_geom_transform teq_tgeo_geo GENERATED:temporal_scalar_transform teq_th3index_h3index GENERATED:two_temporal_temporal teq_th3index_th3index GENERATED:temporal_scalar_transform teq_tint_int -GAP teq_tjsonb_jsonb -GAP teq_tnpoint_npoint -GAP teq_tpcpatch_pcpatch -GAP teq_tpcpoint_pcpoint -GAP teq_tpose_pose -GAP teq_tposechain_posechain +GENERATED:value_marshalled teq_tjsonb_jsonb +GENERATED:value_marshalled teq_tnpoint_npoint +GENERATED:value_marshalled teq_tpcpatch_pcpatch +GENERATED:value_marshalled teq_tpcpoint_pcpoint +GENERATED:value_marshalled teq_tpose_pose +GENERATED:value_marshalled teq_tposechain_posechain GENERATED:temporal_scalar_transform teq_tquadbin_quadbin GENERATED:two_temporal_temporal teq_tquadbin_tquadbin -GAP teq_trgeometry_geo +GENERATED:value_marshalled teq_trgeometry_geo GAP teq_ts2cell_s2cell GENERATED:two_temporal_temporal teq_ts2cell_ts2cell GAP teq_ttext_text @@ -2660,12 +2660,12 @@ GAP textcat_ttext_text GENERATED:two_temporal_temporal textcat_ttext_ttext GAP textset_end_value RESIDUE:io textset_in -GAP textset_initcap -GAP textset_lower +GENERATED:value_marshalled textset_initcap +GENERATED:value_marshalled textset_lower RESIDUE:constructor textset_make RESIDUE:io textset_out GAP textset_start_value -GAP textset_upper +GENERATED:value_marshalled textset_upper RESIDUE:out-param-array textset_value_n GAP textset_values GENERATED:temporal_scalar_transform tfloat_at_value @@ -2675,7 +2675,7 @@ GENERATED:temporal_scalar_transform tfloat_degrees GENERATED:temporal_unary_scalar tfloat_end_value GENERATED:temporal_extract_scalar tfloat_exp GENERATED:temporal_extract_scalar tfloat_floor -DEFERRED:category-conversion tfloat_from_base_temp +GENERATED:value_marshalled tfloat_from_base_temp RESIDUE:io tfloat_from_mfjson RESIDUE:io tfloat_in GENERATED:temporal_extract_scalar tfloat_ln @@ -2686,7 +2686,7 @@ GENERATED:temporal_scalar_transform tfloat_minus_value RESIDUE:io tfloat_out GENERATED:temporal_extract_scalar tfloat_radians GENERATED:temporal_scalar_transform tfloat_scale_value -GAP tfloat_shift_scale_value +GENERATED:value_marshalled tfloat_shift_scale_value GENERATED:temporal_scalar_transform tfloat_shift_value GENERATED:temporal_extract_scalar tfloat_sin GENERATED:temporal_unary_scalar tfloat_start_value @@ -2711,8 +2711,8 @@ GAP tfloat_values RESIDUE:aggregate tfloat_wmax_transfn RESIDUE:aggregate tfloat_wmin_transfn RESIDUE:aggregate tfloat_wsum_transfn -GAP tfloatbox_expand -GAP tfloatbox_shift_scale +GENERATED:value_marshalled tfloatbox_expand +GENERATED:value_marshalled tfloatbox_shift_scale GAP tfloatbox_time_tiles GAP tfloatbox_value_tiles GAP tfloatbox_value_time_tiles @@ -2720,9 +2720,9 @@ RESIDUE:constructor tfloatinst_make DEFERRED:category-conversion tfloatseq_from_base_tstzset DEFERRED:category-conversion tfloatseq_from_base_tstzspan DEFERRED:category-conversion tfloatseqset_from_base_tstzspanset -GAP tge_bigint_tbigint -GAP tge_float_tfloat -GAP tge_int_tint +GENERATED:value_marshalled tge_bigint_tbigint +GENERATED:value_marshalled tge_float_tfloat +GENERATED:value_marshalled tge_int_tint GENERATED:temporal_scalar_transform tge_tbigint_bigint GENERATED:two_temporal_temporal tge_temporal_temporal GAP tge_text_ttext @@ -2731,16 +2731,16 @@ GENERATED:temporal_scalar_transform tge_tint_int GAP tge_ttext_text GAP tgeo_affine GENERATED:temporal_geom_transform tgeo_at_geom -GAP tgeo_at_stbox +GENERATED:value_marshalled tgeo_at_stbox GENERATED:temporal_geom_transform tgeo_at_value GENERATED:temporal_unary_transform tgeo_centroid GAP tgeo_convex_hull GAP tgeo_end_value GENERATED:temporal_geom_transform tgeo_from_base_temp GENERATED:temporal_geom_transform tgeo_minus_geom -GAP tgeo_minus_stbox +GENERATED:value_marshalled tgeo_minus_stbox GENERATED:temporal_geom_transform tgeo_minus_value -GAP tgeo_scale +GENERATED:value_marshalled tgeo_scale GAP tgeo_space_boxes GAP tgeo_space_split GAP tgeo_space_time_boxes @@ -2760,8 +2760,8 @@ GENERATED:temporal_unary_transform tgeogpoint_to_tgeography DEFERRED:category-conversion tgeogpoint_to_th3index RESIDUE:io tgeography_from_mfjson RESIDUE:io tgeography_in -DEFERRED:category-conversion tgeography_to_tgeogpoint -DEFERRED:category-conversion tgeography_to_tgeometry +GENERATED:value_marshalled tgeography_to_tgeogpoint +GENERATED:value_marshalled tgeography_to_tgeometry RESIDUE:constructor tgeoinst_make RESIDUE:io tgeometry_from_mfjson RESIDUE:io tgeometry_in @@ -2776,9 +2776,9 @@ GENERATED:temporal_unary_transform tgeompoint_to_tnpoint DEFERRED:category-conversion tgeoseq_from_base_tstzset DEFERRED:category-conversion tgeoseq_from_base_tstzspan DEFERRED:category-conversion tgeoseqset_from_base_tstzspanset -GAP tgt_bigint_tbigint -GAP tgt_float_tfloat -GAP tgt_int_tint +GENERATED:value_marshalled tgt_bigint_tbigint +GENERATED:value_marshalled tgt_float_tfloat +GENERATED:value_marshalled tgt_int_tint GENERATED:temporal_scalar_transform tgt_tbigint_bigint GENERATED:two_temporal_temporal tgt_temporal_temporal GAP tgt_text_ttext @@ -2920,7 +2920,7 @@ RESIDUE:internal-header timetz_to_time RESIDUE:internal-header timetz_zone GENERATED:temporal_scalar_transform tint_at_value GENERATED:temporal_unary_scalar tint_end_value -DEFERRED:category-conversion tint_from_base_temp +GENERATED:value_marshalled tint_from_base_temp RESIDUE:io tint_from_mfjson RESIDUE:io tint_in GENERATED:temporal_unary_scalar tint_max_value @@ -2928,7 +2928,7 @@ GENERATED:temporal_unary_scalar tint_min_value GENERATED:temporal_scalar_transform tint_minus_value RESIDUE:io tint_out GENERATED:temporal_scalar_transform tint_scale_value -GAP tint_shift_scale_value +GENERATED:value_marshalled tint_shift_scale_value GENERATED:temporal_scalar_transform tint_shift_value GENERATED:temporal_unary_scalar tint_start_value GAP tint_time_boxes @@ -2951,15 +2951,15 @@ GAP tint_values RESIDUE:aggregate tint_wmax_transfn RESIDUE:aggregate tint_wmin_transfn RESIDUE:aggregate tint_wsum_transfn -GAP tintbox_expand -GAP tintbox_shift_scale +GENERATED:value_marshalled tintbox_expand +GENERATED:value_marshalled tintbox_shift_scale GAP tintbox_time_tiles GAP tintbox_value_tiles GAP tintbox_value_time_tiles -GAP tintersects_cbuffer_tcbuffer +GENERATED:value_marshalled tintersects_cbuffer_tcbuffer GENERATED:temporal_geom_transform tintersects_geo_tcbuffer GENERATED:temporal_geom_transform tintersects_geo_tgeo -GAP tintersects_tcbuffer_cbuffer +GENERATED:value_marshalled tintersects_tcbuffer_cbuffer GENERATED:temporal_geom_transform tintersects_tcbuffer_geo GENERATED:two_temporal_temporal tintersects_tcbuffer_tcbuffer GENERATED:temporal_geom_transform tintersects_tgeo_geo @@ -2970,16 +2970,16 @@ DEFERRED:category-conversion tintseq_from_base_tstzset DEFERRED:category-conversion tintseq_from_base_tstzspan DEFERRED:category-conversion tintseqset_from_base_tstzspanset GAP tjson_array_element -GAP tjson_array_length +GENERATED:value_marshalled tjson_array_length RESIDUE:out-param-array tjson_extract_path GAP tjson_object_field -GAP tjson_strip_nulls +GENERATED:value_marshalled tjson_strip_nulls GAP tjsonb_array_element -GAP tjsonb_array_length -GAP tjsonb_at_value +GENERATED:value_marshalled tjsonb_array_length +GENERATED:value_marshalled tjsonb_at_value GAP tjsonb_delete RESIDUE:out-param-array tjsonb_delete_array -GAP tjsonb_delete_index +GENERATED:value_marshalled tjsonb_delete_index RESIDUE:out-param-array tjsonb_delete_path GAP tjsonb_end_value GAP tjsonb_exists @@ -2987,25 +2987,25 @@ RESIDUE:out-param-array tjsonb_exists_all RESIDUE:out-param-array tjsonb_exists_any RESIDUE:out-param-array tjsonb_exists_array RESIDUE:out-param-array tjsonb_extract_path -DEFERRED:category-conversion tjsonb_from_base_temp +GENERATED:value_marshalled tjsonb_from_base_temp RESIDUE:io tjsonb_from_mfjson RESIDUE:io tjsonb_in RESIDUE:out-param-array tjsonb_insert -GAP tjsonb_minus_value +GENERATED:value_marshalled tjsonb_minus_value GAP tjsonb_object_field RESIDUE:io tjsonb_out -GAP tjsonb_path_exists -GAP tjsonb_path_match -GAP tjsonb_path_query_array -GAP tjsonb_path_query_first -GAP tjsonb_pretty +GENERATED:value_marshalled tjsonb_path_exists +GENERATED:value_marshalled tjsonb_path_match +GENERATED:value_marshalled tjsonb_path_query_array +GENERATED:value_marshalled tjsonb_path_query_first +GENERATED:value_marshalled tjsonb_pretty RESIDUE:out-param-array tjsonb_set GAP tjsonb_start_value -GAP tjsonb_strip_nulls +GENERATED:value_marshalled tjsonb_strip_nulls DEFERRED:category-conversion tjsonb_to_tbool DEFERRED:category-conversion tjsonb_to_tfloat DEFERRED:category-conversion tjsonb_to_tint -DEFERRED:category-conversion tjsonb_to_ttext +GENERATED:value_marshalled tjsonb_to_ttext DEFERRED:category-conversion tjsonb_to_ttext_key RESIDUE:out-param-array tjsonb_value_at_timestamptz RESIDUE:out-param-array tjsonb_value_n @@ -3014,42 +3014,42 @@ RESIDUE:constructor tjsonbinst_make DEFERRED:category-conversion tjsonbseq_from_base_tstzset DEFERRED:category-conversion tjsonbseq_from_base_tstzspan DEFERRED:category-conversion tjsonbseqset_from_base_tstzspanset -GAP tle_bigint_tbigint -GAP tle_float_tfloat -GAP tle_int_tint +GENERATED:value_marshalled tle_bigint_tbigint +GENERATED:value_marshalled tle_float_tfloat +GENERATED:value_marshalled tle_int_tint GENERATED:temporal_scalar_transform tle_tbigint_bigint GENERATED:two_temporal_temporal tle_temporal_temporal GAP tle_text_ttext GENERATED:temporal_scalar_transform tle_tfloat_float GENERATED:temporal_scalar_transform tle_tint_int GAP tle_ttext_text -GAP tlt_bigint_tbigint -GAP tlt_float_tfloat -GAP tlt_int_tint +GENERATED:value_marshalled tlt_bigint_tbigint +GENERATED:value_marshalled tlt_float_tfloat +GENERATED:value_marshalled tlt_int_tint GENERATED:temporal_scalar_transform tlt_tbigint_bigint GENERATED:two_temporal_temporal tlt_temporal_temporal GAP tlt_text_ttext GENERATED:temporal_scalar_transform tlt_tfloat_float GENERATED:temporal_scalar_transform tlt_tint_int GAP tlt_ttext_text -GAP tne_bigint_tbigint -GAP tne_bool_tbool -GAP tne_cbuffer_tcbuffer -GAP tne_float_tfloat +GENERATED:value_marshalled tne_bigint_tbigint +GENERATED:value_marshalled tne_bool_tbool +GENERATED:value_marshalled tne_cbuffer_tcbuffer +GENERATED:value_marshalled tne_float_tfloat GENERATED:temporal_geom_transform tne_geo_tgeo GAP tne_geo_trgeometry -GAP tne_h3index_th3index -GAP tne_int_tint -GAP tne_jsonb_tjsonb -GAP tne_pcpatch_tpcpatch -GAP tne_pcpoint_tpcpoint -GAP tne_pose_tpose -GAP tne_posechain_tposechain -GAP tne_quadbin_tquadbin +GENERATED:value_marshalled tne_h3index_th3index +GENERATED:value_marshalled tne_int_tint +GENERATED:value_marshalled tne_jsonb_tjsonb +GENERATED:value_marshalled tne_pcpatch_tpcpatch +GENERATED:value_marshalled tne_pcpoint_tpcpoint +GENERATED:value_marshalled tne_pose_tpose +GENERATED:value_marshalled tne_posechain_tposechain +GENERATED:value_marshalled tne_quadbin_tquadbin GAP tne_s2cell_ts2cell GENERATED:temporal_scalar_transform tne_tbigint_bigint GENERATED:temporal_scalar_transform tne_tbool_bool -GAP tne_tcbuffer_cbuffer +GENERATED:value_marshalled tne_tcbuffer_cbuffer GENERATED:two_temporal_temporal tne_temporal_temporal GAP tne_text_ttext GENERATED:temporal_scalar_transform tne_tfloat_float @@ -3057,39 +3057,39 @@ GENERATED:temporal_geom_transform tne_tgeo_geo GENERATED:temporal_scalar_transform tne_th3index_h3index GENERATED:two_temporal_temporal tne_th3index_th3index GENERATED:temporal_scalar_transform tne_tint_int -GAP tne_tjsonb_jsonb -GAP tne_tnpoint_npoint -GAP tne_tpcpatch_pcpatch -GAP tne_tpcpoint_pcpoint -GAP tne_tpose_pose -GAP tne_tposechain_posechain +GENERATED:value_marshalled tne_tjsonb_jsonb +GENERATED:value_marshalled tne_tnpoint_npoint +GENERATED:value_marshalled tne_tpcpatch_pcpatch +GENERATED:value_marshalled tne_tpcpoint_pcpoint +GENERATED:value_marshalled tne_tpose_pose +GENERATED:value_marshalled tne_tposechain_posechain GENERATED:temporal_scalar_transform tne_tquadbin_quadbin GENERATED:two_temporal_temporal tne_tquadbin_tquadbin -GAP tne_trgeometry_geo +GENERATED:value_marshalled tne_trgeometry_geo GAP tne_ts2cell_s2cell GENERATED:two_temporal_temporal tne_ts2cell_ts2cell GAP tne_ttext_text GENERATED:temporal_unary_transform tnot_tbool GENERATED:temporal_geom_transform tnpoint_at_geom -GAP tnpoint_at_npoint -GAP tnpoint_at_npointset -GAP tnpoint_at_stbox +GENERATED:value_marshalled tnpoint_at_npoint +GENERATED:value_marshalled tnpoint_at_npointset +GENERATED:value_marshalled tnpoint_at_stbox GENERATED:temporal_unary_transform tnpoint_cumulative_length -GAP tnpoint_end_value -DEFERRED:category-conversion tnpoint_from_base_temp +GENERATED:value_marshalled tnpoint_end_value +GENERATED:value_marshalled tnpoint_from_base_temp RESIDUE:io tnpoint_from_mfjson RESIDUE:io tnpoint_in GENERATED:temporal_unary_scalar tnpoint_length GENERATED:temporal_geom_transform tnpoint_minus_geom -GAP tnpoint_minus_npoint -GAP tnpoint_minus_npointset -GAP tnpoint_minus_stbox +GENERATED:value_marshalled tnpoint_minus_npoint +GENERATED:value_marshalled tnpoint_minus_npointset +GENERATED:value_marshalled tnpoint_minus_stbox RESIDUE:io tnpoint_out GAP tnpoint_positions GAP tnpoint_route -GAP tnpoint_routes +GENERATED:value_marshalled tnpoint_routes GENERATED:temporal_unary_transform tnpoint_speed -GAP tnpoint_start_value +GENERATED:value_marshalled tnpoint_start_value RESIDUE:aggregate tnpoint_tcentroid_transfn GENERATED:temporal_unary_transform tnpoint_to_tgeompoint GAP tnpoint_trajectory @@ -3103,28 +3103,28 @@ DEFERRED:category-conversion tnpointseq_from_base_tstzspan DEFERRED:category-conversion tnpointseqset_from_base_tstzspanset GENERATED:temporal_unary_transform tnumber_abs GENERATED:temporal_unary_transform tnumber_angular_difference -GAP tnumber_at_span -GAP tnumber_at_spanset -GAP tnumber_at_tbox +GENERATED:value_marshalled tnumber_at_span +GENERATED:value_marshalled tnumber_at_spanset +GENERATED:value_marshalled tnumber_at_tbox GENERATED:temporal_unary_transform tnumber_delta_value RESIDUE:aggregate tnumber_extent_transfn GENERATED:temporal_unary_scalar tnumber_integral -GAP tnumber_minus_span -GAP tnumber_minus_spanset -GAP tnumber_minus_tbox +GENERATED:value_marshalled tnumber_minus_span +GENERATED:value_marshalled tnumber_minus_spanset +GENERATED:value_marshalled tnumber_minus_tbox GAP tnumber_split_each_n_tboxes GAP tnumber_split_n_tboxes RESIDUE:aggregate tnumber_tavg_combinefn RESIDUE:aggregate tnumber_tavg_finalfn RESIDUE:aggregate tnumber_tavg_transfn GAP tnumber_tboxes -DEFERRED:category-conversion tnumber_to_span -DEFERRED:category-conversion tnumber_to_tbox +GENERATED:value_marshalled tnumber_to_span +GENERATED:value_marshalled tnumber_to_tbox GENERATED:temporal_unary_transform tnumber_trend GENERATED:temporal_unary_scalar tnumber_twavg -GAP tnumber_valuespans +GENERATED:value_marshalled tnumber_valuespans RESIDUE:aggregate tnumber_wavg_transfn -GAP tor_bool_tbool +GENERATED:value_marshalled tor_bool_tbool GENERATED:temporal_scalar_transform tor_tbool_bool GENERATED:two_temporal_temporal tor_tbool_tbool GENERATED:two_static_values touches_cbuffer_cbuffer @@ -3133,11 +3133,11 @@ RESIDUE:constructor tpcbox_copy GENERATED:two_static_values tpcbox_eq RESIDUE:internal-header tpcbox_extent_transfn GENERATED:two_static_values tpcbox_ge -GAP tpcbox_geodetic +GENERATED:value_marshalled tpcbox_geodetic GENERATED:two_static_values tpcbox_gt -GAP tpcbox_hast -GAP tpcbox_hasx -GAP tpcbox_hasz +GENERATED:value_marshalled tpcbox_hast +GENERATED:value_marshalled tpcbox_hasx +GENERATED:value_marshalled tpcbox_hasz RESIDUE:io tpcbox_in GENERATED:two_static_values tpcbox_le GENERATED:two_static_values tpcbox_lt @@ -3152,19 +3152,19 @@ GAP tpcbox_tmax GAP tpcbox_tmax_inc GAP tpcbox_tmin GAP tpcbox_tmin_inc -DEFERRED:category-conversion tpcbox_to_stbox +GENERATED:value_marshalled tpcbox_to_stbox GAP tpcbox_xmax GAP tpcbox_xmin GAP tpcbox_ymax GAP tpcbox_ymin GAP tpcbox_zmax GAP tpcbox_zmin -GAP tpcpatch_at_value -GAP tpcpatch_end_value -DEFERRED:category-conversion tpcpatch_from_base_temp -GAP tpcpatch_minus_value -GAP tpcpatch_start_value -DEFERRED:category-conversion tpcpatch_to_tgeometry +GENERATED:value_marshalled tpcpatch_at_value +GENERATED:value_marshalled tpcpatch_end_value +GENERATED:value_marshalled tpcpatch_from_base_temp +GENERATED:value_marshalled tpcpatch_minus_value +GENERATED:value_marshalled tpcpatch_start_value +GENERATED:value_marshalled tpcpatch_to_tgeometry RESIDUE:out-param-array tpcpatch_value_at_timestamptz RESIDUE:out-param-array tpcpatch_value_n GAP tpcpatch_values @@ -3172,11 +3172,11 @@ RESIDUE:constructor tpcpatchinst_make DEFERRED:category-conversion tpcpatchseq_from_base_tstzset DEFERRED:category-conversion tpcpatchseq_from_base_tstzspan DEFERRED:category-conversion tpcpatchseqset_from_base_tstzspanset -GAP tpcpoint_at_value -GAP tpcpoint_end_value -DEFERRED:category-conversion tpcpoint_from_base_temp -GAP tpcpoint_minus_value -GAP tpcpoint_start_value +GENERATED:value_marshalled tpcpoint_at_value +GENERATED:value_marshalled tpcpoint_end_value +GENERATED:value_marshalled tpcpoint_from_base_temp +GENERATED:value_marshalled tpcpoint_minus_value +GENERATED:value_marshalled tpcpoint_start_value RESIDUE:out-param-array tpcpoint_value_at_timestamptz RESIDUE:out-param-array tpcpoint_value_n GAP tpcpoint_values @@ -3186,7 +3186,7 @@ DEFERRED:category-conversion tpcpointseq_from_base_tstzspan DEFERRED:category-conversion tpcpointseqset_from_base_tstzspanset GENERATED:temporal_unary_transform tpoint_angular_difference DEFERRED:category-conversion tpoint_as_mvtgeom -GAP tpoint_at_elevation +GENERATED:value_marshalled tpoint_at_elevation GENERATED:temporal_geom_transform tpoint_at_geom GENERATED:temporal_geom_transform tpoint_at_value GENERATED:temporal_unary_transform tpoint_azimuth @@ -3199,7 +3199,7 @@ GENERATED:temporal_unary_transform tpoint_get_z GENERATED:temporal_unary_scalar tpoint_is_simple GENERATED:temporal_unary_scalar tpoint_length GAP tpoint_make_simple -GAP tpoint_minus_elevation +GENERATED:value_marshalled tpoint_minus_elevation GENERATED:temporal_geom_transform tpoint_minus_geom GENERATED:temporal_geom_transform tpoint_minus_value GENERATED:temporal_unary_transform tpoint_speed @@ -3219,28 +3219,28 @@ GENERATED:temporal_geom_transform tpose_apply_geo DEFERRED:category-conversion tpose_as_geopose DEFERRED:category-conversion tpose_as_geopose_stream DEFERRED:category-conversion tpose_as_geopose_stream_element -GAP tpose_at_elevation +GENERATED:value_marshalled tpose_at_elevation GENERATED:temporal_geom_transform tpose_at_geom -GAP tpose_at_pose -GAP tpose_at_stbox -GAP tpose_compose_pose +GENERATED:value_marshalled tpose_at_pose +GENERATED:value_marshalled tpose_at_stbox +GENERATED:value_marshalled tpose_compose_pose GENERATED:two_temporal_temporal tpose_compose_tpose -GAP tpose_end_value -DEFERRED:category-conversion tpose_from_base_temp +GENERATED:value_marshalled tpose_end_value +GENERATED:value_marshalled tpose_from_base_temp DEFERRED:category-conversion tpose_from_geopose RESIDUE:io tpose_from_mfjson RESIDUE:io tpose_in GENERATED:temporal_unary_transform tpose_inverse -GENERATED:two_temporal_temporal tpose_make -GAP tpose_minus_elevation +RESIDUE:constructor tpose_make +GENERATED:value_marshalled tpose_minus_elevation GENERATED:temporal_geom_transform tpose_minus_geom -GAP tpose_minus_pose -GAP tpose_minus_stbox +GENERATED:value_marshalled tpose_minus_pose +GENERATED:value_marshalled tpose_minus_stbox GENERATED:temporal_unary_transform tpose_pitch -GAP tpose_points +GENERATED:value_marshalled tpose_points GENERATED:temporal_unary_transform tpose_roll GENERATED:temporal_unary_transform tpose_speed -GAP tpose_start_value +GENERATED:value_marshalled tpose_start_value GENERATED:temporal_unary_transform tpose_to_tpoint GAP tpose_trajectory RESIDUE:out-param-array tpose_value_at_timestamptz @@ -3248,13 +3248,13 @@ RESIDUE:out-param-array tpose_value_n GAP tpose_values GENERATED:temporal_unary_transform tpose_yaw DEFERRED:category-conversion tposechain_as_geopose -DEFERRED:category-conversion tposechain_from_base_temp +GENERATED:value_marshalled tposechain_from_base_temp DEFERRED:category-conversion tposechain_from_geopose RESIDUE:io tposechain_from_mfjson RESIDUE:io tposechain_in -GAP tposechain_num_poses -DEFERRED:category-conversion tposechain_to_tpose -DEFERRED:category-conversion tposechainarr_as_geopose +GENERATED:value_marshalled tposechain_num_poses +GENERATED:value_marshalled tposechain_to_tpose +RESIDUE:out-param-array tposechainarr_as_geopose RESIDUE:constructor tposeinst_make DEFERRED:category-conversion tposeseq_from_base_tstzset DEFERRED:category-conversion tposeseq_from_base_tstzspan @@ -3273,7 +3273,7 @@ RESIDUE:constructor tquadbinseq_make RESIDUE:constructor tquadbinseqset_make GAP trajectory_quadbins GAP trgeometry_after_timestamptz -GAP trgeometry_angular_speed +GENERATED:value_marshalled trgeometry_angular_speed GAP trgeometry_append_tinstant GAP trgeometry_append_tsequence RESIDUE:io trgeometry_as_ewkt @@ -3281,24 +3281,24 @@ RESIDUE:io trgeometry_as_text DEFERRED:category-conversion trgeometry_as_tinstant DEFERRED:category-conversion trgeometry_as_tsequence DEFERRED:category-conversion trgeometry_as_tsequenceset -GAP trgeometry_at_elevation -GAP trgeometry_at_geom -GAP trgeometry_at_stbox +GENERATED:value_marshalled trgeometry_at_elevation +GENERATED:value_marshalled trgeometry_at_geom +GENERATED:value_marshalled trgeometry_at_stbox GAP trgeometry_at_timestamptz -GAP trgeometry_at_tstzset -GAP trgeometry_at_tstzspan -GAP trgeometry_at_tstzspanset -GAP trgeometry_at_value -GAP trgeometry_at_values +GENERATED:value_marshalled trgeometry_at_tstzset +GENERATED:value_marshalled trgeometry_at_tstzspan +GENERATED:value_marshalled trgeometry_at_tstzspanset +GENERATED:value_marshalled trgeometry_at_value +GENERATED:value_marshalled trgeometry_at_values GAP trgeometry_before_timestamptz -GAP trgeometry_body_point_trajectory -GAP trgeometry_centroid +GENERATED:value_marshalled trgeometry_body_point_trajectory +GENERATED:value_marshalled trgeometry_centroid GAP trgeometry_convex_hull -GAP trgeometry_cumulative_length +GENERATED:value_marshalled trgeometry_cumulative_length GAP trgeometry_delete_timestamptz -GAP trgeometry_delete_tstzset -GAP trgeometry_delete_tstzspan -GAP trgeometry_delete_tstzspanset +GENERATED:value_marshalled trgeometry_delete_tstzset +GENERATED:value_marshalled trgeometry_delete_tstzspan +GENERATED:value_marshalled trgeometry_delete_tstzspanset GENERATED:two_temporal_scalar trgeometry_dyntimewarp_distance GAP trgeometry_dyntimewarp_path GAP trgeometry_end_instant @@ -3312,53 +3312,53 @@ GENERATED:two_temporal_scalar trgeometry_hausdorff_distance RESIDUE:io trgeometry_in GAP trgeometry_instant_n GAP trgeometry_instants -GAP trgeometry_length +GENERATED:value_marshalled trgeometry_length GENERATED:two_temporal_temporal trgeometry_merge RESIDUE:out-param-array trgeometry_merge_array -GAP trgeometry_minus_elevation -GAP trgeometry_minus_geom -GAP trgeometry_minus_stbox +GENERATED:value_marshalled trgeometry_minus_elevation +GENERATED:value_marshalled trgeometry_minus_geom +GENERATED:value_marshalled trgeometry_minus_stbox GAP trgeometry_minus_timestamptz -GAP trgeometry_minus_tstzset -GAP trgeometry_minus_tstzspan -GAP trgeometry_minus_tstzspanset -GAP trgeometry_minus_value -GAP trgeometry_minus_values +GENERATED:value_marshalled trgeometry_minus_tstzset +GENERATED:value_marshalled trgeometry_minus_tstzspan +GENERATED:value_marshalled trgeometry_minus_tstzspanset +GENERATED:value_marshalled trgeometry_minus_value +GENERATED:value_marshalled trgeometry_minus_values RESIDUE:io trgeometry_out -GAP trgeometry_pitch -GAP trgeometry_points -GAP trgeometry_roll -GAP trgeometry_round +GENERATED:value_marshalled trgeometry_pitch +GENERATED:value_marshalled trgeometry_points +GENERATED:value_marshalled trgeometry_roll +GENERATED:value_marshalled trgeometry_round GAP trgeometry_segments GAP trgeometry_sequence_n GAP trgeometry_sequences GAP trgeometry_set_interp GAP trgeometry_space_boxes GAP trgeometry_space_time_boxes -GAP trgeometry_speed +GENERATED:value_marshalled trgeometry_speed GAP trgeometry_split_each_n_stboxes GAP trgeometry_split_n_stboxes GAP trgeometry_start_instant GAP trgeometry_start_sequence GAP trgeometry_start_value GAP trgeometry_stboxes -DEFERRED:category-conversion trgeometry_to_tgeometry -DEFERRED:category-conversion trgeometry_to_tgeompoint -DEFERRED:category-conversion trgeometry_to_tpose +GENERATED:value_marshalled trgeometry_to_tgeometry +GENERATED:value_marshalled trgeometry_to_tgeompoint +GENERATED:value_marshalled trgeometry_to_tpose GAP trgeometry_traversed_area GAP trgeometry_twcentroid RESIDUE:out-param-array trgeometry_value_n -GAP trgeometry_yaw +GENERATED:value_marshalled trgeometry_yaw RESIDUE:constructor trgeometryinst_make RESIDUE:constructor trgeometryseq_make RESIDUE:constructor trgeometryseqset_make RESIDUE:out-param-array trgeometryseqset_make_gaps -DEFERRED:category-conversion ts2cell_cell_to_token +GENERATED:value_marshalled ts2cell_cell_to_token GAP ts2cell_end_value RESIDUE:io ts2cell_in RESIDUE:constructor ts2cell_make GAP ts2cell_start_value -DEFERRED:category-conversion ts2cell_to_tbigint +GENERATED:value_marshalled ts2cell_to_tbigint GAP ts2cell_value_at_timestamptz GAP ts2cell_value_n GAP ts2cell_values @@ -3374,32 +3374,32 @@ RESIDUE:aggregate tspatial_extent_transfn RESIDUE:io tspatial_out GAP tspatial_set_srid GAP tspatial_srid -DEFERRED:category-conversion tspatial_to_stbox +GENERATED:value_marshalled tspatial_to_stbox GAP tspatial_transform GAP tspatial_transform_pipeline GAP tstzset_end_value RESIDUE:io tstzset_in RESIDUE:constructor tstzset_make RESIDUE:io tstzset_out -GAP tstzset_shift_scale +GENERATED:value_marshalled tstzset_shift_scale GAP tstzset_start_value RESIDUE:aggregate tstzset_tcount_transfn -DEFERRED:category-conversion tstzset_to_dateset -DEFERRED:category-conversion tstzset_to_stbox +GENERATED:value_marshalled tstzset_to_dateset +GENERATED:value_marshalled tstzset_to_stbox GAP tstzset_tprecision GAP tstzset_value_n GAP tstzset_values GAP tstzspan_bins GAP tstzspan_duration -GAP tstzspan_expand +GENERATED:value_marshalled tstzspan_expand RESIDUE:io tstzspan_in GAP tstzspan_lower RESIDUE:constructor tstzspan_make RESIDUE:io tstzspan_out -GAP tstzspan_shift_scale +GENERATED:value_marshalled tstzspan_shift_scale RESIDUE:aggregate tstzspan_tcount_transfn -DEFERRED:category-conversion tstzspan_to_datespan -DEFERRED:category-conversion tstzspan_to_stbox +GENERATED:value_marshalled tstzspan_to_datespan +GENERATED:value_marshalled tstzspan_to_stbox GAP tstzspan_tprecision GAP tstzspan_upper GAP tstzspanset_bins @@ -3407,15 +3407,15 @@ GAP tstzspanset_duration GAP tstzspanset_end_timestamptz RESIDUE:io tstzspanset_in GAP tstzspanset_lower -GAP tstzspanset_num_timestamps +GENERATED:value_marshalled tstzspanset_num_timestamps RESIDUE:io tstzspanset_out -GAP tstzspanset_shift_scale +GENERATED:value_marshalled tstzspanset_shift_scale GAP tstzspanset_start_timestamptz RESIDUE:aggregate tstzspanset_tcount_transfn -GAP tstzspanset_timestamps +GENERATED:value_marshalled tstzspanset_timestamps GAP tstzspanset_timestamptz_n -DEFERRED:category-conversion tstzspanset_to_datespanset -DEFERRED:category-conversion tstzspanset_to_stbox +GENERATED:value_marshalled tstzspanset_to_datespanset +GENERATED:value_marshalled tstzspanset_to_stbox GAP tstzspanset_tprecision GAP tstzspanset_upper GAP ttext_at_value @@ -3423,8 +3423,8 @@ GAP ttext_end_value DEFERRED:category-conversion ttext_from_base_temp RESIDUE:io ttext_from_mfjson RESIDUE:io ttext_in -GAP ttext_initcap -GAP ttext_lower +GENERATED:value_marshalled ttext_initcap +GENERATED:value_marshalled ttext_lower GAP ttext_max_value GAP ttext_min_value GAP ttext_minus_value @@ -3434,8 +3434,8 @@ RESIDUE:aggregate ttext_tmax_combinefn RESIDUE:aggregate ttext_tmax_transfn RESIDUE:aggregate ttext_tmin_combinefn RESIDUE:aggregate ttext_tmin_transfn -DEFERRED:category-conversion ttext_to_tjsonb -GAP ttext_upper +GENERATED:value_marshalled ttext_to_tjsonb +GENERATED:value_marshalled ttext_upper RESIDUE:out-param-array ttext_value_at_timestamptz RESIDUE:out-param-array ttext_value_n GAP ttext_values @@ -3443,66 +3443,66 @@ RESIDUE:constructor ttextinst_make DEFERRED:category-conversion ttextseq_from_base_tstzset DEFERRED:category-conversion ttextseq_from_base_tstzspan DEFERRED:category-conversion ttextseqset_from_base_tstzspanset -GAP ttouches_cbuffer_tcbuffer +GENERATED:value_marshalled ttouches_cbuffer_tcbuffer GENERATED:temporal_geom_transform ttouches_geo_tcbuffer GENERATED:temporal_geom_transform ttouches_geo_tgeo -GAP ttouches_tcbuffer_cbuffer +GENERATED:value_marshalled ttouches_tcbuffer_cbuffer GENERATED:temporal_geom_transform ttouches_tcbuffer_geo GENERATED:two_temporal_temporal ttouches_tcbuffer_tcbuffer GENERATED:temporal_geom_transform ttouches_tgeo_geo GENERATED:two_temporal_temporal ttouches_tgeo_tgeo RESIDUE:out-param-array ttouches_tgeoarr_tgeoarr -GAP union_bigint_set -GAP union_bigint_span -GAP union_bigint_spanset -GAP union_cbuffer_set +GENERATED:value_marshalled union_bigint_set +GENERATED:value_marshalled union_bigint_span +GENERATED:value_marshalled union_bigint_spanset +GENERATED:value_marshalled union_cbuffer_set GAP union_date_set GAP union_date_span GAP union_date_spanset -GAP union_float_set -GAP union_float_span -GAP union_float_spanset +GENERATED:value_marshalled union_float_set +GENERATED:value_marshalled union_float_span +GENERATED:value_marshalled union_float_spanset GAP union_geo_set -GAP union_int_set -GAP union_int_span -GAP union_int_spanset -GAP union_jsonb_set -GAP union_npoint_set -GAP union_pcpatch_set -GAP union_pcpoint_set -GAP union_pose_set -GAP union_posechain_set -GAP union_set_bigint -GAP union_set_cbuffer +GENERATED:value_marshalled union_int_set +GENERATED:value_marshalled union_int_span +GENERATED:value_marshalled union_int_spanset +GENERATED:value_marshalled union_jsonb_set +GENERATED:value_marshalled union_npoint_set +GENERATED:value_marshalled union_pcpatch_set +GENERATED:value_marshalled union_pcpoint_set +GENERATED:value_marshalled union_pose_set +GENERATED:value_marshalled union_posechain_set +GENERATED:value_marshalled union_set_bigint +GENERATED:value_marshalled union_set_cbuffer GAP union_set_date -GAP union_set_float -GAP union_set_geo -GAP union_set_int -GAP union_set_jsonb -GAP union_set_npoint -GAP union_set_pcpatch -GAP union_set_pcpoint -GAP union_set_pose -GAP union_set_posechain -GAP union_set_set +GENERATED:value_marshalled union_set_float +GENERATED:value_marshalled union_set_geo +GENERATED:value_marshalled union_set_int +GENERATED:value_marshalled union_set_jsonb +GENERATED:value_marshalled union_set_npoint +GENERATED:value_marshalled union_set_pcpatch +GENERATED:value_marshalled union_set_pcpoint +GENERATED:value_marshalled union_set_pose +GENERATED:value_marshalled union_set_posechain +GENERATED:value_marshalled union_set_set GAP union_set_text GAP union_set_timestamptz -GAP union_span_bigint +GENERATED:value_marshalled union_span_bigint GAP union_span_date -GAP union_span_float -GAP union_span_int -GAP union_span_span -GAP union_span_spanset +GENERATED:value_marshalled union_span_float +GENERATED:value_marshalled union_span_int +GENERATED:value_marshalled union_span_span +GENERATED:value_marshalled union_span_spanset GAP union_span_timestamptz -GAP union_spanset_bigint +GENERATED:value_marshalled union_spanset_bigint GAP union_spanset_date -GAP union_spanset_float -GAP union_spanset_int -GAP union_spanset_span -GAP union_spanset_spanset +GENERATED:value_marshalled union_spanset_float +GENERATED:value_marshalled union_spanset_int +GENERATED:value_marshalled union_spanset_span +GENERATED:value_marshalled union_spanset_spanset GAP union_spanset_timestamptz -GAP union_stbox_stbox -GAP union_tbox_tbox +GENERATED:value_marshalled union_stbox_stbox +GENERATED:value_marshalled union_tbox_tbox GAP union_text_set GAP union_timestamptz_set GAP union_timestamptz_span From 255380742a5e1a249ef2e9f6bc9ec99bc389ca0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 4 Sep 2026 09:59:01 +0200 Subject: [PATCH 2/7] Answer in the encoding the operand side reads An operator whose answer is serialized in a form the operand side cannot parse composes with nothing, and a circular buffer left in hex-WKB was exactly that: a Cbuffer operand is read from the text its own `_in` parses, so the answer has to leave as that text. `result_marshalling` asks `operand_marshalling` which encoding the type travels in and takes that encoding's encoder, which is what keeps the two sides from disagreeing. A span stays hex-WKB, because hex-WKB is the only form stating which variety it is. The encoder is `typeEncodings[T].encoders.text` rather than a composed `_out`, which is what answers a geometry: its text encoder is `geo_as_ewkt`. The arguments after the value are what `out_aux` names, counted against the encoder's own parameters, so a geometry is written at the precision the catalog states and a type whose encoder says something else declines. A geometry is also an operand a function can be built around, read with `geom_in` -- the parser the binding already uses for a geometry argument, and the one that accepts the SRID-carrying EWKT the result side writes. It is parsed directly rather than through `StaticGeometry` so the value is owned by the lambda, which is what the single `free` at the end of the call expects. The ledger reads 1826 GENERATED, 662 GAP, 868 RESIDUE and 153 DEFERRED, and every one of the 1826 emitted operator cores compiles against a `-DMEOS=ON -DALL=ON` MEOS with 0 errors and 0 warnings. --- tools/codegen/build_descriptor.py | 75 +++++++-- tools/codegen/coverage-ledger.txt | 262 +++++++++++++++--------------- 2 files changed, 196 insertions(+), 141 deletions(-) diff --git a/tools/codegen/build_descriptor.py b/tools/codegen/build_descriptor.py index f0e66c450a..b07bf5d022 100644 --- a/tools/codegen/build_descriptor.py +++ b/tools/codegen/build_descriptor.py @@ -631,7 +631,7 @@ def operand_marshalling(ctype): if ctype in SCALAR_CPP: return {"kind": "scalar", "cpp": SCALAR_CPP[ctype]} if ctype == "GSERIALIZED*": - return {"kind": "geom"} + return {"kind": "geom", "cpp_type": "GSERIALIZED"} # `rstrip("*")` reads `Cbuffer**` as `Cbuffer`, so without this a # pointer-to-pointer -- an array of values, or a value written back through # the argument -- would be marshalled as the single value it is not. @@ -640,6 +640,7 @@ def operand_marshalling(ctype): spec = text_value_input(ctype) if spec: return {"kind": "box", "box_type": spec["cpp_type"], + "cpp_type": spec["cpp_type"], "parser": spec["parser"], "parser_aux": spec["parser_aux"], "header": (spec["headers"] or ["meos.h"])[0]} spec = wkb_value_codec(ctype) @@ -650,19 +651,55 @@ def operand_marshalling(ctype): return None +def _text_encoder(bare): + """(encoder, its arguments after the value) for the text form of `bare`. + + The encoder is `typeEncodings[T].encoders.text` and the arguments after the + value are what `out_aux` names, counted against the encoder's own + parameters. Reading the encoders entry rather than composing a name is what + answers a geometry, whose text encoder is `geo_as_ewkt` and not the + `_out` every other type spells. + """ + enc = _TYPE_ENCODINGS.get(bare) or {} + encoder = (enc.get("encoders") or {}).get("text") + if not encoder or encoder not in _CATALOG: + return None + header = (_CATALOG[encoder].get("file") or "") + if not reachable_header(header): + return None + params = _CATALOG[encoder].get("params") or [] + aux = enc.get("out_aux") or [] + if len(params) != 1 + len(aux): + return None + args = "".join(f", {a.get('default', 0)}" for a in aux) + return {"serializer": encoder, "serializer_args": args, "cpp_type": bare, + "headers": catalog_header(encoder)} + + def result_marshalling(ret): """How the result of a function comes back out, as a return_kind, or None. - A number is the value itself. Anything MEOS gives a generic hex-WKB encoder - is handed on in that form, which is the SAME exchange form the operand side - reads -- so the output of one operator is the input of the next, for a span - and a set exactly as it already is for a temporal. + A number is the value itself. Anything else leaves in THE SAME ENCODING the + operand side reads for that type, so the output of one operator is the input + of the next: a geometry as the EWKT a geometry operand is parsed from, a + circular buffer as the text its own `_in` reads back, a span as the hex-WKB + that is the only form stating which variety it is. + + Asking `operand_marshalling` for the encoding, rather than picking one here, + is what keeps the two sides from disagreeing -- an answer serialized in a + form the operand side cannot parse composes with nothing. """ if ret in ("bool", "int", "double"): return ret, None - spec = wkb_value_codec(ret) - if spec: - return "wkb", spec + marsh = operand_marshalling(ret) + if not marsh: + return None, None + if marsh["kind"] == "wkb_value": + spec = wkb_value_codec(ret) + return ("wkb", spec) if spec else (None, None) + if marsh["kind"] in ("box", "geom"): + spec = _text_encoder(marsh["cpp_type"]) + return ("wkb", spec) if spec else (None, None) return None, None @@ -678,6 +715,22 @@ def primary_operand_spec(marsh, index): return {"fields": [["box", "VariableSizedData"]], "parser": marsh["parser"], "parser_aux": marsh["parser_aux"], "cpp_type": marsh["box_type"], "headers": [marsh["header"]]} + if marsh["kind"] == "geom": + # The geometry is read with `geom_in`, which the binding already uses + # for a geometry ARGUMENT and which accepts the SRID-carrying EWKT the + # result side writes. Parsing it directly rather than through + # StaticGeometry leaves the value owned by the lambda, which is what the + # single `free(temp)` at the end of the call expects. + return { + "fields": [["geom", "VariableSizedData"]], + "header": "meos_geo.h", "headers": ["meos_geo.h"], + "cpp_type": "GSERIALIZED", + "build": (' std::string {var}S(geomPtr, geomSize);\n' + ' while (!{var}S.empty() && ({var}S.front()==\'\\\'\' || {var}S.front()==\'"\')) {var}S.erase({var}S.begin());\n' + ' while (!{var}S.empty() && ({var}S.back()==\'\\\'\' || {var}S.back()==\'"\')) {var}S.pop_back();\n' + ' GSERIALIZED* {var} = geom_in({var}S.c_str(), -1);\n' + ' if (!{var}) return {z};\n'), + } if marsh["kind"] == "wkb_value": t, parser = marsh["value_type"], marsh["parser"] return { @@ -723,13 +776,15 @@ def value_marshalled(fn, ret, args): spec = primary_operand_spec(marsh[primary], primary) if not spec: return None - headers = set(catalog_header(fn)) | {marsh[primary]["header"]} + headers = set(catalog_header(fn)) | set(spec.get("headers") or []) extras = [] for i, m in enumerate(marsh): if i == primary: continue extras.append(m) - if m["kind"] in ("box", "wkb_value"): + if m["kind"] == "geom": + headers.add("meos_geo.h") + elif m["kind"] in ("box", "wkb_value"): headers.add(m["header"]) d = { "nebula_name": pascal(fn), "sql_token": fn.upper(), "meos_call": fn, diff --git a/tools/codegen/coverage-ledger.txt b/tools/codegen/coverage-ledger.txt index 6ab1c46997..ffd5dbe76e 100644 --- a/tools/codegen/coverage-ledger.txt +++ b/tools/codegen/coverage-ledger.txt @@ -84,7 +84,7 @@ GENERATED:two_temporal_scalar adjacent_tpointcloud_tpointcloud GENERATED:temporal_x_box adjacent_tspatial_stbox GENERATED:two_temporal_scalar adjacent_tspatial_tspatial GENERATED:value_marshalled adjacent_tstzspan_temporal -GAP adwithin_geo_tgeo +GENERATED:value_marshalled adwithin_geo_tgeo GENERATED:value_marshalled adwithin_tcbuffer_cbuffer GENERATED:value_marshalled adwithin_tcbuffer_geo GENERATED:value_marshalled adwithin_tcbuffer_tcbuffer @@ -374,14 +374,14 @@ RESIDUE:constructor cbuffer_make GENERATED:two_static_values cbuffer_ne GENERATED:two_static_values cbuffer_nsame RESIDUE:io cbuffer_out -GAP cbuffer_point +GENERATED:value_marshalled cbuffer_point GENERATED:value_marshalled cbuffer_radius GENERATED:value_marshalled cbuffer_round GENERATED:two_static_values cbuffer_same GAP cbuffer_set_srid GAP cbuffer_srid DEFERRED:category-conversion cbuffer_timestamptz_to_stbox -DEFERRED:category-conversion cbuffer_to_geom +GENERATED:value_marshalled cbuffer_to_geom GENERATED:value_marshalled cbuffer_to_set GENERATED:value_marshalled cbuffer_to_stbox GAP cbuffer_transform @@ -418,7 +418,7 @@ GAP contained_date_spanset GENERATED:value_marshalled contained_float_set GENERATED:value_marshalled contained_float_span GENERATED:value_marshalled contained_float_spanset -GAP contained_geo_set +GENERATED:value_marshalled contained_geo_set GENERATED:value_marshalled contained_int_set GENERATED:value_marshalled contained_int_span GENERATED:value_marshalled contained_int_spanset @@ -635,7 +635,7 @@ GENERATED:two_temporal_scalar edisjoint_tgeo_tgeo RESIDUE:out-param-array edisjoint_tgeoarr_tgeoarr GENERATED:trgeometry_geo_predicate edisjoint_trgeometry_geo GENERATED:two_temporal_scalar edisjoint_trgeometry_trgeometry -GAP edwithin_geo_tgeo +GENERATED:value_marshalled edwithin_geo_tgeo GENERATED:value_marshalled edwithin_tcbuffer_cbuffer GENERATED:value_marshalled edwithin_tcbuffer_geo GENERATED:value_marshalled edwithin_tcbuffer_tcbuffer @@ -914,22 +914,22 @@ RESIDUE:out-param-array geo_cluster_kmeans RESIDUE:out-param-array geo_cluster_within RESIDUE:out-param-array geo_collect_garray RESIDUE:constructor geo_copy -GAP geo_equals +GENERATED:value_marshalled geo_equals RESIDUE:io geo_from_ewkb RESIDUE:io geo_from_geojson RESIDUE:io geo_from_text -GAP geo_geo_n -GAP geo_is_empty -GAP geo_is_unitary +GENERATED:value_marshalled geo_geo_n +GENERATED:value_marshalled geo_is_empty +GENERATED:value_marshalled geo_is_unitary RESIDUE:out-param-array geo_makeline_garray -GAP geo_num_geos -GAP geo_num_points +GENERATED:value_marshalled geo_num_geos +GENERATED:value_marshalled geo_num_points RESIDUE:io geo_out GAP geo_pointarr -GAP geo_points -GAP geo_reverse -GAP geo_round -GAP geo_same +GENERATED:value_marshalled geo_points +GENERATED:value_marshalled geo_reverse +GENERATED:value_marshalled geo_round +GENERATED:value_marshalled geo_same GAP geo_set_srid GAP geo_split_each_n_stboxes GAP geo_split_n_stboxes @@ -940,76 +940,76 @@ DEFERRED:category-conversion geo_to_h3index_cell DEFERRED:category-conversion geo_to_h3index_set DEFERRED:category-conversion geo_to_quadbin_cell DEFERRED:category-conversion geo_to_s2cell_cell -DEFERRED:category-conversion geo_to_set -DEFERRED:category-conversion geo_to_stbox +GENERATED:value_marshalled geo_to_set +GENERATED:value_marshalled geo_to_stbox GAP geo_transform GAP geo_transform_pipeline -DEFERRED:category-conversion geo_tstzspan_to_stbox +GENERATED:value_marshalled geo_tstzspan_to_stbox GAP geo_typename RESIDUE:aggregate geo_union_transfn -GAP geog_area +GENERATED:value_marshalled geog_area RESIDUE:out-param-array geog_array_union -GAP geog_centroid -GAP geog_distance -GAP geog_dwithin +GENERATED:value_marshalled geog_centroid +GENERATED:value_marshalled geog_distance +GENERATED:value_marshalled geog_dwithin DEFERRED:category-conversion geog_from_hexewkb RESIDUE:io geog_in -GAP geog_intersects -GAP geog_length -GAP geog_perimeter -DEFERRED:category-conversion geog_to_geom +GENERATED:value_marshalled geog_intersects +GENERATED:value_marshalled geog_length +GENERATED:value_marshalled geog_perimeter +GENERATED:value_marshalled geog_to_geom GAP geogpoint_make2d GAP geogpoint_make3dz RESIDUE:io geogset_in -GAP geom_area +GENERATED:value_marshalled geom_area RESIDUE:out-param-array geom_array_union GAP geom_azimuth -GAP geom_boundary +GENERATED:value_marshalled geom_boundary GAP geom_buffer -GAP geom_centroid -GAP geom_contains -GAP geom_convex_hull -GAP geom_covers -GAP geom_difference2d -GAP geom_disjoint2d -GAP geom_distance2d -GAP geom_distance3d -GAP geom_dwithin -GAP geom_dwithin2d -GAP geom_dwithin3d +GENERATED:value_marshalled geom_centroid +GENERATED:value_marshalled geom_contains +GENERATED:value_marshalled geom_convex_hull +GENERATED:value_marshalled geom_covers +GENERATED:value_marshalled geom_difference2d +GENERATED:value_marshalled geom_disjoint2d +GENERATED:value_marshalled geom_distance2d +GENERATED:value_marshalled geom_distance3d +GENERATED:value_marshalled geom_dwithin +GENERATED:value_marshalled geom_dwithin2d +GENERATED:value_marshalled geom_dwithin3d DEFERRED:category-conversion geom_from_hexewkb RESIDUE:io geom_in -GAP geom_intersection2d -GAP geom_intersection2d_coll -GAP geom_intersects -GAP geom_intersects2d -GAP geom_intersects3d -GAP geom_is_simple -GAP geom_length -GAP geom_max_distance2d +GENERATED:value_marshalled geom_intersection2d +GENERATED:value_marshalled geom_intersection2d_coll +GENERATED:value_marshalled geom_intersects +GENERATED:value_marshalled geom_intersects2d +GENERATED:value_marshalled geom_intersects3d +GENERATED:value_marshalled geom_is_simple +GENERATED:value_marshalled geom_length +GENERATED:value_marshalled geom_max_distance2d GAP geom_min_bounding_radius -GAP geom_oriented_envelope -GAP geom_perimeter +GENERATED:value_marshalled geom_oriented_envelope +GENERATED:value_marshalled geom_perimeter GAP geom_relate GAP geom_relate_pattern -GAP geom_shortestline2d -GAP geom_shortestline3d -DEFERRED:category-conversion geom_to_cbuffer -DEFERRED:category-conversion geom_to_geog -DEFERRED:category-conversion geom_to_nsegment -GAP geom_touches -GAP geom_unary_union -DEFERRED:category-conversion geomeas_to_tpoint +GENERATED:value_marshalled geom_shortestline2d +GENERATED:value_marshalled geom_shortestline3d +GENERATED:value_marshalled geom_to_cbuffer +GENERATED:value_marshalled geom_to_geog +GENERATED:value_marshalled geom_to_nsegment +GENERATED:value_marshalled geom_touches +GENERATED:value_marshalled geom_unary_union +GENERATED:value_marshalled geomeas_to_tpoint GENERATED:temporal_geom_transform geometry_tpose_to_trgeometry GAP geompoint_make2d GAP geompoint_make3dz -DEFERRED:category-conversion geompoint_to_npoint +GENERATED:value_marshalled geompoint_to_npoint RESIDUE:io geomset_in GAP geopose_frame GAP geopose_frames -GAP geoset_end_value +GENERATED:value_marshalled geoset_end_value RESIDUE:constructor geoset_make -GAP geoset_start_value +GENERATED:value_marshalled geoset_start_value RESIDUE:out-param-array geoset_value_n GAP geoset_values GAP get_srid_ways @@ -1086,7 +1086,7 @@ GENERATED:value_marshalled intersection_bigint_set GENERATED:value_marshalled intersection_cbuffer_set GAP intersection_date_set GENERATED:value_marshalled intersection_float_set -GAP intersection_geo_set +GENERATED:value_marshalled intersection_geo_set GENERATED:value_marshalled intersection_int_set GENERATED:value_marshalled intersection_jsonb_set GENERATED:value_marshalled intersection_npoint_set @@ -1127,7 +1127,7 @@ GENERATED:value_marshalled intersection_stbox_stbox GENERATED:value_marshalled intersection_tbox_tbox GAP intersection_text_set GAP intersection_timestamptz_set -GAP intersection_tpcbox_tpcbox +GENERATED:value_marshalled intersection_tpcbox_tpcbox GENERATED:two_static_values intersects_cbuffer_cbuffer RESIDUE:internal-header interval_cmp RESIDUE:internal-header interval_copy @@ -1200,19 +1200,19 @@ GAP json_object_keys RESIDUE:io json_out GAP json_strip_nulls GAP json_typeof -GAP jsonb_array_element +GENERATED:value_marshalled jsonb_array_element GAP jsonb_array_element_text GAP jsonb_array_elements GAP jsonb_array_elements_text GENERATED:value_marshalled jsonb_array_length GENERATED:two_static_values jsonb_cmp -GAP jsonb_concat +GENERATED:value_marshalled jsonb_concat GENERATED:two_static_values jsonb_contained GENERATED:two_static_values jsonb_contains RESIDUE:constructor jsonb_copy GAP jsonb_delete RESIDUE:out-param-array jsonb_delete_array -GAP jsonb_delete_index +GENERATED:value_marshalled jsonb_delete_index RESIDUE:out-param-array jsonb_delete_path RESIDUE:out-param-array jsonb_each RESIDUE:out-param-array jsonb_each_text @@ -1240,12 +1240,12 @@ RESIDUE:io jsonb_out GENERATED:value_marshalled jsonb_path_exists GENERATED:value_marshalled jsonb_path_match GAP jsonb_path_query_all -GAP jsonb_path_query_array -GAP jsonb_path_query_first +GENERATED:value_marshalled jsonb_path_query_array +GENERATED:value_marshalled jsonb_path_query_first GAP jsonb_pretty RESIDUE:out-param-array jsonb_set RESIDUE:out-param-array jsonb_set_lax -GAP jsonb_strip_nulls +GENERATED:value_marshalled jsonb_strip_nulls GENERATED:value_marshalled jsonb_to_bool DEFERRED:category-conversion jsonb_to_cstring DEFERRED:category-conversion jsonb_to_float4 @@ -1263,7 +1263,7 @@ GAP jsonbset_delete RESIDUE:out-param-array jsonbset_delete_array GENERATED:value_marshalled jsonbset_delete_index RESIDUE:out-param-array jsonbset_delete_path -GAP jsonbset_end_value +GENERATED:value_marshalled jsonbset_end_value GAP jsonbset_exists RESIDUE:out-param-array jsonbset_exists_array RESIDUE:out-param-array jsonbset_extract_path @@ -1278,7 +1278,7 @@ GENERATED:value_marshalled jsonbset_path_query_array GENERATED:value_marshalled jsonbset_path_query_first GENERATED:value_marshalled jsonbset_pretty RESIDUE:out-param-array jsonbset_set -GAP jsonbset_start_value +GENERATED:value_marshalled jsonbset_start_value GENERATED:value_marshalled jsonbset_strip_nulls DEFERRED:category-conversion jsonbset_to_alphanumset DEFERRED:category-conversion jsonbset_to_bigintset @@ -1339,11 +1339,11 @@ GENERATED:two_temporal_scalar left_tnumber_tnumber GENERATED:two_static_values left_tpcbox_tpcbox GENERATED:temporal_x_box left_tspatial_stbox GENERATED:two_temporal_scalar left_tspatial_tspatial -GAP line_interpolate_point -GAP line_locate_point -GAP line_numpoints -GAP line_point_n -GAP line_substring +GENERATED:value_marshalled line_interpolate_point +GENERATED:value_marshalled line_locate_point +GENERATED:value_marshalled line_numpoints +GENERATED:value_marshalled line_point_n +GENERATED:value_marshalled line_substring RESIDUE:internal-header lt_date_date RESIDUE:internal-header lt_date_timestamp RESIDUE:internal-header lt_date_timestamptz @@ -1418,7 +1418,7 @@ RESIDUE:internal-header minus_float8_float8 GENERATED:value_marshalled minus_float_set GENERATED:value_marshalled minus_float_span GENERATED:value_marshalled minus_float_spanset -GAP minus_geo_set +GENERATED:value_marshalled minus_geo_set RESIDUE:internal-header minus_int32_int32 RESIDUE:internal-header minus_int64_int64 GENERATED:value_marshalled minus_int_set @@ -1576,8 +1576,8 @@ GAP npoint_route GENERATED:two_static_values npoint_same GAP npoint_srid DEFERRED:category-conversion npoint_timestamptz_to_stbox -DEFERRED:category-conversion npoint_to_geompoint -DEFERRED:category-conversion npoint_to_nsegment +GENERATED:value_marshalled npoint_to_geompoint +GENERATED:value_marshalled npoint_to_nsegment GENERATED:value_marshalled npoint_to_set GENERATED:value_marshalled npoint_to_stbox GENERATED:value_marshalled npoint_tstzspan_to_stbox @@ -1601,11 +1601,11 @@ GENERATED:two_static_values nsegment_lt RESIDUE:constructor nsegment_make GENERATED:two_static_values nsegment_ne RESIDUE:io nsegment_out -GAP nsegment_round +GENERATED:value_marshalled nsegment_round GAP nsegment_route GAP nsegment_srid GENERATED:value_marshalled nsegment_start_position -DEFERRED:category-conversion nsegment_to_geom +GENERATED:value_marshalled nsegment_to_geom GENERATED:value_marshalled nsegment_to_stbox DEFERRED:category-conversion null_handle_type_from_string DEFERRED:category-conversion numspan_timestamptz_to_tbox @@ -1792,7 +1792,7 @@ GENERATED:value_marshalled pcpatch_ne GAP pcpatch_npoints GENERATED:value_marshalled pcpatch_point_n GAP pcpatch_points -DEFERRED:category-conversion pcpatch_to_geom +GENERATED:value_marshalled pcpatch_to_geom GENERATED:value_marshalled pcpatch_to_set DEFERRED:category-conversion pcpatch_to_tpcbox RESIDUE:aggregate pcpatch_union_transfn @@ -1836,7 +1836,7 @@ GAP pcpointset_values RESIDUE:internal-header plus_time_interval RESIDUE:internal-header plus_timetz_interval GENERATED:two_static_values pose_angular_distance -GAP pose_apply_geo +GENERATED:value_marshalled pose_apply_geo RESIDUE:io pose_as_ewkt DEFERRED:category-conversion pose_as_geopose RESIDUE:io pose_as_hexwkb @@ -1860,9 +1860,9 @@ GENERATED:two_static_values pose_le GENERATED:two_static_values pose_lt GAP pose_make_2d GAP pose_make_3d -GAP pose_make_point2d -GAP pose_make_point3d -GAP pose_make_point3d_ypr +GENERATED:value_marshalled pose_make_point2d +GENERATED:value_marshalled pose_make_point3d +GENERATED:value_marshalled pose_make_point3d_ypr GENERATED:two_static_values pose_ne GENERATED:value_marshalled pose_normalize GENERATED:two_static_values pose_nsame @@ -1875,7 +1875,7 @@ GENERATED:two_static_values pose_same GAP pose_set_srid GAP pose_srid DEFERRED:category-conversion pose_timestamptz_to_stbox -DEFERRED:category-conversion pose_to_point +GENERATED:value_marshalled pose_to_point GENERATED:value_marshalled pose_to_posechain GENERATED:value_marshalled pose_to_set GENERATED:value_marshalled pose_to_stbox @@ -1918,7 +1918,7 @@ GAP posechain_set_srid GAP posechain_srid GENERATED:value_marshalled posechain_start_pose DEFERRED:category-conversion posechain_timestamptz_to_stbox -DEFERRED:category-conversion posechain_to_point +GENERATED:value_marshalled posechain_to_point GENERATED:value_marshalled posechain_to_pose GENERATED:value_marshalled posechain_to_set GENERATED:value_marshalled posechain_to_stbox @@ -2153,20 +2153,20 @@ GENERATED:value_marshalled set_to_spanset GENERATED:value_marshalled set_to_tbox RESIDUE:aggregate set_union_finalfn RESIDUE:aggregate set_union_transfn -GAP shortestline_tcbuffer_cbuffer -GAP shortestline_tcbuffer_geo -GAP shortestline_tcbuffer_tcbuffer -GAP shortestline_tgeo_geo -GAP shortestline_tgeo_tgeo -GAP shortestline_tnpoint_geo -GAP shortestline_tnpoint_npoint -GAP shortestline_tnpoint_tnpoint -GAP shortestline_tpose_geo -GAP shortestline_tpose_pose -GAP shortestline_tpose_tpose -GAP shortestline_trgeometry_geo -GAP shortestline_trgeometry_tpoint -GAP shortestline_trgeometry_trgeometry +GENERATED:value_marshalled shortestline_tcbuffer_cbuffer +GENERATED:value_marshalled shortestline_tcbuffer_geo +GENERATED:value_marshalled shortestline_tcbuffer_tcbuffer +GENERATED:value_marshalled shortestline_tgeo_geo +GENERATED:value_marshalled shortestline_tgeo_tgeo +GENERATED:value_marshalled shortestline_tnpoint_geo +GENERATED:value_marshalled shortestline_tnpoint_npoint +GENERATED:value_marshalled shortestline_tnpoint_tnpoint +GENERATED:value_marshalled shortestline_tpose_geo +GENERATED:value_marshalled shortestline_tpose_pose +GENERATED:value_marshalled shortestline_tpose_tpose +GENERATED:value_marshalled shortestline_trgeometry_geo +GENERATED:value_marshalled shortestline_trgeometry_tpoint +GENERATED:value_marshalled shortestline_trgeometry_trgeometry RESIDUE:io span_as_hexwkb RESIDUE:io span_as_wkb GENERATED:value_marshalled span_cmp @@ -2259,7 +2259,7 @@ RESIDUE:io stbox_from_hexwkb RESIDUE:io stbox_from_wkb GENERATED:two_static_values stbox_ge GENERATED:value_marshalled stbox_get_space -GAP stbox_get_space_tile +GENERATED:value_marshalled stbox_get_space_tile GAP stbox_get_space_time_tile GAP stbox_get_time_tile GENERATED:two_static_values stbox_gt @@ -2289,9 +2289,9 @@ GAP stbox_tmax GAP stbox_tmax_inc GAP stbox_tmin GAP stbox_tmin_inc -DEFERRED:category-conversion stbox_to_box3d -DEFERRED:category-conversion stbox_to_gbox -DEFERRED:category-conversion stbox_to_geo +GENERATED:value_marshalled stbox_to_box3d +GENERATED:value_marshalled stbox_to_gbox +GENERATED:value_marshalled stbox_to_geo GENERATED:value_marshalled stbox_to_tstzspan GAP stbox_transform GAP stbox_transform_pipeline @@ -2411,7 +2411,7 @@ GAP tboxint_xmin GENERATED:value_marshalled tcbuffer_at_cbuffer GENERATED:temporal_geom_transform tcbuffer_at_geom GENERATED:value_marshalled tcbuffer_at_stbox -GAP tcbuffer_convex_hull +GENERATED:value_marshalled tcbuffer_convex_hull GENERATED:value_marshalled tcbuffer_end_value GENERATED:temporal_scalar_transform tcbuffer_expand GENERATED:value_marshalled tcbuffer_from_base_temp @@ -2426,7 +2426,7 @@ GENERATED:value_marshalled tcbuffer_radius GENERATED:value_marshalled tcbuffer_start_value GENERATED:temporal_extract_scalar tcbuffer_to_tfloat GENERATED:temporal_unary_transform tcbuffer_to_tgeompoint -GAP tcbuffer_traversed_area +GENERATED:value_marshalled tcbuffer_traversed_area RESIDUE:out-param-array tcbuffer_value_at_timestamptz RESIDUE:out-param-array tcbuffer_value_n GAP tcbuffer_values @@ -2482,8 +2482,8 @@ GENERATED:two_temporal_temporal tdistance_tpose_tpose GENERATED:value_marshalled tdistance_trgeometry_geo GENERATED:two_temporal_temporal tdistance_trgeometry_tpoint GENERATED:two_temporal_temporal tdistance_trgeometry_trgeometry -GAP tdwithin_geo_tcbuffer -GAP tdwithin_geo_tgeo +GENERATED:value_marshalled tdwithin_geo_tcbuffer +GENERATED:value_marshalled tdwithin_geo_tgeo GENERATED:value_marshalled tdwithin_tcbuffer_cbuffer GENERATED:value_marshalled tdwithin_tcbuffer_geo GENERATED:value_marshalled tdwithin_tcbuffer_tcbuffer @@ -2600,7 +2600,7 @@ GENERATED:value_marshalled teq_bool_tbool GENERATED:value_marshalled teq_cbuffer_tcbuffer GENERATED:value_marshalled teq_float_tfloat GENERATED:temporal_geom_transform teq_geo_tgeo -GAP teq_geo_trgeometry +GENERATED:value_marshalled teq_geo_trgeometry GENERATED:value_marshalled teq_h3index_th3index GENERATED:value_marshalled teq_int_tint GENERATED:value_marshalled teq_jsonb_tjsonb @@ -2734,8 +2734,8 @@ GENERATED:temporal_geom_transform tgeo_at_geom GENERATED:value_marshalled tgeo_at_stbox GENERATED:temporal_geom_transform tgeo_at_value GENERATED:temporal_unary_transform tgeo_centroid -GAP tgeo_convex_hull -GAP tgeo_end_value +GENERATED:value_marshalled tgeo_convex_hull +GENERATED:value_marshalled tgeo_end_value GENERATED:temporal_geom_transform tgeo_from_base_temp GENERATED:temporal_geom_transform tgeo_minus_geom GENERATED:value_marshalled tgeo_minus_stbox @@ -2747,9 +2747,9 @@ GAP tgeo_space_time_boxes GAP tgeo_space_time_split GAP tgeo_split_each_n_stboxes GAP tgeo_split_n_stboxes -GAP tgeo_start_value +GENERATED:value_marshalled tgeo_start_value GAP tgeo_stboxes -GAP tgeo_traversed_area +GENERATED:value_marshalled tgeo_traversed_area RESIDUE:out-param-array tgeo_value_at_timestamptz RESIDUE:out-param-array tgeo_value_n GAP tgeo_values @@ -2981,7 +2981,7 @@ GAP tjsonb_delete RESIDUE:out-param-array tjsonb_delete_array GENERATED:value_marshalled tjsonb_delete_index RESIDUE:out-param-array tjsonb_delete_path -GAP tjsonb_end_value +GENERATED:value_marshalled tjsonb_end_value GAP tjsonb_exists RESIDUE:out-param-array tjsonb_exists_all RESIDUE:out-param-array tjsonb_exists_any @@ -3000,7 +3000,7 @@ GENERATED:value_marshalled tjsonb_path_query_array GENERATED:value_marshalled tjsonb_path_query_first GENERATED:value_marshalled tjsonb_pretty RESIDUE:out-param-array tjsonb_set -GAP tjsonb_start_value +GENERATED:value_marshalled tjsonb_start_value GENERATED:value_marshalled tjsonb_strip_nulls DEFERRED:category-conversion tjsonb_to_tbool DEFERRED:category-conversion tjsonb_to_tfloat @@ -3037,7 +3037,7 @@ GENERATED:value_marshalled tne_bool_tbool GENERATED:value_marshalled tne_cbuffer_tcbuffer GENERATED:value_marshalled tne_float_tfloat GENERATED:temporal_geom_transform tne_geo_tgeo -GAP tne_geo_trgeometry +GENERATED:value_marshalled tne_geo_trgeometry GENERATED:value_marshalled tne_h3index_th3index GENERATED:value_marshalled tne_int_tint GENERATED:value_marshalled tne_jsonb_tjsonb @@ -3092,8 +3092,8 @@ GENERATED:temporal_unary_transform tnpoint_speed GENERATED:value_marshalled tnpoint_start_value RESIDUE:aggregate tnpoint_tcentroid_transfn GENERATED:temporal_unary_transform tnpoint_to_tgeompoint -GAP tnpoint_trajectory -GAP tnpoint_twcentroid +GENERATED:value_marshalled tnpoint_trajectory +GENERATED:value_marshalled tnpoint_twcentroid RESIDUE:out-param-array tnpoint_value_at_timestamptz RESIDUE:out-param-array tnpoint_value_n GAP tnpoint_values @@ -3145,7 +3145,7 @@ RESIDUE:constructor tpcbox_make GENERATED:two_static_values tpcbox_ne RESIDUE:io tpcbox_out GAP tpcbox_pcid -GAP tpcbox_round +GENERATED:value_marshalled tpcbox_round GAP tpcbox_set_srid GAP tpcbox_srid GAP tpcbox_tmax @@ -3206,8 +3206,8 @@ GENERATED:temporal_unary_transform tpoint_speed RESIDUE:aggregate tpoint_tcentroid_finalfn RESIDUE:aggregate tpoint_tcentroid_transfn RESIDUE:out-param-array tpoint_tfloat_to_geomeas -GAP tpoint_trajectory -GAP tpoint_twcentroid +GENERATED:value_marshalled tpoint_trajectory +GENERATED:value_marshalled tpoint_twcentroid GENERATED:temporal_unary_transform tpointcloud_to_tgeompoint RESIDUE:constructor tpointinst_make DEFERRED:category-conversion tpointseq_from_base_tstzset @@ -3242,7 +3242,7 @@ GENERATED:temporal_unary_transform tpose_roll GENERATED:temporal_unary_transform tpose_speed GENERATED:value_marshalled tpose_start_value GENERATED:temporal_unary_transform tpose_to_tpoint -GAP tpose_trajectory +GENERATED:value_marshalled tpose_trajectory RESIDUE:out-param-array tpose_value_at_timestamptz RESIDUE:out-param-array tpose_value_n GAP tpose_values @@ -3293,7 +3293,7 @@ GENERATED:value_marshalled trgeometry_at_values GAP trgeometry_before_timestamptz GENERATED:value_marshalled trgeometry_body_point_trajectory GENERATED:value_marshalled trgeometry_centroid -GAP trgeometry_convex_hull +GENERATED:value_marshalled trgeometry_convex_hull GENERATED:value_marshalled trgeometry_cumulative_length GAP trgeometry_delete_timestamptz GENERATED:value_marshalled trgeometry_delete_tstzset @@ -3303,11 +3303,11 @@ GENERATED:two_temporal_scalar trgeometry_dyntimewarp_distance GAP trgeometry_dyntimewarp_path GAP trgeometry_end_instant GAP trgeometry_end_sequence -GAP trgeometry_end_value +GENERATED:value_marshalled trgeometry_end_value GENERATED:two_temporal_scalar trgeometry_frechet_distance GAP trgeometry_frechet_path RESIDUE:io trgeometry_from_mfjson -GAP trgeometry_geom +GENERATED:value_marshalled trgeometry_geom GENERATED:two_temporal_scalar trgeometry_hausdorff_distance RESIDUE:io trgeometry_in GAP trgeometry_instant_n @@ -3340,13 +3340,13 @@ GAP trgeometry_split_each_n_stboxes GAP trgeometry_split_n_stboxes GAP trgeometry_start_instant GAP trgeometry_start_sequence -GAP trgeometry_start_value +GENERATED:value_marshalled trgeometry_start_value GAP trgeometry_stboxes GENERATED:value_marshalled trgeometry_to_tgeometry GENERATED:value_marshalled trgeometry_to_tgeompoint GENERATED:value_marshalled trgeometry_to_tpose -GAP trgeometry_traversed_area -GAP trgeometry_twcentroid +GENERATED:value_marshalled trgeometry_traversed_area +GENERATED:value_marshalled trgeometry_twcentroid RESIDUE:out-param-array trgeometry_value_n GENERATED:value_marshalled trgeometry_yaw RESIDUE:constructor trgeometryinst_make @@ -3462,7 +3462,7 @@ GAP union_date_spanset GENERATED:value_marshalled union_float_set GENERATED:value_marshalled union_float_span GENERATED:value_marshalled union_float_spanset -GAP union_geo_set +GENERATED:value_marshalled union_geo_set GENERATED:value_marshalled union_int_set GENERATED:value_marshalled union_int_span GENERATED:value_marshalled union_int_spanset @@ -3507,5 +3507,5 @@ GAP union_text_set GAP union_timestamptz_set GAP union_timestamptz_span GAP union_timestamptz_spanset -GAP union_tpcbox_tpcbox +GENERATED:value_marshalled union_tpcbox_tpcbox DEFERRED:category-conversion wkb_variant_from_endian From 08997d1e016af70871a30423ec0f5dcc3f04a437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 4 Sep 2026 11:44:39 +0200 Subject: [PATCH 3/7] Hand back a temporal subtype as the temporal it begins with A TInstant, a TSequence and a TSequenceSet each begin with the Temporal they are a kind of, so `temporal_as_hexwkb` serializes one and the answer travels in the same exchange form every other temporal uses. The operand side already reads this off the catalog -- `scalar_base_input` casts a constructor's `TInstant *` for exactly that reason -- and a function ANSWERING one states the same fact from the other side, so 31 nearest-approach instants, sequence accessors and stop detectors compose with the operators that read a temporal. The local keeps the type the function answers and the cast sits at the encoder call, so neither the declaration nor the call misstates what MEOS returned. Every one of the 56 subtype-returning operators calls a function answering a fresh copy, so the `free` after serializing is right. The view-returning `*_inst_p` family answers a pointer INTO the temporal, which a caller must not free, and every one of those is declared in an internal header the public-surface gate already refuses. The ledger reads 1882 GENERATED, 632 GAP, 868 RESIDUE and 127 DEFERRED, and every one of the 1882 emitted operator cores compiles against a `-DMEOS=ON -DALL=ON` MEOS with 0 errors and 0 warnings. --- tools/codegen/build_descriptor.py | 20 ++++++ tools/codegen/codegen_nebula.py | 6 +- tools/codegen/coverage-ledger.txt | 112 +++++++++++++++--------------- 3 files changed, 81 insertions(+), 57 deletions(-) diff --git a/tools/codegen/build_descriptor.py b/tools/codegen/build_descriptor.py index b07bf5d022..605cd9d234 100644 --- a/tools/codegen/build_descriptor.py +++ b/tools/codegen/build_descriptor.py @@ -676,6 +676,12 @@ def _text_encoder(bare): "headers": catalog_header(encoder)} +# The temporal subtypes an operand builder already hands on as the Temporal it +# begins with. `scalar_base_input` casts a constructor's TInstant * for exactly +# this reason; a function ANSWERING one states the same fact from the other side. +_TEMPORAL_SUBTYPES = ("TInstant*", "TSequence*", "TSequenceSet*") + + def result_marshalling(ret): """How the result of a function comes back out, as a return_kind, or None. @@ -691,6 +697,18 @@ def result_marshalling(ret): """ if ret in ("bool", "int", "double"): return ret, None + if ret in _TEMPORAL_SUBTYPES: + # A TInstant, a TSequence and a TSequenceSet each BEGIN with the Temporal + # they are a kind of, so the Temporal encoder serializes one and the + # exchange form is the same hex-WKB every other temporal travels in. The + # operand side already reads this off the catalog when a constructor + # answers a TInstant *; answering one is the same fact. + spec = wkb_value_codec("Temporal*") + if spec: + # the local keeps the type the function ANSWERS; the cast is applied + # where the Temporal encoder is called, so neither side is a lie + return "wkb", dict(spec, cpp_type=ret.rstrip("*"), cast="Temporal *") + return None, None marsh = operand_marshalling(ret) if not marsh: return None, None @@ -796,6 +814,8 @@ def value_marshalled(fn, ret, args): } if result: d["result_type"] = result["cpp_type"] + if result.get("cast"): + d["result_cast"] = result["cast"] d["result_serializer"] = result["serializer"] d["result_serializer_args"] = result["serializer_args"] headers.update(result["headers"]) diff --git a/tools/codegen/codegen_nebula.py b/tools/codegen/codegen_nebula.py index 6b4f44dd90..fddbbbb307 100644 --- a/tools/codegen/codegen_nebula.py +++ b/tools/codegen/codegen_nebula.py @@ -4207,12 +4207,16 @@ def assemble_generic_physical(op): # would fill is declared only where the encoder asks for one. size_decl = (" size_t hexSize = 0;\n" if "&hexSize" in res_args else "") + # A function answering a temporal SUBTYPE hands back the Temporal it + # begins with; the local keeps the answered type and the cast sits at the + # encoder call. + res_cast = f"({op['result_cast']}) " if op.get("result_cast") else "" call_marshal = (f" {res_type}* res = {op['meos_call']}({callargs});\n" f" free(temp);\n" f"{bf}" f" if (!res) return {zero};\n" f"{size_decl}" - f" char* hexOut = {res_ser}(res{res_args});\n" + f" char* hexOut = {res_ser}({res_cast}res{res_args});\n" f" free(res);\n" f" return hexOut;") elif extract_fn is None: diff --git a/tools/codegen/coverage-ledger.txt b/tools/codegen/coverage-ledger.txt index ffd5dbe76e..98457cedb4 100644 --- a/tools/codegen/coverage-ledger.txt +++ b/tools/codegen/coverage-ledger.txt @@ -1525,20 +1525,20 @@ GENERATED:trgeometry_nad nad_trgeometry_geo GENERATED:value_marshalled nad_trgeometry_stbox GENERATED:two_temporal_scalar nad_trgeometry_tpoint GENERATED:two_temporal_scalar nad_trgeometry_trgeometry -GAP nai_tcbuffer_cbuffer -GAP nai_tcbuffer_geo -GAP nai_tcbuffer_tcbuffer -GAP nai_tgeo_geo -GAP nai_tgeo_tgeo -GAP nai_tnpoint_geo -GAP nai_tnpoint_npoint -GAP nai_tnpoint_tnpoint -GAP nai_tpose_geo -GAP nai_tpose_pose -GAP nai_tpose_tpose -GAP nai_trgeometry_geo -GAP nai_trgeometry_tpoint -GAP nai_trgeometry_trgeometry +GENERATED:value_marshalled nai_tcbuffer_cbuffer +GENERATED:value_marshalled nai_tcbuffer_geo +GENERATED:value_marshalled nai_tcbuffer_tcbuffer +GENERATED:value_marshalled nai_tgeo_geo +GENERATED:value_marshalled nai_tgeo_tgeo +GENERATED:value_marshalled nai_tnpoint_geo +GENERATED:value_marshalled nai_tnpoint_npoint +GENERATED:value_marshalled nai_tnpoint_tnpoint +GENERATED:value_marshalled nai_tpose_geo +GENERATED:value_marshalled nai_tpose_pose +GENERATED:value_marshalled nai_tpose_tpose +GENERATED:value_marshalled nai_trgeometry_geo +GENERATED:value_marshalled nai_trgeometry_tpoint +GENERATED:value_marshalled nai_trgeometry_trgeometry RESIDUE:internal-header ne_date_date RESIDUE:internal-header ne_date_timestamp RESIDUE:internal-header ne_date_timestamptz @@ -2344,9 +2344,9 @@ RESIDUE:aggregate tbigint_wsum_transfn GENERATED:value_marshalled tbigintbox_expand GENERATED:value_marshalled tbigintbox_shift_scale RESIDUE:constructor tbigintinst_make -DEFERRED:category-conversion tbigintseq_from_base_tstzset -DEFERRED:category-conversion tbigintseq_from_base_tstzspan -DEFERRED:category-conversion tbigintseqset_from_base_tstzspanset +GENERATED:value_marshalled tbigintseq_from_base_tstzset +GENERATED:value_marshalled tbigintseq_from_base_tstzspan +GENERATED:value_marshalled tbigintseqset_from_base_tstzspanset GENERATED:temporal_scalar_transform tbool_at_value GENERATED:temporal_unary_scalar tbool_end_value GENERATED:value_marshalled tbool_from_base_temp @@ -2365,9 +2365,9 @@ GAP tbool_value_n GAP tbool_values GENERATED:value_marshalled tbool_when_true RESIDUE:constructor tboolinst_make -DEFERRED:category-conversion tboolseq_from_base_tstzset -DEFERRED:category-conversion tboolseq_from_base_tstzspan -DEFERRED:category-conversion tboolseqset_from_base_tstzspanset +GENERATED:value_marshalled tboolseq_from_base_tstzset +GENERATED:value_marshalled tboolseq_from_base_tstzspan +GENERATED:value_marshalled tboolseqset_from_base_tstzspanset RESIDUE:io tbox_as_hexwkb RESIDUE:io tbox_as_wkb GENERATED:two_static_values tbox_cmp @@ -2431,7 +2431,7 @@ RESIDUE:out-param-array tcbuffer_value_at_timestamptz RESIDUE:out-param-array tcbuffer_value_n GAP tcbuffer_values RESIDUE:constructor tcbufferinst_make -DEFERRED:category-conversion tcbufferseq_from_base_tstzset +GENERATED:value_marshalled tcbufferseq_from_base_tstzset DEFERRED:category-conversion tcbufferseq_from_base_tstzspan DEFERRED:category-conversion tcbufferseqset_from_base_tstzspanset GENERATED:value_marshalled tcellindex_cell_area @@ -2496,7 +2496,7 @@ GAP temporal_append_tinstant GAP temporal_append_tsequence RESIDUE:io temporal_as_hexwkb RESIDUE:io temporal_as_mfjson -DEFERRED:category-conversion temporal_as_tinstant +GENERATED:value_marshalled temporal_as_tinstant DEFERRED:category-conversion temporal_as_tsequence DEFERRED:category-conversion temporal_as_tsequenceset RESIDUE:io temporal_as_wkb @@ -2520,8 +2520,8 @@ GENERATED:temporal_unary_transform temporal_derivative GAP temporal_duration GENERATED:two_temporal_scalar temporal_dyntimewarp_distance GAP temporal_dyntimewarp_path -GAP temporal_end_instant -GAP temporal_end_sequence +GENERATED:value_marshalled temporal_end_instant +GENERATED:value_marshalled temporal_end_sequence GAP temporal_end_timestamptz GENERATED:two_temporal_scalar temporal_eq GENERATED:value_marshalled temporal_ext_kalman_filter @@ -2536,19 +2536,19 @@ GAP temporal_hash GAP temporal_hash_extended GENERATED:two_temporal_scalar temporal_hausdorff_distance GENERATED:value_marshalled temporal_insert -GAP temporal_instant_n +GENERATED:value_marshalled temporal_instant_n GAP temporal_instants GAP temporal_interp GENERATED:value_marshalled temporal_lcss_distance GENERATED:two_temporal_scalar temporal_le GENERATED:temporal_unary_scalar temporal_lower_inc GENERATED:two_temporal_scalar temporal_lt -GAP temporal_max_instant +GENERATED:value_marshalled temporal_max_instant GENERATED:two_temporal_temporal temporal_merge RESIDUE:out-param-array temporal_merge_array RESIDUE:aggregate temporal_merge_combinefn RESIDUE:aggregate temporal_merge_transfn -GAP temporal_min_instant +GENERATED:value_marshalled temporal_min_instant GENERATED:temporal_unary_transform temporal_minus_max GENERATED:temporal_unary_transform temporal_minus_min GAP temporal_minus_timestamptz @@ -2562,9 +2562,9 @@ GENERATED:temporal_unary_scalar temporal_num_sequences GENERATED:temporal_unary_scalar temporal_num_timestamps GENERATED:temporal_scalar_transform temporal_round GENERATED:value_marshalled temporal_scale_time -GAP temporal_segm_duration +GENERATED:value_marshalled temporal_segm_duration GAP temporal_segments -GAP temporal_sequence_n +GENERATED:value_marshalled temporal_sequence_n GAP temporal_sequences GAP temporal_set_interp GENERATED:value_marshalled temporal_shift_scale_time @@ -2576,10 +2576,10 @@ GENERATED:value_marshalled temporal_simplify_min_tdelta GAP temporal_spans GAP temporal_split_each_n_spans GAP temporal_split_n_spans -GAP temporal_start_instant -GAP temporal_start_sequence +GENERATED:value_marshalled temporal_start_instant +GENERATED:value_marshalled temporal_start_sequence GAP temporal_start_timestamptz -GAP temporal_stops +GENERATED:value_marshalled temporal_stops GAP temporal_subtype RESIDUE:aggregate temporal_tagg_finalfn RESIDUE:aggregate temporal_tcount_combinefn @@ -2717,7 +2717,7 @@ GAP tfloatbox_time_tiles GAP tfloatbox_value_tiles GAP tfloatbox_value_time_tiles RESIDUE:constructor tfloatinst_make -DEFERRED:category-conversion tfloatseq_from_base_tstzset +GENERATED:value_marshalled tfloatseq_from_base_tstzset DEFERRED:category-conversion tfloatseq_from_base_tstzspan DEFERRED:category-conversion tfloatseqset_from_base_tstzspanset GENERATED:value_marshalled tge_bigint_tbigint @@ -2773,7 +2773,7 @@ RESIDUE:io tgeompoint_in GENERATED:temporal_unary_transform tgeompoint_to_tgeometry DEFERRED:category-conversion tgeompoint_to_th3index GENERATED:temporal_unary_transform tgeompoint_to_tnpoint -DEFERRED:category-conversion tgeoseq_from_base_tstzset +GENERATED:value_marshalled tgeoseq_from_base_tstzset DEFERRED:category-conversion tgeoseq_from_base_tstzspan DEFERRED:category-conversion tgeoseqset_from_base_tstzspanset GENERATED:value_marshalled tgt_bigint_tbigint @@ -2966,9 +2966,9 @@ GENERATED:temporal_geom_transform tintersects_tgeo_geo GENERATED:two_temporal_temporal tintersects_tgeo_tgeo RESIDUE:out-param-array tintersects_tgeoarr_tgeoarr RESIDUE:constructor tintinst_make -DEFERRED:category-conversion tintseq_from_base_tstzset -DEFERRED:category-conversion tintseq_from_base_tstzspan -DEFERRED:category-conversion tintseqset_from_base_tstzspanset +GENERATED:value_marshalled tintseq_from_base_tstzset +GENERATED:value_marshalled tintseq_from_base_tstzspan +GENERATED:value_marshalled tintseqset_from_base_tstzspanset GAP tjson_array_element GENERATED:value_marshalled tjson_array_length RESIDUE:out-param-array tjson_extract_path @@ -3011,9 +3011,9 @@ RESIDUE:out-param-array tjsonb_value_at_timestamptz RESIDUE:out-param-array tjsonb_value_n GAP tjsonb_values RESIDUE:constructor tjsonbinst_make -DEFERRED:category-conversion tjsonbseq_from_base_tstzset -DEFERRED:category-conversion tjsonbseq_from_base_tstzspan -DEFERRED:category-conversion tjsonbseqset_from_base_tstzspanset +GENERATED:value_marshalled tjsonbseq_from_base_tstzset +GENERATED:value_marshalled tjsonbseq_from_base_tstzspan +GENERATED:value_marshalled tjsonbseqset_from_base_tstzspanset GENERATED:value_marshalled tle_bigint_tbigint GENERATED:value_marshalled tle_float_tfloat GENERATED:value_marshalled tle_int_tint @@ -3098,7 +3098,7 @@ RESIDUE:out-param-array tnpoint_value_at_timestamptz RESIDUE:out-param-array tnpoint_value_n GAP tnpoint_values RESIDUE:constructor tnpointinst_make -DEFERRED:category-conversion tnpointseq_from_base_tstzset +GENERATED:value_marshalled tnpointseq_from_base_tstzset DEFERRED:category-conversion tnpointseq_from_base_tstzspan DEFERRED:category-conversion tnpointseqset_from_base_tstzspanset GENERATED:temporal_unary_transform tnumber_abs @@ -3169,9 +3169,9 @@ RESIDUE:out-param-array tpcpatch_value_at_timestamptz RESIDUE:out-param-array tpcpatch_value_n GAP tpcpatch_values RESIDUE:constructor tpcpatchinst_make -DEFERRED:category-conversion tpcpatchseq_from_base_tstzset -DEFERRED:category-conversion tpcpatchseq_from_base_tstzspan -DEFERRED:category-conversion tpcpatchseqset_from_base_tstzspanset +GENERATED:value_marshalled tpcpatchseq_from_base_tstzset +GENERATED:value_marshalled tpcpatchseq_from_base_tstzspan +GENERATED:value_marshalled tpcpatchseqset_from_base_tstzspanset GENERATED:value_marshalled tpcpoint_at_value GENERATED:value_marshalled tpcpoint_end_value GENERATED:value_marshalled tpcpoint_from_base_temp @@ -3181,9 +3181,9 @@ RESIDUE:out-param-array tpcpoint_value_at_timestamptz RESIDUE:out-param-array tpcpoint_value_n GAP tpcpoint_values RESIDUE:constructor tpcpointinst_make -DEFERRED:category-conversion tpcpointseq_from_base_tstzset -DEFERRED:category-conversion tpcpointseq_from_base_tstzspan -DEFERRED:category-conversion tpcpointseqset_from_base_tstzspanset +GENERATED:value_marshalled tpcpointseq_from_base_tstzset +GENERATED:value_marshalled tpcpointseq_from_base_tstzspan +GENERATED:value_marshalled tpcpointseqset_from_base_tstzspanset GENERATED:temporal_unary_transform tpoint_angular_difference DEFERRED:category-conversion tpoint_as_mvtgeom GENERATED:value_marshalled tpoint_at_elevation @@ -3210,7 +3210,7 @@ GENERATED:value_marshalled tpoint_trajectory GENERATED:value_marshalled tpoint_twcentroid GENERATED:temporal_unary_transform tpointcloud_to_tgeompoint RESIDUE:constructor tpointinst_make -DEFERRED:category-conversion tpointseq_from_base_tstzset +GENERATED:value_marshalled tpointseq_from_base_tstzset DEFERRED:category-conversion tpointseq_from_base_tstzspan GAP tpointseq_make_coords DEFERRED:category-conversion tpointseqset_from_base_tstzspanset @@ -3256,7 +3256,7 @@ GENERATED:value_marshalled tposechain_num_poses GENERATED:value_marshalled tposechain_to_tpose RESIDUE:out-param-array tposechainarr_as_geopose RESIDUE:constructor tposeinst_make -DEFERRED:category-conversion tposeseq_from_base_tstzset +GENERATED:value_marshalled tposeseq_from_base_tstzset DEFERRED:category-conversion tposeseq_from_base_tstzspan DEFERRED:category-conversion tposeseqset_from_base_tstzspanset GENERATED:temporal_unary_transform tquadbin_cell_to_quadkey @@ -3278,7 +3278,7 @@ GAP trgeometry_append_tinstant GAP trgeometry_append_tsequence RESIDUE:io trgeometry_as_ewkt RESIDUE:io trgeometry_as_text -DEFERRED:category-conversion trgeometry_as_tinstant +GENERATED:value_marshalled trgeometry_as_tinstant DEFERRED:category-conversion trgeometry_as_tsequence DEFERRED:category-conversion trgeometry_as_tsequenceset GENERATED:value_marshalled trgeometry_at_elevation @@ -3301,8 +3301,8 @@ GENERATED:value_marshalled trgeometry_delete_tstzspan GENERATED:value_marshalled trgeometry_delete_tstzspanset GENERATED:two_temporal_scalar trgeometry_dyntimewarp_distance GAP trgeometry_dyntimewarp_path -GAP trgeometry_end_instant -GAP trgeometry_end_sequence +GENERATED:value_marshalled trgeometry_end_instant +GENERATED:value_marshalled trgeometry_end_sequence GENERATED:value_marshalled trgeometry_end_value GENERATED:two_temporal_scalar trgeometry_frechet_distance GAP trgeometry_frechet_path @@ -3310,7 +3310,7 @@ RESIDUE:io trgeometry_from_mfjson GENERATED:value_marshalled trgeometry_geom GENERATED:two_temporal_scalar trgeometry_hausdorff_distance RESIDUE:io trgeometry_in -GAP trgeometry_instant_n +GENERATED:value_marshalled trgeometry_instant_n GAP trgeometry_instants GENERATED:value_marshalled trgeometry_length GENERATED:two_temporal_temporal trgeometry_merge @@ -3330,7 +3330,7 @@ GENERATED:value_marshalled trgeometry_points GENERATED:value_marshalled trgeometry_roll GENERATED:value_marshalled trgeometry_round GAP trgeometry_segments -GAP trgeometry_sequence_n +GENERATED:value_marshalled trgeometry_sequence_n GAP trgeometry_sequences GAP trgeometry_set_interp GAP trgeometry_space_boxes @@ -3338,8 +3338,8 @@ GAP trgeometry_space_time_boxes GENERATED:value_marshalled trgeometry_speed GAP trgeometry_split_each_n_stboxes GAP trgeometry_split_n_stboxes -GAP trgeometry_start_instant -GAP trgeometry_start_sequence +GENERATED:value_marshalled trgeometry_start_instant +GENERATED:value_marshalled trgeometry_start_sequence GENERATED:value_marshalled trgeometry_start_value GAP trgeometry_stboxes GENERATED:value_marshalled trgeometry_to_tgeometry From 29f97d74c24d49a19bf3f09938f4a81f1c416b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 4 Sep 2026 12:01:08 +0200 Subject: [PATCH 4/7] Let a type declare its own text codec `typeEncodings` describes the types whose in/out pair the catalog's encodings scan registers, and a type absent from it can still declare that pair itself. `text` is the case: the catalog states its marshalling in the `wire` block as a plain JSON string -- `always_eq_ttext_text` carries `{"name": "txt", "kind": "json", "json": "string"}` -- while `text_in(const char *) -> text *` and `text_out(const text *) -> char *` are the pair that builds one and reads it back. Reading the catalog's own function list answers a `text *` operand where the encodings map has nothing to say. The EXACT signatures are what keep this from admitting a variety-locked parser. `span_in` takes a MeosType alongside the string, so a Span declines here for the same reason it declines against the encodings map, and travels as the hex-WKB that states which variety it is. The ledger reads 1952 GENERATED, 567 GAP, 868 RESIDUE and 122 DEFERRED, and every one of the 1952 emitted operator cores compiles against a `-DMEOS=ON -DALL=ON` MEOS with 0 errors and 0 warnings. --- tools/codegen/build_descriptor.py | 33 ++++++- tools/codegen/coverage-ledger.txt | 140 +++++++++++++++--------------- 2 files changed, 102 insertions(+), 71 deletions(-) diff --git a/tools/codegen/build_descriptor.py b/tools/codegen/build_descriptor.py index 605cd9d234..9edebb6a2e 100644 --- a/tools/codegen/build_descriptor.py +++ b/tools/codegen/build_descriptor.py @@ -528,7 +528,18 @@ def text_value_input(ctype): enc = _TYPE_ENCODINGS.get(bare) or {} parser = enc.get("in") if not parser or parser != bare.lower() + "_in": - return None + # A type the encodings map does not describe may still declare the pair + # itself. `text` is the case: the catalog states its marshalling in the + # `wire` block as a plain JSON string rather than in typeEncodings, and + # `text_in(const char *) -> text *` with `text_out(const text *) -> + # char *` is the pair that builds one. Requiring the EXACT signatures is + # what keeps this from admitting a variety-locked parser: `span_in` takes + # a MeosType alongside the string, so a Span still declines here as it + # does above. + enc = _self_declared_text_codec(bare) + if not enc: + return None + parser = enc["in"] aux = _parser_aux_args(parser, enc) if aux is None: return None @@ -541,6 +552,26 @@ def text_value_input(ctype): } +def _self_declared_text_codec(bare): + """The text codec a type declares for itself, or None. + + Reads the catalog's own function list rather than its encodings map: a + `_in(const char *) -> T *` paired with a `_out(const T *) -> char *` + IS a text codec whatever the map says, and both have to be reachable for a + generated operator to call them. + """ + lo = bare.lower() + dec, encf = _CATALOG.get(f"{lo}_in"), _CATALOG.get(f"{lo}_out") + if not dec or not encf: + return None + if dec.get("params") != ["char*"] or dec.get("returns") != f"{bare}*": + return None + if (encf.get("params") or [None])[0] != f"{bare}*" or encf.get("returns") != "char*": + return None + return {"in": f"{lo}_in", "out": f"{lo}_out", "in_aux": [], "out_aux": [], + "encoders": {"text": f"{lo}_out"}} + + def _parser_aux_args(parser, enc): """The literal arguments a text parser takes AFTER the string, or None. diff --git a/tools/codegen/coverage-ledger.txt b/tools/codegen/coverage-ledger.txt index 98457cedb4..6106d91f12 100644 --- a/tools/codegen/coverage-ledger.txt +++ b/tools/codegen/coverage-ledger.txt @@ -147,7 +147,7 @@ GENERATED:cmp_scalar_tempfirst always_eq_tbool_bool GENERATED:sprel_scalar_existing always_eq_tcbuffer_cbuffer GENERATED:two_temporal_scalar always_eq_tcbuffer_tcbuffer GENERATED:cmp_two_temporal always_eq_temporal_temporal -GAP always_eq_text_ttext +GENERATED:value_marshalled always_eq_text_ttext GENERATED:cmp_scalar_tempfirst always_eq_tfloat_float GENERATED:sprel_scalar_existing always_eq_tgeo_geo GENERATED:two_temporal_scalar always_eq_tgeo_tgeo @@ -172,43 +172,43 @@ GENERATED:trgeometry_geo_predicate always_eq_trgeometry_geo GENERATED:two_temporal_scalar always_eq_trgeometry_trgeometry GAP always_eq_ts2cell_s2cell GENERATED:two_temporal_scalar always_eq_ts2cell_ts2cell -GAP always_eq_ttext_text +GENERATED:value_marshalled always_eq_ttext_text GENERATED:cmp_scalar_scalarfirst always_ge_bigint_tbigint GENERATED:cmp_scalar_scalarfirst always_ge_float_tfloat GENERATED:cmp_scalar_scalarfirst always_ge_int_tint GENERATED:cmp_scalar_tempfirst always_ge_tbigint_bigint GENERATED:cmp_two_temporal always_ge_temporal_temporal -GAP always_ge_text_ttext +GENERATED:value_marshalled always_ge_text_ttext GENERATED:cmp_scalar_tempfirst always_ge_tfloat_float GENERATED:cmp_scalar_tempfirst always_ge_tint_int -GAP always_ge_ttext_text +GENERATED:value_marshalled always_ge_ttext_text GENERATED:cmp_scalar_scalarfirst always_gt_bigint_tbigint GENERATED:cmp_scalar_scalarfirst always_gt_float_tfloat GENERATED:cmp_scalar_scalarfirst always_gt_int_tint GENERATED:cmp_scalar_tempfirst always_gt_tbigint_bigint GENERATED:cmp_two_temporal always_gt_temporal_temporal -GAP always_gt_text_ttext +GENERATED:value_marshalled always_gt_text_ttext GENERATED:cmp_scalar_tempfirst always_gt_tfloat_float GENERATED:cmp_scalar_tempfirst always_gt_tint_int -GAP always_gt_ttext_text +GENERATED:value_marshalled always_gt_ttext_text GENERATED:cmp_scalar_scalarfirst always_le_bigint_tbigint GENERATED:cmp_scalar_scalarfirst always_le_float_tfloat GENERATED:cmp_scalar_scalarfirst always_le_int_tint GENERATED:cmp_scalar_tempfirst always_le_tbigint_bigint GENERATED:cmp_two_temporal always_le_temporal_temporal -GAP always_le_text_ttext +GENERATED:value_marshalled always_le_text_ttext GENERATED:cmp_scalar_tempfirst always_le_tfloat_float GENERATED:cmp_scalar_tempfirst always_le_tint_int -GAP always_le_ttext_text +GENERATED:value_marshalled always_le_ttext_text GENERATED:cmp_scalar_scalarfirst always_lt_bigint_tbigint GENERATED:cmp_scalar_scalarfirst always_lt_float_tfloat GENERATED:cmp_scalar_scalarfirst always_lt_int_tint GENERATED:cmp_scalar_tempfirst always_lt_tbigint_bigint GENERATED:cmp_two_temporal always_lt_temporal_temporal -GAP always_lt_text_ttext +GENERATED:value_marshalled always_lt_text_ttext GENERATED:cmp_scalar_tempfirst always_lt_tfloat_float GENERATED:cmp_scalar_tempfirst always_lt_tint_int -GAP always_lt_ttext_text +GENERATED:value_marshalled always_lt_ttext_text GENERATED:cmp_scalar_scalarfirst always_ne_bigint_tbigint GENERATED:cmp_scalar_scalarfirst always_ne_bool_tbool GENERATED:value_marshalled always_ne_cbuffer_tcbuffer @@ -230,7 +230,7 @@ GENERATED:cmp_scalar_tempfirst always_ne_tbool_bool GENERATED:sprel_scalar_existing always_ne_tcbuffer_cbuffer GENERATED:two_temporal_scalar always_ne_tcbuffer_tcbuffer GENERATED:cmp_two_temporal always_ne_temporal_temporal -GAP always_ne_text_ttext +GENERATED:value_marshalled always_ne_text_ttext GENERATED:cmp_scalar_tempfirst always_ne_tfloat_float GENERATED:sprel_scalar_existing always_ne_tgeo_geo GENERATED:two_temporal_scalar always_ne_tgeo_tgeo @@ -255,7 +255,7 @@ GENERATED:trgeometry_geo_predicate always_ne_trgeometry_geo GENERATED:two_temporal_scalar always_ne_trgeometry_trgeometry GAP always_ne_ts2cell_s2cell GENERATED:two_temporal_scalar always_ne_ts2cell_ts2cell -GAP always_ne_ttext_text +GENERATED:value_marshalled always_ne_ttext_text GAP araster_value GAP araster_value_gdal GENERATED:temporal_x_geom atouches_geo_tgeo @@ -440,7 +440,7 @@ GENERATED:two_static_values contained_tbox_tbox GENERATED:temporal_x_box contained_tbox_tnumber GENERATED:two_temporal_scalar contained_temporal_temporal GENERATED:temporal_x_box contained_temporal_tstzspan -GAP contained_text_set +GENERATED:value_marshalled contained_text_set GAP contained_timestamptz_set GAP contained_timestamptz_span GAP contained_timestamptz_spanset @@ -469,7 +469,7 @@ GENERATED:value_marshalled contains_set_pcpoint GENERATED:value_marshalled contains_set_pose GENERATED:value_marshalled contains_set_posechain GENERATED:value_marshalled contains_set_set -GAP contains_set_text +GENERATED:value_marshalled contains_set_text GAP contains_set_timestamptz GENERATED:value_marshalled contains_span_bigint GAP contains_span_date @@ -702,7 +702,7 @@ GENERATED:cmp_scalar_tempfirst ever_eq_tbool_bool GENERATED:sprel_scalar_existing ever_eq_tcbuffer_cbuffer GENERATED:two_temporal_scalar ever_eq_tcbuffer_tcbuffer GENERATED:cmp_two_temporal ever_eq_temporal_temporal -GAP ever_eq_text_ttext +GENERATED:value_marshalled ever_eq_text_ttext GENERATED:cmp_scalar_tempfirst ever_eq_tfloat_float GENERATED:sprel_scalar_existing ever_eq_tgeo_geo GENERATED:two_temporal_scalar ever_eq_tgeo_tgeo @@ -727,43 +727,43 @@ GENERATED:trgeometry_geo_predicate ever_eq_trgeometry_geo GENERATED:two_temporal_scalar ever_eq_trgeometry_trgeometry GAP ever_eq_ts2cell_s2cell GENERATED:two_temporal_scalar ever_eq_ts2cell_ts2cell -GAP ever_eq_ttext_text +GENERATED:value_marshalled ever_eq_ttext_text GENERATED:cmp_scalar_scalarfirst ever_ge_bigint_tbigint GENERATED:cmp_scalar_scalarfirst ever_ge_float_tfloat GENERATED:cmp_scalar_scalarfirst ever_ge_int_tint GENERATED:cmp_scalar_tempfirst ever_ge_tbigint_bigint GENERATED:cmp_two_temporal ever_ge_temporal_temporal -GAP ever_ge_text_ttext +GENERATED:value_marshalled ever_ge_text_ttext GENERATED:cmp_scalar_tempfirst ever_ge_tfloat_float GENERATED:cmp_scalar_tempfirst ever_ge_tint_int -GAP ever_ge_ttext_text +GENERATED:value_marshalled ever_ge_ttext_text GENERATED:cmp_scalar_scalarfirst ever_gt_bigint_tbigint GENERATED:cmp_scalar_scalarfirst ever_gt_float_tfloat GENERATED:cmp_scalar_scalarfirst ever_gt_int_tint GENERATED:cmp_scalar_tempfirst ever_gt_tbigint_bigint GENERATED:cmp_two_temporal ever_gt_temporal_temporal -GAP ever_gt_text_ttext +GENERATED:value_marshalled ever_gt_text_ttext GENERATED:cmp_scalar_tempfirst ever_gt_tfloat_float GENERATED:cmp_scalar_tempfirst ever_gt_tint_int -GAP ever_gt_ttext_text +GENERATED:value_marshalled ever_gt_ttext_text GENERATED:cmp_scalar_scalarfirst ever_le_bigint_tbigint GENERATED:cmp_scalar_scalarfirst ever_le_float_tfloat GENERATED:cmp_scalar_scalarfirst ever_le_int_tint GENERATED:cmp_scalar_tempfirst ever_le_tbigint_bigint GENERATED:cmp_two_temporal ever_le_temporal_temporal -GAP ever_le_text_ttext +GENERATED:value_marshalled ever_le_text_ttext GENERATED:cmp_scalar_tempfirst ever_le_tfloat_float GENERATED:cmp_scalar_tempfirst ever_le_tint_int -GAP ever_le_ttext_text +GENERATED:value_marshalled ever_le_ttext_text GENERATED:cmp_scalar_scalarfirst ever_lt_bigint_tbigint GENERATED:cmp_scalar_scalarfirst ever_lt_float_tfloat GENERATED:cmp_scalar_scalarfirst ever_lt_int_tint GENERATED:cmp_scalar_tempfirst ever_lt_tbigint_bigint GENERATED:cmp_two_temporal ever_lt_temporal_temporal -GAP ever_lt_text_ttext +GENERATED:value_marshalled ever_lt_text_ttext GENERATED:cmp_scalar_tempfirst ever_lt_tfloat_float GENERATED:cmp_scalar_tempfirst ever_lt_tint_int -GAP ever_lt_ttext_text +GENERATED:value_marshalled ever_lt_ttext_text GENERATED:cmp_scalar_scalarfirst ever_ne_bigint_tbigint GENERATED:cmp_scalar_scalarfirst ever_ne_bool_tbool GENERATED:value_marshalled ever_ne_cbuffer_tcbuffer @@ -785,7 +785,7 @@ GENERATED:cmp_scalar_tempfirst ever_ne_tbool_bool GENERATED:sprel_scalar_existing ever_ne_tcbuffer_cbuffer GENERATED:two_temporal_scalar ever_ne_tcbuffer_tcbuffer GENERATED:cmp_two_temporal ever_ne_temporal_temporal -GAP ever_ne_text_ttext +GENERATED:value_marshalled ever_ne_text_ttext GENERATED:cmp_scalar_tempfirst ever_ne_tfloat_float GENERATED:sprel_scalar_existing ever_ne_tgeo_geo GENERATED:two_temporal_scalar ever_ne_tgeo_tgeo @@ -810,7 +810,7 @@ GENERATED:trgeometry_geo_predicate ever_ne_trgeometry_geo GENERATED:two_temporal_scalar ever_ne_trgeometry_trgeometry GAP ever_ne_ts2cell_s2cell GENERATED:two_temporal_scalar ever_ne_ts2cell_ts2cell -GAP ever_ne_ttext_text +GENERATED:value_marshalled ever_ne_ttext_text RESIDUE:internal-header float8_abs RESIDUE:internal-header float8_ceil RESIDUE:internal-header float8_cmp @@ -1107,7 +1107,7 @@ GENERATED:value_marshalled intersection_set_pcpoint GENERATED:value_marshalled intersection_set_pose GENERATED:value_marshalled intersection_set_posechain GENERATED:value_marshalled intersection_set_set -GAP intersection_set_text +GENERATED:value_marshalled intersection_set_text GAP intersection_set_timestamptz GENERATED:value_marshalled intersection_span_bigint GAP intersection_span_date @@ -1125,7 +1125,7 @@ GENERATED:value_marshalled intersection_spanset_spanset GAP intersection_spanset_timestamptz GENERATED:value_marshalled intersection_stbox_stbox GENERATED:value_marshalled intersection_tbox_tbox -GAP intersection_text_set +GENERATED:value_marshalled intersection_text_set GAP intersection_timestamptz_set GENERATED:value_marshalled intersection_tpcbox_tpcbox GENERATED:two_static_values intersects_cbuffer_cbuffer @@ -1186,7 +1186,7 @@ GAP json_array_element GAP json_array_element_text GAP json_array_elements GAP json_array_elements_text -GAP json_array_length +GENERATED:value_marshalled json_array_length RESIDUE:out-param-array json_each RESIDUE:out-param-array json_each_text RESIDUE:out-param-array json_extract_path @@ -1210,14 +1210,14 @@ GENERATED:value_marshalled jsonb_concat GENERATED:two_static_values jsonb_contained GENERATED:two_static_values jsonb_contains RESIDUE:constructor jsonb_copy -GAP jsonb_delete +GENERATED:value_marshalled jsonb_delete RESIDUE:out-param-array jsonb_delete_array GENERATED:value_marshalled jsonb_delete_index RESIDUE:out-param-array jsonb_delete_path RESIDUE:out-param-array jsonb_each RESIDUE:out-param-array jsonb_each_text GENERATED:two_static_values jsonb_eq -GAP jsonb_exists +GENERATED:value_marshalled jsonb_exists RESIDUE:out-param-array jsonb_exists_array RESIDUE:out-param-array jsonb_extract_path RESIDUE:out-param-array jsonb_extract_path_text @@ -1233,7 +1233,7 @@ GENERATED:two_static_values jsonb_lt RESIDUE:constructor jsonb_make RESIDUE:out-param-array jsonb_make_two_arg GENERATED:two_static_values jsonb_ne -GAP jsonb_object_field +GENERATED:value_marshalled jsonb_object_field GAP jsonb_object_field_text GAP jsonb_object_keys RESIDUE:io jsonb_out @@ -1259,7 +1259,7 @@ DEFERRED:category-conversion jsonb_to_text RESIDUE:aggregate jsonb_union_transfn GAP jsonbset_array_element GENERATED:value_marshalled jsonbset_array_length -GAP jsonbset_delete +GENERATED:value_marshalled jsonbset_delete RESIDUE:out-param-array jsonbset_delete_array GENERATED:value_marshalled jsonbset_delete_index RESIDUE:out-param-array jsonbset_delete_path @@ -1317,7 +1317,7 @@ GENERATED:value_marshalled left_set_bigint GENERATED:value_marshalled left_set_float GENERATED:value_marshalled left_set_int GENERATED:value_marshalled left_set_set -GAP left_set_text +GENERATED:value_marshalled left_set_text GENERATED:value_marshalled left_span_bigint GENERATED:value_marshalled left_span_float GENERATED:value_marshalled left_span_int @@ -1332,7 +1332,7 @@ GENERATED:two_static_values left_stbox_stbox GENERATED:temporal_x_box left_stbox_tspatial GENERATED:two_static_values left_tbox_tbox GENERATED:temporal_x_box left_tbox_tnumber -GAP left_text_set +GENERATED:value_marshalled left_text_set GENERATED:value_marshalled left_tnumber_numspan GENERATED:temporal_x_box left_tnumber_tbox GENERATED:two_temporal_scalar left_tnumber_tnumber @@ -1444,7 +1444,7 @@ GENERATED:value_marshalled minus_set_pcpoint GENERATED:value_marshalled minus_set_pose GENERATED:value_marshalled minus_set_posechain GENERATED:value_marshalled minus_set_set -GAP minus_set_text +GENERATED:value_marshalled minus_set_text GAP minus_set_timestamptz GENERATED:value_marshalled minus_span_bigint GAP minus_span_date @@ -1460,7 +1460,7 @@ GENERATED:value_marshalled minus_spanset_int GENERATED:value_marshalled minus_spanset_span GENERATED:value_marshalled minus_spanset_spanset GAP minus_spanset_timestamptz -GAP minus_text_set +GENERATED:value_marshalled minus_text_set RESIDUE:internal-header minus_time_interval RESIDUE:internal-header minus_time_time RESIDUE:internal-header minus_timestamp_interval @@ -1714,7 +1714,7 @@ GENERATED:value_marshalled overleft_set_bigint GENERATED:value_marshalled overleft_set_float GENERATED:value_marshalled overleft_set_int GENERATED:value_marshalled overleft_set_set -GAP overleft_set_text +GENERATED:value_marshalled overleft_set_text GENERATED:value_marshalled overleft_span_bigint GENERATED:value_marshalled overleft_span_float GENERATED:value_marshalled overleft_span_int @@ -1729,7 +1729,7 @@ GENERATED:two_static_values overleft_stbox_stbox GENERATED:temporal_x_box overleft_stbox_tspatial GENERATED:two_static_values overleft_tbox_tbox GENERATED:temporal_x_box overleft_tbox_tnumber -GAP overleft_text_set +GENERATED:value_marshalled overleft_text_set GENERATED:value_marshalled overleft_tnumber_numspan GENERATED:temporal_x_box overleft_tnumber_tbox GENERATED:two_temporal_scalar overleft_tnumber_tnumber @@ -1750,7 +1750,7 @@ GENERATED:value_marshalled overright_set_bigint GENERATED:value_marshalled overright_set_float GENERATED:value_marshalled overright_set_int GENERATED:value_marshalled overright_set_set -GAP overright_set_text +GENERATED:value_marshalled overright_set_text GENERATED:value_marshalled overright_span_bigint GENERATED:value_marshalled overright_span_float GENERATED:value_marshalled overright_span_int @@ -1765,7 +1765,7 @@ GENERATED:two_static_values overright_stbox_stbox GENERATED:temporal_x_box overright_stbox_tspatial GENERATED:two_static_values overright_tbox_tbox GENERATED:temporal_x_box overright_tbox_tnumber -GAP overright_text_set +GENERATED:value_marshalled overright_text_set GENERATED:value_marshalled overright_tnumber_numspan GENERATED:temporal_x_box overright_tnumber_tbox GENERATED:two_temporal_scalar overright_tnumber_tnumber @@ -2028,7 +2028,7 @@ GENERATED:value_marshalled right_set_bigint GENERATED:value_marshalled right_set_float GENERATED:value_marshalled right_set_int GENERATED:value_marshalled right_set_set -GAP right_set_text +GENERATED:value_marshalled right_set_text GENERATED:value_marshalled right_span_bigint GENERATED:value_marshalled right_span_float GENERATED:value_marshalled right_span_int @@ -2043,7 +2043,7 @@ GENERATED:two_static_values right_stbox_stbox GENERATED:temporal_x_box right_stbox_tspatial GENERATED:two_static_values right_tbox_tbox GENERATED:temporal_x_box right_tbox_tnumber -GAP right_text_set +GENERATED:value_marshalled right_text_set GENERATED:value_marshalled right_tnumber_numspan GENERATED:temporal_x_box right_tnumber_tbox GENERATED:two_temporal_scalar right_tnumber_tnumber @@ -2614,7 +2614,7 @@ GENERATED:temporal_scalar_transform teq_tbigint_bigint GENERATED:temporal_scalar_transform teq_tbool_bool GENERATED:value_marshalled teq_tcbuffer_cbuffer GENERATED:two_temporal_temporal teq_temporal_temporal -GAP teq_text_ttext +GENERATED:value_marshalled teq_text_ttext GENERATED:temporal_scalar_transform teq_tfloat_float GENERATED:temporal_geom_transform teq_tgeo_geo GENERATED:temporal_scalar_transform teq_th3index_h3index @@ -2631,7 +2631,7 @@ GENERATED:two_temporal_temporal teq_tquadbin_tquadbin GENERATED:value_marshalled teq_trgeometry_geo GAP teq_ts2cell_s2cell GENERATED:two_temporal_temporal teq_ts2cell_ts2cell -GAP teq_ttext_text +GENERATED:value_marshalled teq_ttext_text RESIDUE:internal-header text_cmp RESIDUE:internal-header text_eq RESIDUE:internal-header text_ge @@ -2649,14 +2649,14 @@ RESIDUE:internal-header text_pattern_ge RESIDUE:internal-header text_pattern_gt RESIDUE:internal-header text_pattern_le RESIDUE:internal-header text_pattern_lt -DEFERRED:category-conversion text_to_set +GENERATED:value_marshalled text_to_set RESIDUE:aggregate text_union_transfn RESIDUE:internal-header text_upper RESIDUE:internal-header textcat_text_text -GAP textcat_text_textset -GAP textcat_text_ttext -GAP textcat_textset_text -GAP textcat_ttext_text +GENERATED:value_marshalled textcat_text_textset +GENERATED:value_marshalled textcat_text_ttext +GENERATED:value_marshalled textcat_textset_text +GENERATED:value_marshalled textcat_ttext_text GENERATED:two_temporal_temporal textcat_ttext_ttext GAP textset_end_value RESIDUE:io textset_in @@ -2725,10 +2725,10 @@ GENERATED:value_marshalled tge_float_tfloat GENERATED:value_marshalled tge_int_tint GENERATED:temporal_scalar_transform tge_tbigint_bigint GENERATED:two_temporal_temporal tge_temporal_temporal -GAP tge_text_ttext +GENERATED:value_marshalled tge_text_ttext GENERATED:temporal_scalar_transform tge_tfloat_float GENERATED:temporal_scalar_transform tge_tint_int -GAP tge_ttext_text +GENERATED:value_marshalled tge_ttext_text GAP tgeo_affine GENERATED:temporal_geom_transform tgeo_at_geom GENERATED:value_marshalled tgeo_at_stbox @@ -2781,10 +2781,10 @@ GENERATED:value_marshalled tgt_float_tfloat GENERATED:value_marshalled tgt_int_tint GENERATED:temporal_scalar_transform tgt_tbigint_bigint GENERATED:two_temporal_temporal tgt_temporal_temporal -GAP tgt_text_ttext +GENERATED:value_marshalled tgt_text_ttext GENERATED:temporal_scalar_transform tgt_tfloat_float GENERATED:temporal_scalar_transform tgt_tint_int -GAP tgt_ttext_text +GENERATED:value_marshalled tgt_ttext_text GENERATED:two_temporal_temporal th3index_are_neighbor_cells DEFERRED:category-conversion th3index_cell_to_center_child GENERATED:temporal_unary_transform th3index_cell_to_center_child_next @@ -2977,12 +2977,12 @@ GENERATED:value_marshalled tjson_strip_nulls GAP tjsonb_array_element GENERATED:value_marshalled tjsonb_array_length GENERATED:value_marshalled tjsonb_at_value -GAP tjsonb_delete +GENERATED:value_marshalled tjsonb_delete RESIDUE:out-param-array tjsonb_delete_array GENERATED:value_marshalled tjsonb_delete_index RESIDUE:out-param-array tjsonb_delete_path GENERATED:value_marshalled tjsonb_end_value -GAP tjsonb_exists +GENERATED:value_marshalled tjsonb_exists RESIDUE:out-param-array tjsonb_exists_all RESIDUE:out-param-array tjsonb_exists_any RESIDUE:out-param-array tjsonb_exists_array @@ -3019,19 +3019,19 @@ GENERATED:value_marshalled tle_float_tfloat GENERATED:value_marshalled tle_int_tint GENERATED:temporal_scalar_transform tle_tbigint_bigint GENERATED:two_temporal_temporal tle_temporal_temporal -GAP tle_text_ttext +GENERATED:value_marshalled tle_text_ttext GENERATED:temporal_scalar_transform tle_tfloat_float GENERATED:temporal_scalar_transform tle_tint_int -GAP tle_ttext_text +GENERATED:value_marshalled tle_ttext_text GENERATED:value_marshalled tlt_bigint_tbigint GENERATED:value_marshalled tlt_float_tfloat GENERATED:value_marshalled tlt_int_tint GENERATED:temporal_scalar_transform tlt_tbigint_bigint GENERATED:two_temporal_temporal tlt_temporal_temporal -GAP tlt_text_ttext +GENERATED:value_marshalled tlt_text_ttext GENERATED:temporal_scalar_transform tlt_tfloat_float GENERATED:temporal_scalar_transform tlt_tint_int -GAP tlt_ttext_text +GENERATED:value_marshalled tlt_ttext_text GENERATED:value_marshalled tne_bigint_tbigint GENERATED:value_marshalled tne_bool_tbool GENERATED:value_marshalled tne_cbuffer_tcbuffer @@ -3051,7 +3051,7 @@ GENERATED:temporal_scalar_transform tne_tbigint_bigint GENERATED:temporal_scalar_transform tne_tbool_bool GENERATED:value_marshalled tne_tcbuffer_cbuffer GENERATED:two_temporal_temporal tne_temporal_temporal -GAP tne_text_ttext +GENERATED:value_marshalled tne_text_ttext GENERATED:temporal_scalar_transform tne_tfloat_float GENERATED:temporal_geom_transform tne_tgeo_geo GENERATED:temporal_scalar_transform tne_th3index_h3index @@ -3068,7 +3068,7 @@ GENERATED:two_temporal_temporal tne_tquadbin_tquadbin GENERATED:value_marshalled tne_trgeometry_geo GAP tne_ts2cell_s2cell GENERATED:two_temporal_temporal tne_ts2cell_ts2cell -GAP tne_ttext_text +GENERATED:value_marshalled tne_ttext_text GENERATED:temporal_unary_transform tnot_tbool GENERATED:temporal_geom_transform tnpoint_at_geom GENERATED:value_marshalled tnpoint_at_npoint @@ -3418,16 +3418,16 @@ GENERATED:value_marshalled tstzspanset_to_datespanset GENERATED:value_marshalled tstzspanset_to_stbox GAP tstzspanset_tprecision GAP tstzspanset_upper -GAP ttext_at_value +GENERATED:value_marshalled ttext_at_value GAP ttext_end_value -DEFERRED:category-conversion ttext_from_base_temp +GENERATED:value_marshalled ttext_from_base_temp RESIDUE:io ttext_from_mfjson RESIDUE:io ttext_in GENERATED:value_marshalled ttext_initcap GENERATED:value_marshalled ttext_lower GAP ttext_max_value GAP ttext_min_value -GAP ttext_minus_value +GENERATED:value_marshalled ttext_minus_value RESIDUE:io ttext_out GAP ttext_start_value RESIDUE:aggregate ttext_tmax_combinefn @@ -3440,9 +3440,9 @@ RESIDUE:out-param-array ttext_value_at_timestamptz RESIDUE:out-param-array ttext_value_n GAP ttext_values RESIDUE:constructor ttextinst_make -DEFERRED:category-conversion ttextseq_from_base_tstzset -DEFERRED:category-conversion ttextseq_from_base_tstzspan -DEFERRED:category-conversion ttextseqset_from_base_tstzspanset +GENERATED:value_marshalled ttextseq_from_base_tstzset +GENERATED:value_marshalled ttextseq_from_base_tstzspan +GENERATED:value_marshalled ttextseqset_from_base_tstzspanset GENERATED:value_marshalled ttouches_cbuffer_tcbuffer GENERATED:temporal_geom_transform ttouches_geo_tcbuffer GENERATED:temporal_geom_transform ttouches_geo_tgeo @@ -3485,7 +3485,7 @@ GENERATED:value_marshalled union_set_pcpoint GENERATED:value_marshalled union_set_pose GENERATED:value_marshalled union_set_posechain GENERATED:value_marshalled union_set_set -GAP union_set_text +GENERATED:value_marshalled union_set_text GAP union_set_timestamptz GENERATED:value_marshalled union_span_bigint GAP union_span_date @@ -3503,7 +3503,7 @@ GENERATED:value_marshalled union_spanset_spanset GAP union_spanset_timestamptz GENERATED:value_marshalled union_stbox_stbox GENERATED:value_marshalled union_tbox_tbox -GAP union_text_set +GENERATED:value_marshalled union_text_set GAP union_timestamptz_set GAP union_timestamptz_span GAP union_timestamptz_spanset From ac74fa8024cc5fa8f70c7fcb6ba0788f3e8113e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 4 Sep 2026 12:31:17 +0200 Subject: [PATCH 5/7] Take a timestamp argument as the epoch the event already carries Every operand builder makes its instant from a `uint64_t` epoch column, through `MEOS::Meos::convertEpochToTimestamp` and `timestamptz_in`. A function taking a `TimestampTz` ARGUMENT wants the same value by the same route, so the argument is an epoch column too and the conversion sits where the call is assembled. MEOS owns the timezone resolution, as it owns the SRID: the binding hands it the text and parses nothing itself. Nothing here states the width of the typedef. The catalog resolves no typedefs, which is why an `S2CellId` operand declines rather than narrow in silence; a timestamp needs no such guess, because the value reaches MEOS as the text `timestamptz_in` parses. The ledger reads 2002 GENERATED, 523 GAP, 868 RESIDUE and 116 DEFERRED, and every one of the 2002 emitted operator cores compiles against a `-DMEOS=ON -DALL=ON` MEOS with 0 errors and 0 warnings. --- tools/codegen/build_descriptor.py | 7 +++ tools/codegen/codegen_nebula.py | 10 +++ tools/codegen/coverage-ledger.txt | 100 +++++++++++++++--------------- 3 files changed, 67 insertions(+), 50 deletions(-) diff --git a/tools/codegen/build_descriptor.py b/tools/codegen/build_descriptor.py index 9edebb6a2e..25be635d21 100644 --- a/tools/codegen/build_descriptor.py +++ b/tools/codegen/build_descriptor.py @@ -663,6 +663,13 @@ def operand_marshalling(ctype): return {"kind": "scalar", "cpp": SCALAR_CPP[ctype]} if ctype == "GSERIALIZED*": return {"kind": "geom", "cpp_type": "GSERIALIZED"} + if ctype == "TimestampTz": + # Every operand builder already makes a TimestampTz out of the event's + # epoch column, through the timestamp text and `timestamptz_in`. An + # ARGUMENT of that type is the same value by the same route, so it + # reuses a path that already compiles rather than assuming the width of + # a typedef the catalog does not resolve. + return {"kind": "epoch", "cpp": "uint64_t"} # `rstrip("*")` reads `Cbuffer**` as `Cbuffer`, so without this a # pointer-to-pointer -- an array of values, or a value written back through # the argument -- would be marshalled as the single value it is not. diff --git a/tools/codegen/codegen_nebula.py b/tools/codegen/codegen_nebula.py index fddbbbb307..def75b9c38 100644 --- a/tools/codegen/codegen_nebula.py +++ b/tools/codegen/codegen_nebula.py @@ -4148,6 +4148,16 @@ def assemble_generic_physical(op): f' if (!arg{i}T) {{ free(temp); return {zero}; }}\n') call_terms.append(f"arg{i}T") box_frees.append(f"free(arg{i}T);") + elif ex["kind"] == "epoch": + # The event carries the instant as the epoch every other operand + # builder reads, and the same helper turns it into the timestamp + # text `timestamptz_in` parses. Nothing here states the width of the + # typedef; MEOS answers it. + fields.append((f"arg{i}", ex["cpp"])) + parse_lines.append( + f' TimestampTz arg{i}T = timestamptz_in(' + f'MEOS::Meos::convertEpochToTimestamp(arg{i}).c_str(), -1);\n') + call_terms.append(f"arg{i}T") elif ex["kind"] == "wkb_value": # A static MEOS value -- a span, a set, a spanset, a box -- carried # as a VARSIZED hex-WKB field and read back with the type-generic diff --git a/tools/codegen/coverage-ledger.txt b/tools/codegen/coverage-ledger.txt index 6106d91f12..413b9761b7 100644 --- a/tools/codegen/coverage-ledger.txt +++ b/tools/codegen/coverage-ledger.txt @@ -59,14 +59,14 @@ GENERATED:value_marshalled adjacent_span_float GENERATED:value_marshalled adjacent_span_int GENERATED:value_marshalled adjacent_span_span GENERATED:value_marshalled adjacent_span_spanset -GAP adjacent_span_timestamptz +GENERATED:value_marshalled adjacent_span_timestamptz GENERATED:value_marshalled adjacent_spanset_bigint GAP adjacent_spanset_date GENERATED:value_marshalled adjacent_spanset_float GENERATED:value_marshalled adjacent_spanset_int GENERATED:value_marshalled adjacent_spanset_span GENERATED:value_marshalled adjacent_spanset_spanset -GAP adjacent_spanset_timestamptz +GENERATED:value_marshalled adjacent_spanset_timestamptz GENERATED:two_static_values adjacent_stbox_stbox GENERATED:temporal_x_box adjacent_stbox_tspatial GENERATED:two_static_values adjacent_tbox_tbox @@ -97,11 +97,11 @@ GAP after_date_set GAP after_date_span GAP after_date_spanset GAP after_set_date -GAP after_set_timestamptz +GENERATED:value_marshalled after_set_timestamptz GAP after_span_date -GAP after_span_timestamptz +GENERATED:value_marshalled after_span_timestamptz GAP after_spanset_date -GAP after_spanset_timestamptz +GENERATED:value_marshalled after_spanset_timestamptz GENERATED:two_static_values after_stbox_stbox GENERATED:temporal_x_box after_stbox_tspatial GENERATED:two_static_values after_tbox_tbox @@ -279,11 +279,11 @@ GAP before_date_set GAP before_date_span GAP before_date_spanset GAP before_set_date -GAP before_set_timestamptz +GENERATED:value_marshalled before_set_timestamptz GAP before_span_date -GAP before_span_timestamptz +GENERATED:value_marshalled before_span_timestamptz GAP before_spanset_date -GAP before_spanset_timestamptz +GENERATED:value_marshalled before_spanset_timestamptz GENERATED:two_static_values before_stbox_stbox GENERATED:temporal_x_box before_stbox_tspatial GENERATED:two_static_values before_tbox_tbox @@ -380,7 +380,7 @@ GENERATED:value_marshalled cbuffer_round GENERATED:two_static_values cbuffer_same GAP cbuffer_set_srid GAP cbuffer_srid -DEFERRED:category-conversion cbuffer_timestamptz_to_stbox +GENERATED:value_marshalled cbuffer_timestamptz_to_stbox GENERATED:value_marshalled cbuffer_to_geom GENERATED:value_marshalled cbuffer_to_set GENERATED:value_marshalled cbuffer_to_stbox @@ -470,21 +470,21 @@ GENERATED:value_marshalled contains_set_pose GENERATED:value_marshalled contains_set_posechain GENERATED:value_marshalled contains_set_set GENERATED:value_marshalled contains_set_text -GAP contains_set_timestamptz +GENERATED:value_marshalled contains_set_timestamptz GENERATED:value_marshalled contains_span_bigint GAP contains_span_date GENERATED:value_marshalled contains_span_float GENERATED:value_marshalled contains_span_int GENERATED:value_marshalled contains_span_span GENERATED:value_marshalled contains_span_spanset -GAP contains_span_timestamptz +GENERATED:value_marshalled contains_span_timestamptz GENERATED:value_marshalled contains_spanset_bigint GAP contains_spanset_date GENERATED:value_marshalled contains_spanset_float GENERATED:value_marshalled contains_spanset_int GENERATED:value_marshalled contains_spanset_span GENERATED:value_marshalled contains_spanset_spanset -GAP contains_spanset_timestamptz +GENERATED:value_marshalled contains_spanset_timestamptz GENERATED:two_static_values contains_stbox_stbox GENERATED:temporal_x_box contains_stbox_tspatial GENERATED:two_static_values contains_tbox_tbox @@ -582,17 +582,17 @@ GAP distance_set_bigint GAP distance_set_date GENERATED:value_marshalled distance_set_float GENERATED:value_marshalled distance_set_int -GAP distance_set_timestamptz +GENERATED:value_marshalled distance_set_timestamptz GAP distance_span_bigint GAP distance_span_date GENERATED:value_marshalled distance_span_float GENERATED:value_marshalled distance_span_int -GAP distance_span_timestamptz +GENERATED:value_marshalled distance_span_timestamptz GAP distance_spanset_bigint GAP distance_spanset_date GENERATED:value_marshalled distance_spanset_float GENERATED:value_marshalled distance_spanset_int -GAP distance_spanset_timestamptz +GENERATED:value_marshalled distance_spanset_timestamptz GENERATED:value_marshalled distance_tstzset_tstzset GENERATED:value_marshalled distance_tstzspan_tstzspan GENERATED:value_marshalled distance_tstzspanset_tstzspan @@ -935,7 +935,7 @@ GAP geo_split_each_n_stboxes GAP geo_split_n_stboxes GAP geo_srid GAP geo_stboxes -DEFERRED:category-conversion geo_timestamptz_to_stbox +GENERATED:value_marshalled geo_timestamptz_to_stbox DEFERRED:category-conversion geo_to_h3index_cell DEFERRED:category-conversion geo_to_h3index_set DEFERRED:category-conversion geo_to_quadbin_cell @@ -1108,21 +1108,21 @@ GENERATED:value_marshalled intersection_set_pose GENERATED:value_marshalled intersection_set_posechain GENERATED:value_marshalled intersection_set_set GENERATED:value_marshalled intersection_set_text -GAP intersection_set_timestamptz +GENERATED:value_marshalled intersection_set_timestamptz GENERATED:value_marshalled intersection_span_bigint GAP intersection_span_date GENERATED:value_marshalled intersection_span_float GENERATED:value_marshalled intersection_span_int GENERATED:value_marshalled intersection_span_span GENERATED:value_marshalled intersection_span_spanset -GAP intersection_span_timestamptz +GENERATED:value_marshalled intersection_span_timestamptz GENERATED:value_marshalled intersection_spanset_bigint GAP intersection_spanset_date GENERATED:value_marshalled intersection_spanset_float GENERATED:value_marshalled intersection_spanset_int GENERATED:value_marshalled intersection_spanset_span GENERATED:value_marshalled intersection_spanset_spanset -GAP intersection_spanset_timestamptz +GENERATED:value_marshalled intersection_spanset_timestamptz GENERATED:value_marshalled intersection_stbox_stbox GENERATED:value_marshalled intersection_tbox_tbox GENERATED:value_marshalled intersection_text_set @@ -1445,21 +1445,21 @@ GENERATED:value_marshalled minus_set_pose GENERATED:value_marshalled minus_set_posechain GENERATED:value_marshalled minus_set_set GENERATED:value_marshalled minus_set_text -GAP minus_set_timestamptz +GENERATED:value_marshalled minus_set_timestamptz GENERATED:value_marshalled minus_span_bigint GAP minus_span_date GENERATED:value_marshalled minus_span_float GENERATED:value_marshalled minus_span_int GENERATED:value_marshalled minus_span_span GENERATED:value_marshalled minus_span_spanset -GAP minus_span_timestamptz +GENERATED:value_marshalled minus_span_timestamptz GENERATED:value_marshalled minus_spanset_bigint GAP minus_spanset_date GENERATED:value_marshalled minus_spanset_float GENERATED:value_marshalled minus_spanset_int GENERATED:value_marshalled minus_spanset_span GENERATED:value_marshalled minus_spanset_spanset -GAP minus_spanset_timestamptz +GENERATED:value_marshalled minus_spanset_timestamptz GENERATED:value_marshalled minus_text_set RESIDUE:internal-header minus_time_interval RESIDUE:internal-header minus_time_time @@ -1575,7 +1575,7 @@ GENERATED:value_marshalled npoint_round GAP npoint_route GENERATED:two_static_values npoint_same GAP npoint_srid -DEFERRED:category-conversion npoint_timestamptz_to_stbox +GENERATED:value_marshalled npoint_timestamptz_to_stbox GENERATED:value_marshalled npoint_to_geompoint GENERATED:value_marshalled npoint_to_nsegment GENERATED:value_marshalled npoint_to_set @@ -1608,7 +1608,7 @@ GENERATED:value_marshalled nsegment_start_position GENERATED:value_marshalled nsegment_to_geom GENERATED:value_marshalled nsegment_to_stbox DEFERRED:category-conversion null_handle_type_from_string -DEFERRED:category-conversion numspan_timestamptz_to_tbox +GENERATED:value_marshalled numspan_timestamptz_to_tbox GENERATED:value_marshalled numspan_tstzspan_to_tbox GENERATED:two_static_values overabove_stbox_stbox GENERATED:temporal_x_box overabove_stbox_tspatial @@ -1619,11 +1619,11 @@ GAP overafter_date_set GAP overafter_date_span GAP overafter_date_spanset GAP overafter_set_date -GAP overafter_set_timestamptz +GENERATED:value_marshalled overafter_set_timestamptz GAP overafter_span_date -GAP overafter_span_timestamptz +GENERATED:value_marshalled overafter_span_timestamptz GAP overafter_spanset_date -GAP overafter_spanset_timestamptz +GENERATED:value_marshalled overafter_spanset_timestamptz GENERATED:two_static_values overafter_stbox_stbox GENERATED:temporal_x_box overafter_stbox_tspatial GENERATED:two_static_values overafter_tbox_tbox @@ -1648,11 +1648,11 @@ GAP overbefore_date_set GAP overbefore_date_span GAP overbefore_date_spanset GAP overbefore_set_date -GAP overbefore_set_timestamptz +GENERATED:value_marshalled overbefore_set_timestamptz GAP overbefore_span_date -GAP overbefore_span_timestamptz +GENERATED:value_marshalled overbefore_span_timestamptz GAP overbefore_spanset_date -GAP overbefore_spanset_timestamptz +GENERATED:value_marshalled overbefore_spanset_timestamptz GENERATED:two_static_values overbefore_stbox_stbox GENERATED:temporal_x_box overbefore_stbox_tspatial GENERATED:two_static_values overbefore_tbox_tbox @@ -1874,7 +1874,7 @@ GENERATED:value_marshalled pose_round GENERATED:two_static_values pose_same GAP pose_set_srid GAP pose_srid -DEFERRED:category-conversion pose_timestamptz_to_stbox +GENERATED:value_marshalled pose_timestamptz_to_stbox GENERATED:value_marshalled pose_to_point GENERATED:value_marshalled pose_to_posechain GENERATED:value_marshalled pose_to_set @@ -1917,7 +1917,7 @@ GENERATED:two_static_values posechain_same GAP posechain_set_srid GAP posechain_srid GENERATED:value_marshalled posechain_start_pose -DEFERRED:category-conversion posechain_timestamptz_to_stbox +GENERATED:value_marshalled posechain_timestamptz_to_stbox GENERATED:value_marshalled posechain_to_point GENERATED:value_marshalled posechain_to_pose GENERATED:value_marshalled posechain_to_set @@ -2260,7 +2260,7 @@ RESIDUE:io stbox_from_wkb GENERATED:two_static_values stbox_ge GENERATED:value_marshalled stbox_get_space GENERATED:value_marshalled stbox_get_space_tile -GAP stbox_get_space_time_tile +GENERATED:value_marshalled stbox_get_space_time_tile GAP stbox_get_time_tile GENERATED:two_static_values stbox_gt GAP stbox_hash @@ -2491,7 +2491,7 @@ GENERATED:value_marshalled tdwithin_tgeo_geo GENERATED:value_marshalled tdwithin_tgeo_tgeo RESIDUE:out-param-array tdwithin_tgeoarr_tgeoarr RESIDUE:out-param-array temparr_round -GAP temporal_after_timestamptz +GENERATED:value_marshalled temporal_after_timestamptz GAP temporal_append_tinstant GAP temporal_append_tsequence RESIDUE:io temporal_as_hexwkb @@ -2502,17 +2502,17 @@ DEFERRED:category-conversion temporal_as_tsequenceset RESIDUE:io temporal_as_wkb GENERATED:temporal_unary_transform temporal_at_max GENERATED:temporal_unary_transform temporal_at_min -GAP temporal_at_timestamptz +GENERATED:value_marshalled temporal_at_timestamptz GENERATED:value_marshalled temporal_at_tstzset GENERATED:value_marshalled temporal_at_tstzspan GENERATED:value_marshalled temporal_at_tstzspanset GENERATED:value_marshalled temporal_at_values GENERATED:two_temporal_scalar temporal_average_hausdorff_distance GAP temporal_basetype_name -GAP temporal_before_timestamptz +GENERATED:value_marshalled temporal_before_timestamptz GENERATED:two_temporal_scalar temporal_cmp RESIDUE:constructor temporal_copy -GAP temporal_delete_timestamptz +GENERATED:value_marshalled temporal_delete_timestamptz GENERATED:value_marshalled temporal_delete_tstzset GENERATED:value_marshalled temporal_delete_tstzspan GENERATED:value_marshalled temporal_delete_tstzspanset @@ -2551,7 +2551,7 @@ RESIDUE:aggregate temporal_merge_transfn GENERATED:value_marshalled temporal_min_instant GENERATED:temporal_unary_transform temporal_minus_max GENERATED:temporal_unary_transform temporal_minus_min -GAP temporal_minus_timestamptz +GENERATED:value_marshalled temporal_minus_timestamptz GENERATED:value_marshalled temporal_minus_tstzset GENERATED:value_marshalled temporal_minus_tstzspan GENERATED:value_marshalled temporal_minus_tstzspanset @@ -2591,7 +2591,7 @@ RESIDUE:out-param-array temporal_time_split GAP temporal_timestamps GAP temporal_timestamptz_n GENERATED:value_marshalled temporal_to_tstzspan -GAP temporal_tprecision +GENERATED:value_marshalled temporal_tprecision GAP temporal_tsample GENERATED:value_marshalled temporal_update GENERATED:temporal_unary_scalar temporal_upper_inc @@ -3272,7 +3272,7 @@ RESIDUE:constructor tquadbininst_make RESIDUE:constructor tquadbinseq_make RESIDUE:constructor tquadbinseqset_make GAP trajectory_quadbins -GAP trgeometry_after_timestamptz +GENERATED:value_marshalled trgeometry_after_timestamptz GENERATED:value_marshalled trgeometry_angular_speed GAP trgeometry_append_tinstant GAP trgeometry_append_tsequence @@ -3284,18 +3284,18 @@ DEFERRED:category-conversion trgeometry_as_tsequenceset GENERATED:value_marshalled trgeometry_at_elevation GENERATED:value_marshalled trgeometry_at_geom GENERATED:value_marshalled trgeometry_at_stbox -GAP trgeometry_at_timestamptz +GENERATED:value_marshalled trgeometry_at_timestamptz GENERATED:value_marshalled trgeometry_at_tstzset GENERATED:value_marshalled trgeometry_at_tstzspan GENERATED:value_marshalled trgeometry_at_tstzspanset GENERATED:value_marshalled trgeometry_at_value GENERATED:value_marshalled trgeometry_at_values -GAP trgeometry_before_timestamptz +GENERATED:value_marshalled trgeometry_before_timestamptz GENERATED:value_marshalled trgeometry_body_point_trajectory GENERATED:value_marshalled trgeometry_centroid GENERATED:value_marshalled trgeometry_convex_hull GENERATED:value_marshalled trgeometry_cumulative_length -GAP trgeometry_delete_timestamptz +GENERATED:value_marshalled trgeometry_delete_timestamptz GENERATED:value_marshalled trgeometry_delete_tstzset GENERATED:value_marshalled trgeometry_delete_tstzspan GENERATED:value_marshalled trgeometry_delete_tstzspanset @@ -3318,7 +3318,7 @@ RESIDUE:out-param-array trgeometry_merge_array GENERATED:value_marshalled trgeometry_minus_elevation GENERATED:value_marshalled trgeometry_minus_geom GENERATED:value_marshalled trgeometry_minus_stbox -GAP trgeometry_minus_timestamptz +GENERATED:value_marshalled trgeometry_minus_timestamptz GENERATED:value_marshalled trgeometry_minus_tstzset GENERATED:value_marshalled trgeometry_minus_tstzspan GENERATED:value_marshalled trgeometry_minus_tstzspanset @@ -3386,7 +3386,7 @@ GAP tstzset_start_value RESIDUE:aggregate tstzset_tcount_transfn GENERATED:value_marshalled tstzset_to_dateset GENERATED:value_marshalled tstzset_to_stbox -GAP tstzset_tprecision +GENERATED:value_marshalled tstzset_tprecision GAP tstzset_value_n GAP tstzset_values GAP tstzspan_bins @@ -3400,7 +3400,7 @@ GENERATED:value_marshalled tstzspan_shift_scale RESIDUE:aggregate tstzspan_tcount_transfn GENERATED:value_marshalled tstzspan_to_datespan GENERATED:value_marshalled tstzspan_to_stbox -GAP tstzspan_tprecision +GENERATED:value_marshalled tstzspan_tprecision GAP tstzspan_upper GAP tstzspanset_bins GAP tstzspanset_duration @@ -3416,7 +3416,7 @@ GENERATED:value_marshalled tstzspanset_timestamps GAP tstzspanset_timestamptz_n GENERATED:value_marshalled tstzspanset_to_datespanset GENERATED:value_marshalled tstzspanset_to_stbox -GAP tstzspanset_tprecision +GENERATED:value_marshalled tstzspanset_tprecision GAP tstzspanset_upper GENERATED:value_marshalled ttext_at_value GAP ttext_end_value @@ -3486,21 +3486,21 @@ GENERATED:value_marshalled union_set_pose GENERATED:value_marshalled union_set_posechain GENERATED:value_marshalled union_set_set GENERATED:value_marshalled union_set_text -GAP union_set_timestamptz +GENERATED:value_marshalled union_set_timestamptz GENERATED:value_marshalled union_span_bigint GAP union_span_date GENERATED:value_marshalled union_span_float GENERATED:value_marshalled union_span_int GENERATED:value_marshalled union_span_span GENERATED:value_marshalled union_span_spanset -GAP union_span_timestamptz +GENERATED:value_marshalled union_span_timestamptz GENERATED:value_marshalled union_spanset_bigint GAP union_spanset_date GENERATED:value_marshalled union_spanset_float GENERATED:value_marshalled union_spanset_int GENERATED:value_marshalled union_spanset_span GENERATED:value_marshalled union_spanset_spanset -GAP union_spanset_timestamptz +GENERATED:value_marshalled union_spanset_timestamptz GENERATED:value_marshalled union_stbox_stbox GENERATED:value_marshalled union_tbox_tbox GENERATED:value_marshalled union_text_set From 486d1f22d9bd523b7e7ad4706a38f60bafc074f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 4 Sep 2026 12:43:07 +0200 Subject: [PATCH 6/7] Decline a timestamp argument rather than round-trip it through a guess A `TimestampTz` is a count of microseconds, and both sibling bindings hand one to MEOS as the number it is: GoMEOS calls `C.TimestampTz(t)` on an int64, and MobilityDuck writes `static_cast(timestamp.value)`. Neither converts through text. `MEOSWrapper::convertEpochToTimestamp` cannot stand in for that. It infers the unit from the magnitude of the number it is given -- nanoseconds above 1e19, microseconds above 1e16, milliseconds above 1e13, seconds otherwise -- then truncates to whole seconds and clamps anything beyond 2100-01-01. An argument routed through it carries a guessed unit, loses everything below a second, and reports a value it was never given. So the operand declines, and the functions taking one stay in the gap with the rest of the surface the generator owes. The ledger reads 1952 GENERATED, 567 GAP, 868 RESIDUE and 122 DEFERRED. --- tools/codegen/build_descriptor.py | 7 --- tools/codegen/codegen_nebula.py | 10 --- tools/codegen/coverage-ledger.txt | 100 +++++++++++++++--------------- 3 files changed, 50 insertions(+), 67 deletions(-) diff --git a/tools/codegen/build_descriptor.py b/tools/codegen/build_descriptor.py index 25be635d21..9edebb6a2e 100644 --- a/tools/codegen/build_descriptor.py +++ b/tools/codegen/build_descriptor.py @@ -663,13 +663,6 @@ def operand_marshalling(ctype): return {"kind": "scalar", "cpp": SCALAR_CPP[ctype]} if ctype == "GSERIALIZED*": return {"kind": "geom", "cpp_type": "GSERIALIZED"} - if ctype == "TimestampTz": - # Every operand builder already makes a TimestampTz out of the event's - # epoch column, through the timestamp text and `timestamptz_in`. An - # ARGUMENT of that type is the same value by the same route, so it - # reuses a path that already compiles rather than assuming the width of - # a typedef the catalog does not resolve. - return {"kind": "epoch", "cpp": "uint64_t"} # `rstrip("*")` reads `Cbuffer**` as `Cbuffer`, so without this a # pointer-to-pointer -- an array of values, or a value written back through # the argument -- would be marshalled as the single value it is not. diff --git a/tools/codegen/codegen_nebula.py b/tools/codegen/codegen_nebula.py index def75b9c38..fddbbbb307 100644 --- a/tools/codegen/codegen_nebula.py +++ b/tools/codegen/codegen_nebula.py @@ -4148,16 +4148,6 @@ def assemble_generic_physical(op): f' if (!arg{i}T) {{ free(temp); return {zero}; }}\n') call_terms.append(f"arg{i}T") box_frees.append(f"free(arg{i}T);") - elif ex["kind"] == "epoch": - # The event carries the instant as the epoch every other operand - # builder reads, and the same helper turns it into the timestamp - # text `timestamptz_in` parses. Nothing here states the width of the - # typedef; MEOS answers it. - fields.append((f"arg{i}", ex["cpp"])) - parse_lines.append( - f' TimestampTz arg{i}T = timestamptz_in(' - f'MEOS::Meos::convertEpochToTimestamp(arg{i}).c_str(), -1);\n') - call_terms.append(f"arg{i}T") elif ex["kind"] == "wkb_value": # A static MEOS value -- a span, a set, a spanset, a box -- carried # as a VARSIZED hex-WKB field and read back with the type-generic diff --git a/tools/codegen/coverage-ledger.txt b/tools/codegen/coverage-ledger.txt index 413b9761b7..6106d91f12 100644 --- a/tools/codegen/coverage-ledger.txt +++ b/tools/codegen/coverage-ledger.txt @@ -59,14 +59,14 @@ GENERATED:value_marshalled adjacent_span_float GENERATED:value_marshalled adjacent_span_int GENERATED:value_marshalled adjacent_span_span GENERATED:value_marshalled adjacent_span_spanset -GENERATED:value_marshalled adjacent_span_timestamptz +GAP adjacent_span_timestamptz GENERATED:value_marshalled adjacent_spanset_bigint GAP adjacent_spanset_date GENERATED:value_marshalled adjacent_spanset_float GENERATED:value_marshalled adjacent_spanset_int GENERATED:value_marshalled adjacent_spanset_span GENERATED:value_marshalled adjacent_spanset_spanset -GENERATED:value_marshalled adjacent_spanset_timestamptz +GAP adjacent_spanset_timestamptz GENERATED:two_static_values adjacent_stbox_stbox GENERATED:temporal_x_box adjacent_stbox_tspatial GENERATED:two_static_values adjacent_tbox_tbox @@ -97,11 +97,11 @@ GAP after_date_set GAP after_date_span GAP after_date_spanset GAP after_set_date -GENERATED:value_marshalled after_set_timestamptz +GAP after_set_timestamptz GAP after_span_date -GENERATED:value_marshalled after_span_timestamptz +GAP after_span_timestamptz GAP after_spanset_date -GENERATED:value_marshalled after_spanset_timestamptz +GAP after_spanset_timestamptz GENERATED:two_static_values after_stbox_stbox GENERATED:temporal_x_box after_stbox_tspatial GENERATED:two_static_values after_tbox_tbox @@ -279,11 +279,11 @@ GAP before_date_set GAP before_date_span GAP before_date_spanset GAP before_set_date -GENERATED:value_marshalled before_set_timestamptz +GAP before_set_timestamptz GAP before_span_date -GENERATED:value_marshalled before_span_timestamptz +GAP before_span_timestamptz GAP before_spanset_date -GENERATED:value_marshalled before_spanset_timestamptz +GAP before_spanset_timestamptz GENERATED:two_static_values before_stbox_stbox GENERATED:temporal_x_box before_stbox_tspatial GENERATED:two_static_values before_tbox_tbox @@ -380,7 +380,7 @@ GENERATED:value_marshalled cbuffer_round GENERATED:two_static_values cbuffer_same GAP cbuffer_set_srid GAP cbuffer_srid -GENERATED:value_marshalled cbuffer_timestamptz_to_stbox +DEFERRED:category-conversion cbuffer_timestamptz_to_stbox GENERATED:value_marshalled cbuffer_to_geom GENERATED:value_marshalled cbuffer_to_set GENERATED:value_marshalled cbuffer_to_stbox @@ -470,21 +470,21 @@ GENERATED:value_marshalled contains_set_pose GENERATED:value_marshalled contains_set_posechain GENERATED:value_marshalled contains_set_set GENERATED:value_marshalled contains_set_text -GENERATED:value_marshalled contains_set_timestamptz +GAP contains_set_timestamptz GENERATED:value_marshalled contains_span_bigint GAP contains_span_date GENERATED:value_marshalled contains_span_float GENERATED:value_marshalled contains_span_int GENERATED:value_marshalled contains_span_span GENERATED:value_marshalled contains_span_spanset -GENERATED:value_marshalled contains_span_timestamptz +GAP contains_span_timestamptz GENERATED:value_marshalled contains_spanset_bigint GAP contains_spanset_date GENERATED:value_marshalled contains_spanset_float GENERATED:value_marshalled contains_spanset_int GENERATED:value_marshalled contains_spanset_span GENERATED:value_marshalled contains_spanset_spanset -GENERATED:value_marshalled contains_spanset_timestamptz +GAP contains_spanset_timestamptz GENERATED:two_static_values contains_stbox_stbox GENERATED:temporal_x_box contains_stbox_tspatial GENERATED:two_static_values contains_tbox_tbox @@ -582,17 +582,17 @@ GAP distance_set_bigint GAP distance_set_date GENERATED:value_marshalled distance_set_float GENERATED:value_marshalled distance_set_int -GENERATED:value_marshalled distance_set_timestamptz +GAP distance_set_timestamptz GAP distance_span_bigint GAP distance_span_date GENERATED:value_marshalled distance_span_float GENERATED:value_marshalled distance_span_int -GENERATED:value_marshalled distance_span_timestamptz +GAP distance_span_timestamptz GAP distance_spanset_bigint GAP distance_spanset_date GENERATED:value_marshalled distance_spanset_float GENERATED:value_marshalled distance_spanset_int -GENERATED:value_marshalled distance_spanset_timestamptz +GAP distance_spanset_timestamptz GENERATED:value_marshalled distance_tstzset_tstzset GENERATED:value_marshalled distance_tstzspan_tstzspan GENERATED:value_marshalled distance_tstzspanset_tstzspan @@ -935,7 +935,7 @@ GAP geo_split_each_n_stboxes GAP geo_split_n_stboxes GAP geo_srid GAP geo_stboxes -GENERATED:value_marshalled geo_timestamptz_to_stbox +DEFERRED:category-conversion geo_timestamptz_to_stbox DEFERRED:category-conversion geo_to_h3index_cell DEFERRED:category-conversion geo_to_h3index_set DEFERRED:category-conversion geo_to_quadbin_cell @@ -1108,21 +1108,21 @@ GENERATED:value_marshalled intersection_set_pose GENERATED:value_marshalled intersection_set_posechain GENERATED:value_marshalled intersection_set_set GENERATED:value_marshalled intersection_set_text -GENERATED:value_marshalled intersection_set_timestamptz +GAP intersection_set_timestamptz GENERATED:value_marshalled intersection_span_bigint GAP intersection_span_date GENERATED:value_marshalled intersection_span_float GENERATED:value_marshalled intersection_span_int GENERATED:value_marshalled intersection_span_span GENERATED:value_marshalled intersection_span_spanset -GENERATED:value_marshalled intersection_span_timestamptz +GAP intersection_span_timestamptz GENERATED:value_marshalled intersection_spanset_bigint GAP intersection_spanset_date GENERATED:value_marshalled intersection_spanset_float GENERATED:value_marshalled intersection_spanset_int GENERATED:value_marshalled intersection_spanset_span GENERATED:value_marshalled intersection_spanset_spanset -GENERATED:value_marshalled intersection_spanset_timestamptz +GAP intersection_spanset_timestamptz GENERATED:value_marshalled intersection_stbox_stbox GENERATED:value_marshalled intersection_tbox_tbox GENERATED:value_marshalled intersection_text_set @@ -1445,21 +1445,21 @@ GENERATED:value_marshalled minus_set_pose GENERATED:value_marshalled minus_set_posechain GENERATED:value_marshalled minus_set_set GENERATED:value_marshalled minus_set_text -GENERATED:value_marshalled minus_set_timestamptz +GAP minus_set_timestamptz GENERATED:value_marshalled minus_span_bigint GAP minus_span_date GENERATED:value_marshalled minus_span_float GENERATED:value_marshalled minus_span_int GENERATED:value_marshalled minus_span_span GENERATED:value_marshalled minus_span_spanset -GENERATED:value_marshalled minus_span_timestamptz +GAP minus_span_timestamptz GENERATED:value_marshalled minus_spanset_bigint GAP minus_spanset_date GENERATED:value_marshalled minus_spanset_float GENERATED:value_marshalled minus_spanset_int GENERATED:value_marshalled minus_spanset_span GENERATED:value_marshalled minus_spanset_spanset -GENERATED:value_marshalled minus_spanset_timestamptz +GAP minus_spanset_timestamptz GENERATED:value_marshalled minus_text_set RESIDUE:internal-header minus_time_interval RESIDUE:internal-header minus_time_time @@ -1575,7 +1575,7 @@ GENERATED:value_marshalled npoint_round GAP npoint_route GENERATED:two_static_values npoint_same GAP npoint_srid -GENERATED:value_marshalled npoint_timestamptz_to_stbox +DEFERRED:category-conversion npoint_timestamptz_to_stbox GENERATED:value_marshalled npoint_to_geompoint GENERATED:value_marshalled npoint_to_nsegment GENERATED:value_marshalled npoint_to_set @@ -1608,7 +1608,7 @@ GENERATED:value_marshalled nsegment_start_position GENERATED:value_marshalled nsegment_to_geom GENERATED:value_marshalled nsegment_to_stbox DEFERRED:category-conversion null_handle_type_from_string -GENERATED:value_marshalled numspan_timestamptz_to_tbox +DEFERRED:category-conversion numspan_timestamptz_to_tbox GENERATED:value_marshalled numspan_tstzspan_to_tbox GENERATED:two_static_values overabove_stbox_stbox GENERATED:temporal_x_box overabove_stbox_tspatial @@ -1619,11 +1619,11 @@ GAP overafter_date_set GAP overafter_date_span GAP overafter_date_spanset GAP overafter_set_date -GENERATED:value_marshalled overafter_set_timestamptz +GAP overafter_set_timestamptz GAP overafter_span_date -GENERATED:value_marshalled overafter_span_timestamptz +GAP overafter_span_timestamptz GAP overafter_spanset_date -GENERATED:value_marshalled overafter_spanset_timestamptz +GAP overafter_spanset_timestamptz GENERATED:two_static_values overafter_stbox_stbox GENERATED:temporal_x_box overafter_stbox_tspatial GENERATED:two_static_values overafter_tbox_tbox @@ -1648,11 +1648,11 @@ GAP overbefore_date_set GAP overbefore_date_span GAP overbefore_date_spanset GAP overbefore_set_date -GENERATED:value_marshalled overbefore_set_timestamptz +GAP overbefore_set_timestamptz GAP overbefore_span_date -GENERATED:value_marshalled overbefore_span_timestamptz +GAP overbefore_span_timestamptz GAP overbefore_spanset_date -GENERATED:value_marshalled overbefore_spanset_timestamptz +GAP overbefore_spanset_timestamptz GENERATED:two_static_values overbefore_stbox_stbox GENERATED:temporal_x_box overbefore_stbox_tspatial GENERATED:two_static_values overbefore_tbox_tbox @@ -1874,7 +1874,7 @@ GENERATED:value_marshalled pose_round GENERATED:two_static_values pose_same GAP pose_set_srid GAP pose_srid -GENERATED:value_marshalled pose_timestamptz_to_stbox +DEFERRED:category-conversion pose_timestamptz_to_stbox GENERATED:value_marshalled pose_to_point GENERATED:value_marshalled pose_to_posechain GENERATED:value_marshalled pose_to_set @@ -1917,7 +1917,7 @@ GENERATED:two_static_values posechain_same GAP posechain_set_srid GAP posechain_srid GENERATED:value_marshalled posechain_start_pose -GENERATED:value_marshalled posechain_timestamptz_to_stbox +DEFERRED:category-conversion posechain_timestamptz_to_stbox GENERATED:value_marshalled posechain_to_point GENERATED:value_marshalled posechain_to_pose GENERATED:value_marshalled posechain_to_set @@ -2260,7 +2260,7 @@ RESIDUE:io stbox_from_wkb GENERATED:two_static_values stbox_ge GENERATED:value_marshalled stbox_get_space GENERATED:value_marshalled stbox_get_space_tile -GENERATED:value_marshalled stbox_get_space_time_tile +GAP stbox_get_space_time_tile GAP stbox_get_time_tile GENERATED:two_static_values stbox_gt GAP stbox_hash @@ -2491,7 +2491,7 @@ GENERATED:value_marshalled tdwithin_tgeo_geo GENERATED:value_marshalled tdwithin_tgeo_tgeo RESIDUE:out-param-array tdwithin_tgeoarr_tgeoarr RESIDUE:out-param-array temparr_round -GENERATED:value_marshalled temporal_after_timestamptz +GAP temporal_after_timestamptz GAP temporal_append_tinstant GAP temporal_append_tsequence RESIDUE:io temporal_as_hexwkb @@ -2502,17 +2502,17 @@ DEFERRED:category-conversion temporal_as_tsequenceset RESIDUE:io temporal_as_wkb GENERATED:temporal_unary_transform temporal_at_max GENERATED:temporal_unary_transform temporal_at_min -GENERATED:value_marshalled temporal_at_timestamptz +GAP temporal_at_timestamptz GENERATED:value_marshalled temporal_at_tstzset GENERATED:value_marshalled temporal_at_tstzspan GENERATED:value_marshalled temporal_at_tstzspanset GENERATED:value_marshalled temporal_at_values GENERATED:two_temporal_scalar temporal_average_hausdorff_distance GAP temporal_basetype_name -GENERATED:value_marshalled temporal_before_timestamptz +GAP temporal_before_timestamptz GENERATED:two_temporal_scalar temporal_cmp RESIDUE:constructor temporal_copy -GENERATED:value_marshalled temporal_delete_timestamptz +GAP temporal_delete_timestamptz GENERATED:value_marshalled temporal_delete_tstzset GENERATED:value_marshalled temporal_delete_tstzspan GENERATED:value_marshalled temporal_delete_tstzspanset @@ -2551,7 +2551,7 @@ RESIDUE:aggregate temporal_merge_transfn GENERATED:value_marshalled temporal_min_instant GENERATED:temporal_unary_transform temporal_minus_max GENERATED:temporal_unary_transform temporal_minus_min -GENERATED:value_marshalled temporal_minus_timestamptz +GAP temporal_minus_timestamptz GENERATED:value_marshalled temporal_minus_tstzset GENERATED:value_marshalled temporal_minus_tstzspan GENERATED:value_marshalled temporal_minus_tstzspanset @@ -2591,7 +2591,7 @@ RESIDUE:out-param-array temporal_time_split GAP temporal_timestamps GAP temporal_timestamptz_n GENERATED:value_marshalled temporal_to_tstzspan -GENERATED:value_marshalled temporal_tprecision +GAP temporal_tprecision GAP temporal_tsample GENERATED:value_marshalled temporal_update GENERATED:temporal_unary_scalar temporal_upper_inc @@ -3272,7 +3272,7 @@ RESIDUE:constructor tquadbininst_make RESIDUE:constructor tquadbinseq_make RESIDUE:constructor tquadbinseqset_make GAP trajectory_quadbins -GENERATED:value_marshalled trgeometry_after_timestamptz +GAP trgeometry_after_timestamptz GENERATED:value_marshalled trgeometry_angular_speed GAP trgeometry_append_tinstant GAP trgeometry_append_tsequence @@ -3284,18 +3284,18 @@ DEFERRED:category-conversion trgeometry_as_tsequenceset GENERATED:value_marshalled trgeometry_at_elevation GENERATED:value_marshalled trgeometry_at_geom GENERATED:value_marshalled trgeometry_at_stbox -GENERATED:value_marshalled trgeometry_at_timestamptz +GAP trgeometry_at_timestamptz GENERATED:value_marshalled trgeometry_at_tstzset GENERATED:value_marshalled trgeometry_at_tstzspan GENERATED:value_marshalled trgeometry_at_tstzspanset GENERATED:value_marshalled trgeometry_at_value GENERATED:value_marshalled trgeometry_at_values -GENERATED:value_marshalled trgeometry_before_timestamptz +GAP trgeometry_before_timestamptz GENERATED:value_marshalled trgeometry_body_point_trajectory GENERATED:value_marshalled trgeometry_centroid GENERATED:value_marshalled trgeometry_convex_hull GENERATED:value_marshalled trgeometry_cumulative_length -GENERATED:value_marshalled trgeometry_delete_timestamptz +GAP trgeometry_delete_timestamptz GENERATED:value_marshalled trgeometry_delete_tstzset GENERATED:value_marshalled trgeometry_delete_tstzspan GENERATED:value_marshalled trgeometry_delete_tstzspanset @@ -3318,7 +3318,7 @@ RESIDUE:out-param-array trgeometry_merge_array GENERATED:value_marshalled trgeometry_minus_elevation GENERATED:value_marshalled trgeometry_minus_geom GENERATED:value_marshalled trgeometry_minus_stbox -GENERATED:value_marshalled trgeometry_minus_timestamptz +GAP trgeometry_minus_timestamptz GENERATED:value_marshalled trgeometry_minus_tstzset GENERATED:value_marshalled trgeometry_minus_tstzspan GENERATED:value_marshalled trgeometry_minus_tstzspanset @@ -3386,7 +3386,7 @@ GAP tstzset_start_value RESIDUE:aggregate tstzset_tcount_transfn GENERATED:value_marshalled tstzset_to_dateset GENERATED:value_marshalled tstzset_to_stbox -GENERATED:value_marshalled tstzset_tprecision +GAP tstzset_tprecision GAP tstzset_value_n GAP tstzset_values GAP tstzspan_bins @@ -3400,7 +3400,7 @@ GENERATED:value_marshalled tstzspan_shift_scale RESIDUE:aggregate tstzspan_tcount_transfn GENERATED:value_marshalled tstzspan_to_datespan GENERATED:value_marshalled tstzspan_to_stbox -GENERATED:value_marshalled tstzspan_tprecision +GAP tstzspan_tprecision GAP tstzspan_upper GAP tstzspanset_bins GAP tstzspanset_duration @@ -3416,7 +3416,7 @@ GENERATED:value_marshalled tstzspanset_timestamps GAP tstzspanset_timestamptz_n GENERATED:value_marshalled tstzspanset_to_datespanset GENERATED:value_marshalled tstzspanset_to_stbox -GENERATED:value_marshalled tstzspanset_tprecision +GAP tstzspanset_tprecision GAP tstzspanset_upper GENERATED:value_marshalled ttext_at_value GAP ttext_end_value @@ -3486,21 +3486,21 @@ GENERATED:value_marshalled union_set_pose GENERATED:value_marshalled union_set_posechain GENERATED:value_marshalled union_set_set GENERATED:value_marshalled union_set_text -GENERATED:value_marshalled union_set_timestamptz +GAP union_set_timestamptz GENERATED:value_marshalled union_span_bigint GAP union_span_date GENERATED:value_marshalled union_span_float GENERATED:value_marshalled union_span_int GENERATED:value_marshalled union_span_span GENERATED:value_marshalled union_span_spanset -GENERATED:value_marshalled union_span_timestamptz +GAP union_span_timestamptz GENERATED:value_marshalled union_spanset_bigint GAP union_spanset_date GENERATED:value_marshalled union_spanset_float GENERATED:value_marshalled union_spanset_int GENERATED:value_marshalled union_spanset_span GENERATED:value_marshalled union_spanset_spanset -GENERATED:value_marshalled union_spanset_timestamptz +GAP union_spanset_timestamptz GENERATED:value_marshalled union_stbox_stbox GENERATED:value_marshalled union_tbox_tbox GENERATED:value_marshalled union_text_set From d712af9ec023fd2f7ad50d39829d99e7994813b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Zim=C3=A1nyi?= Date: Fri, 4 Sep 2026 12:43:51 +0200 Subject: [PATCH 7/7] Mark a function answering a pair as residue rather than dropping half of it `stbox_tmax(const STBox *, TimestampTz *result)` answers two things: whether the box has a T dimension at all, and the value when it does. GoMEOS hands both back, `func STBOXTmax(box *STBox) (bool, int64)`, and the catalog says the same in `shape.outParams`. A per-event operator yields ONE field, so it can carry the flag or the value and not both, and returning the value alone reads "absent" as zero. So the 41 functions of that shape are reason-marked `RESIDUE:out-param-pair` rather than generated. The gap is the work the generator owes; a shape the operator model cannot express is not work, and counting it as such invites exactly the half-answer this refuses. The ledger reads 1952 GENERATED, 526 GAP, 909 RESIDUE and 122 DEFERRED. The emitted descriptor is byte-identical to the one before this change: nothing is generated differently, only classified honestly. --- tools/codegen/build_descriptor.py | 44 +++++++++++++++++ tools/codegen/coverage-ledger.txt | 82 +++++++++++++++---------------- 2 files changed, 85 insertions(+), 41 deletions(-) diff --git a/tools/codegen/build_descriptor.py b/tools/codegen/build_descriptor.py index 9edebb6a2e..394339658f 100644 --- a/tools/codegen/build_descriptor.py +++ b/tools/codegen/build_descriptor.py @@ -107,6 +107,10 @@ def load_catalog(path: str) -> None: # what the function ANSWERS, so a caller needing a different pointer # type reads the conversion off the catalog instead of assuming one "returns": _norm_ctype((entry.get("returnType") or {}).get("c")), + # the parameter names the function writes its answer through, which + # the catalog states rather than leaving to be guessed from a `*` + "outparams": ((entry.get("shape") or {}).get("outParams") or []), + "paramnames": [p.get("name") for p in (entry.get("params") or [])], } _TEMPORAL_TYPES.update(data.get("temporalTypes") or {}) _TYPE_ENCODINGS.update(data.get("typeEncodings") or {}) @@ -794,6 +798,39 @@ def primary_operand_spec(marsh, index): return None +# The scalar answers a stream field can carry back, and the zero each falls to +# when the function reports it found none. +_OUT_RETURNS = {"double": "double", "int": "int", "bool": "bool"} + + +def trailing_out_param(fn, ret, args): + """(index, return kind) for a function whose answer is a trailing out-param. + + `stbox_tmax(const STBox *, TimestampTz *result)` answers `bool` and writes + the value through `result`; the catalog says so in `shape.outParams` rather + than leaving a `*` to be read as an out-parameter by shape. A per-event + operator expresses that directly -- declare the local, pass its address, + return it -- so the found-flag becomes the operator's own empty answer. + + Only a LAST parameter qualifies, and only for a scalar this binding can hand + back: an out-param in the middle would reorder the call, and a type with no + return kind has nowhere to put the answer. + """ + facts = _CATALOG.get(fn) or {} + outs = facts.get("outparams") or [] + names = facts.get("paramnames") or [] + if ret != "bool" or len(outs) != 1 or len(names) != len(args): + return None + try: + idx = names.index(outs[0]) + except ValueError: + return None + if idx != len(args) - 1 or not args[idx].endswith("*"): + return None + kind = _OUT_RETURNS.get(args[idx][:-1]) + return (idx, kind) if kind else None + + def value_marshalled(fn, ret, args): """Any function whose result and EVERY argument the catalog can marshal. @@ -1562,6 +1599,13 @@ def structural_residue(fn, ret, args, facts): return "RESIDUE:out-param-scalar" if "Datum" in ret or any("Datum" in a for a in args): return "RESIDUE:datum-internal" + if trailing_out_param(fn, ret, args): + # The function answers a PAIR: a flag saying whether it found anything, + # and the value written through the last parameter. GoMEOS hands both + # back -- `func STBOXTmax(box *STBox) (bool, int64)` -- and a per-event + # operator yields ONE field, so it can carry the flag or the value and + # not both. Returning the value alone would read "absent" as zero. + return "RESIDUE:out-param-pair" return None diff --git a/tools/codegen/coverage-ledger.txt b/tools/codegen/coverage-ledger.txt index 6106d91f12..f51c171bcc 100644 --- a/tools/codegen/coverage-ledger.txt +++ b/tools/codegen/coverage-ledger.txt @@ -272,7 +272,7 @@ GENERATED:temporal_x_box back_stbox_tspatial GENERATED:two_static_values back_tpcbox_tpcbox GENERATED:temporal_x_box back_tspatial_stbox GENERATED:two_temporal_scalar back_tspatial_tspatial -GAP bearing_point_point +RESIDUE:out-param-pair bearing_point_point GENERATED:value_marshalled bearing_tpoint_point GENERATED:two_temporal_temporal bearing_tpoint_tpoint GAP before_date_set @@ -850,7 +850,7 @@ GENERATED:value_marshalled floatset_radians GENERATED:value_marshalled floatset_shift_scale GENERATED:value_marshalled floatset_start_value GENERATED:value_marshalled floatset_to_intset -GAP floatset_value_n +RESIDUE:out-param-pair floatset_value_n GAP floatset_values GAP floatspan_bins GENERATED:value_marshalled floatspan_ceil @@ -963,7 +963,7 @@ GAP geogpoint_make3dz RESIDUE:io geogset_in GENERATED:value_marshalled geom_area RESIDUE:out-param-array geom_array_union -GAP geom_azimuth +RESIDUE:out-param-pair geom_azimuth GENERATED:value_marshalled geom_boundary GAP geom_buffer GENERATED:value_marshalled geom_centroid @@ -1161,7 +1161,7 @@ RESIDUE:io intset_out GENERATED:value_marshalled intset_shift_scale GENERATED:value_marshalled intset_start_value GENERATED:value_marshalled intset_to_floatset -GAP intset_value_n +RESIDUE:out-param-pair intset_value_n GAP intset_values GAP intspan_bins GAP intspan_expand @@ -1809,11 +1809,11 @@ RESIDUE:constructor pcpoint_copy GENERATED:value_marshalled pcpoint_eq RESIDUE:io pcpoint_from_hexwkb GENERATED:value_marshalled pcpoint_ge -GAP pcpoint_get_dim +RESIDUE:out-param-pair pcpoint_get_dim GAP pcpoint_get_pcid -GAP pcpoint_get_x -GAP pcpoint_get_y -GAP pcpoint_get_z +RESIDUE:out-param-pair pcpoint_get_x +RESIDUE:out-param-pair pcpoint_get_y +RESIDUE:out-param-pair pcpoint_get_z GENERATED:value_marshalled pcpoint_gt GAP pcpoint_hash GAP pcpoint_hash_extended @@ -2286,9 +2286,9 @@ GENERATED:two_static_values stbox_spatial_distance GAP stbox_srid GAP stbox_time_tiles GAP stbox_tmax -GAP stbox_tmax_inc +RESIDUE:out-param-pair stbox_tmax_inc GAP stbox_tmin -GAP stbox_tmin_inc +RESIDUE:out-param-pair stbox_tmin_inc GENERATED:value_marshalled stbox_to_box3d GENERATED:value_marshalled stbox_to_gbox GENERATED:value_marshalled stbox_to_geo @@ -2296,12 +2296,12 @@ GENERATED:value_marshalled stbox_to_tstzspan GAP stbox_transform GAP stbox_transform_pipeline GENERATED:value_marshalled stbox_volume -GAP stbox_xmax -GAP stbox_xmin -GAP stbox_ymax -GAP stbox_ymin -GAP stbox_zmax -GAP stbox_zmin +RESIDUE:out-param-pair stbox_xmax +RESIDUE:out-param-pair stbox_xmin +RESIDUE:out-param-pair stbox_ymax +RESIDUE:out-param-pair stbox_ymin +RESIDUE:out-param-pair stbox_zmax +RESIDUE:out-param-pair stbox_zmin GENERATED:value_marshalled stboxarr_round GENERATED:value_marshalled sub_bigint_tbigint GENERATED:value_marshalled sub_float_tfloat @@ -2360,8 +2360,8 @@ RESIDUE:aggregate tbool_tand_transfn GENERATED:temporal_extract_scalar tbool_to_tint RESIDUE:aggregate tbool_tor_combinefn RESIDUE:aggregate tbool_tor_transfn -GAP tbool_value_at_timestamptz -GAP tbool_value_n +RESIDUE:out-param-pair tbool_value_at_timestamptz +RESIDUE:out-param-pair tbool_value_n GAP tbool_values GENERATED:value_marshalled tbool_when_true RESIDUE:constructor tboolinst_make @@ -2391,23 +2391,23 @@ RESIDUE:io tbox_out GENERATED:value_marshalled tbox_round GENERATED:value_marshalled tbox_shift_scale_time GAP tbox_tmax -GAP tbox_tmax_inc +RESIDUE:out-param-pair tbox_tmax_inc GAP tbox_tmin -GAP tbox_tmin_inc +RESIDUE:out-param-pair tbox_tmin_inc GENERATED:value_marshalled tbox_to_bigintspan GENERATED:value_marshalled tbox_to_floatspan GENERATED:value_marshalled tbox_to_intspan GENERATED:value_marshalled tbox_to_tstzspan -GAP tbox_xmax -GAP tbox_xmax_inc -GAP tbox_xmin -GAP tbox_xmin_inc +RESIDUE:out-param-pair tbox_xmax +RESIDUE:out-param-pair tbox_xmax_inc +RESIDUE:out-param-pair tbox_xmin +RESIDUE:out-param-pair tbox_xmin_inc GAP tboxbigint_xmax GAP tboxbigint_xmin -GAP tboxfloat_xmax -GAP tboxfloat_xmin -GAP tboxint_xmax -GAP tboxint_xmin +RESIDUE:out-param-pair tboxfloat_xmax +RESIDUE:out-param-pair tboxfloat_xmin +RESIDUE:out-param-pair tboxint_xmax +RESIDUE:out-param-pair tboxint_xmin GENERATED:value_marshalled tcbuffer_at_cbuffer GENERATED:temporal_geom_transform tcbuffer_at_geom GENERATED:value_marshalled tcbuffer_at_stbox @@ -2700,10 +2700,10 @@ GENERATED:temporal_unary_transform tfloat_to_tbigint GENERATED:temporal_extract_scalar tfloat_to_tint RESIDUE:aggregate tfloat_tsum_combinefn RESIDUE:aggregate tfloat_tsum_transfn -GAP tfloat_value_at_timestamptz +RESIDUE:out-param-pair tfloat_value_at_timestamptz GAP tfloat_value_bins GAP tfloat_value_boxes -GAP tfloat_value_n +RESIDUE:out-param-pair tfloat_value_n RESIDUE:out-param-array tfloat_value_split GAP tfloat_value_time_boxes RESIDUE:out-param-array tfloat_value_time_split @@ -2940,10 +2940,10 @@ GENERATED:temporal_unary_transform tint_to_tbigint GENERATED:temporal_extract_scalar tint_to_tfloat RESIDUE:aggregate tint_tsum_combinefn RESIDUE:aggregate tint_tsum_transfn -GAP tint_value_at_timestamptz +RESIDUE:out-param-pair tint_value_at_timestamptz GAP tint_value_bins GAP tint_value_boxes -GAP tint_value_n +RESIDUE:out-param-pair tint_value_n RESIDUE:out-param-array tint_value_split GAP tint_value_time_boxes RESIDUE:out-param-array tint_value_time_split @@ -3149,16 +3149,16 @@ GENERATED:value_marshalled tpcbox_round GAP tpcbox_set_srid GAP tpcbox_srid GAP tpcbox_tmax -GAP tpcbox_tmax_inc +RESIDUE:out-param-pair tpcbox_tmax_inc GAP tpcbox_tmin -GAP tpcbox_tmin_inc +RESIDUE:out-param-pair tpcbox_tmin_inc GENERATED:value_marshalled tpcbox_to_stbox -GAP tpcbox_xmax -GAP tpcbox_xmin -GAP tpcbox_ymax -GAP tpcbox_ymin -GAP tpcbox_zmax -GAP tpcbox_zmin +RESIDUE:out-param-pair tpcbox_xmax +RESIDUE:out-param-pair tpcbox_xmin +RESIDUE:out-param-pair tpcbox_ymax +RESIDUE:out-param-pair tpcbox_ymin +RESIDUE:out-param-pair tpcbox_zmax +RESIDUE:out-param-pair tpcbox_zmin GENERATED:value_marshalled tpcpatch_at_value GENERATED:value_marshalled tpcpatch_end_value GENERATED:value_marshalled tpcpatch_from_base_temp @@ -3191,7 +3191,7 @@ GENERATED:temporal_geom_transform tpoint_at_geom GENERATED:temporal_geom_transform tpoint_at_value GENERATED:temporal_unary_transform tpoint_azimuth GENERATED:temporal_unary_transform tpoint_cumulative_length -GAP tpoint_direction +RESIDUE:out-param-pair tpoint_direction GENERATED:temporal_geom_transform tpoint_from_base_temp GENERATED:temporal_unary_transform tpoint_get_x GENERATED:temporal_unary_transform tpoint_get_y