Skip to content

feat(nebula): canonical 615-op per-event MEOS surface, generator-derived off main#184

Closed
estebanzimanyi wants to merge 3 commits into
MobilityDB:mainfrom
estebanzimanyi:consol/nebula-canonical-surface
Closed

feat(nebula): canonical 615-op per-event MEOS surface, generator-derived off main#184
estebanzimanyi wants to merge 3 commits into
MobilityDB:mainfrom
estebanzimanyi:consol/nebula-canonical-surface

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

The per-event operator surface is generated from tools/gen_all.py using nine descriptor files and codegen_nebula.py with extended return kinds (uint64, varsized_json_out, varsized_floatspan, varsized_intspan) and a raw_varsized extra-arg kind. The generator output is exactly the 615 basenames in tools/TARGET_SURFACE.txt — comm -23 and comm -13 both empty. The Nix build fix (NES_ENABLE_MEOS=OFF + stock paho-mqtt-cpp) is the first commit so Gate B (Run Nix Build / Nix Build) is exercised cleanly.

…aho-mqtt-cpp

The Nix environment provides paho-mqtt-cpp as a shared-only library and does
not include libmeos.  Four changes make the build pass:

- flake.nix: add stock paho-mqtt-c + paho-mqtt-cpp to baseThirdPartyDeps;
  pass -DNES_ENABLE_MEOS=OFF in both defaultPackage and devShell cmakeFlags.

- nes-plugins/CMakeLists.txt: introduce NES_ENABLE_MQTT and NES_ENABLE_MEOS
  options that gate the respective plugin subdirectories via
  activate_optional_plugin().

- nes-plugins/Sources/MQTTSource, nes-plugins/Sinks/MQTTSink: select
  PahoMqttCpp::paho-mqttpp3-static when available, fall back to the shared
  PahoMqttCpp::paho-mqttpp3 target (Nix only ships the shared variant).

- nes-physical-operators: gate all MEOS-specific add_plugin calls and the
  nes-meos link behind if(NES_ENABLE_MEOS) in three CMakeLists files
  (top-level, Functions/Meos, Aggregation/Function/Meos).

- CMakeLists.txt (root): declare option(NES_ENABLE_MEOS) and
  add_compile_definitions(NES_ENABLE_MEOS) before the nes-* subdirectory
  loop so the preprocessor symbol is visible to all sibling components.

- nes-query-optimizer/LowerToPhysicalWindowedAggregation.cpp: guard the
  TemporalSequenceAggregationPhysicalFunction include and instantiation
  with #ifdef NES_ENABLE_MEOS so the translation unit compiles and links
  when MEOS is disabled.
tools/codegen_nebula.py generates all 4 C++ files (logical/physical
hpp+cpp) per operator from JSON descriptors; supports build_generic,
build_tcbuffer_point_cbuffer, and trgeometry-family dispatch paths.
New return_kinds: uint64, varsized_json_out, varsized_floatspan,
varsized_intspan. New extra_arg kind: raw_varsized.

tools/gen_all.py orchestrates the nine descriptor families and injects
CMakeLists.txt, AntlrSQL.g4, and AntlrSQLQueryPlanCreator.cpp.

tools/canonical-new-ops-descriptor.json: 85 operators closing the gap
to the canonical 615-op TARGET_SURFACE.txt (tcbuffer/cbuffer, tquadbin,
AcoversGeoTgeo, tfloat trig, TnumberAbs, teq/tne/tlt/tle/tgt/tge
comparisons, geom format/transform/buffer/mbc, H3/JSON/span constructors,
tpcpoint spatial predicates).

tools/missing-ops-descriptor.json: filtered from 303 to 69 operators
(retains only ops present in TARGET_SURFACE.txt).
All 615 physical and logical operator files for the per-event surface
are generated from the nine descriptor families in tools/. The basename
set equals TARGET_SURFACE.txt exactly (comm -23 and comm -13 both
produce empty output). CMakeLists.txt, AntlrSQL.g4, and
AntlrSQLQueryPlanCreator.cpp carry only entries for the 615 target ops.
@estebanzimanyi

Copy link
Copy Markdown
Member Author

Superseded by the clean one-change PR stack: build fix (#171), generator (#185), and the 615-op generated surface (#186 — byte-identical to this PR's surface, Nix Build + drift-guard green). This combined PR is folded into that reviewable split.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant