Integration Tests
Integration tests verify the system’s behavior as a whole - they run the actual binaries (xretractor, xqry, xtrdb) and compare their output against patterns or check specific properties of the output files. Unit tests use the GTest framework to check classes and functions of the rdb and retractor libraries (e.g. payload, descriptor, crsMath, compiler). Depending on the contract under test, they also create files, child processes, and IPC objects; the unit/integration distinction alone does not define which resources a test uses.
When building with GCC in Release with active IPO (RDB_USE_IPO=ON, RDB_BENCH_PROBE=OFF and a successful IPO support check), libraries contain both machine code and the representation used by LTO (-ffat-lto-objects). Unit tests link with -fno-lto and execute the libraries’ ordinary machine code; they do not check the result of link-time optimization. Shipped programs retain LTO, so integration tests that run those programs check the code after that optimization. The root CMakeLists.txt and test/UnitTest/CMakeLists.txt establish this distinction through RDB_UT_WITHOUT_IPO. It does not change Debug configurations, and compilers other than GCC retain the previous unit-test IPO setting.
From build/Debug/, ninja test runs the ordinary suite without the valgrind label and, with the default RDB_WITH_API=OFF, without api. Plain ctest selects all registered groups, including Valgrind and API. ninja test-valgrind selects the valgrind label, while ninja test-api builds and runs the monitoring clients. Select one test with ctest -R '^name$' -V; CTest also selects its required fixtures (FIXTURES_REQUIRED). Before running tests, rebuild the targets under test and check the source directory recorded in CMakeCache.txt, the command shown by ctest -N -V, and the effective PATH. Resolved programs and build-tree copies of scripts and data must match the freshly built targets and current sources byte for byte. See test/CLAUDE.md in the code repository for the procedure.
All scenarios live in one test/IntegrationTest directory. CMake assigns most directories one of sixteen RDB_NAMESPACE namespaces and its corresponding resource lock. This separates the bus, instance name, IPC objects, and log file without changing queries or patterns. Tests within one directory remain mutually exclusive, but different directories can run servers concurrently. Scenarios examining the production global identity, cooperation between several servers, or leftover cleanup (leftover_sweep) retain RUN_SERIAL: a concurrent instance could otherwise remove the leftovers before the assertions examine them.
The RESOURCE_LOCK also excludes directories assigned the same pool slot; it does not establish execution order. Unit tests have separate setup fixtures for ordinary and Valgrind runs. In a full ctest run, the Valgrind setup waits for the ordinary test so that it cannot remove that test’s metadata. Namespaces allow concurrency within one CTest run; they do not isolate two independent runs that may use the same slots and installation. Run only one build, installation, or test workflow at a time on a machine.
The pool limits the number of namespaces but does not reserve shared memory. With the current layout, one server with its own bus uses about 5.1 MiB in /dev/shm (the bus, command queue, and response segment); 16 such servers may need about 83 MiB, in addition to unit-test objects. A container limited to 64 MiB cannot hold the full pool. For shared memory too small or No space left on device errors, increase available shared memory or reduce parallelism; separating names alone does not provide capacity.
Scripts use portable.sh for file sizes, timeouts, and binary-value reads, among other helpers. file_size also returns 0 for a missing file, so equal sizes do not prove that data exists or matches. Expected artifacts require presence and content checks, for example with cmp or an independent oracle. Likewise, IPC state checks must cover the test’s own namespace: changes to a neighbor’s objects do not demonstrate an isolation failure. The Python test api/python/tests/test_isolation.py compares its namespace state before compilation, after execution, closure, and process exit, including SIGKILL, while a reference server is running.
The tables below describe the intent of each scenario. They are not an executable inventory: one directory usually registers several ctest entries (-run, -compile, -vg, and named variants), and the list grows with every release. The current state is returned by ctest -N in the build/Debug directory.
After the directory merge, all integration tests use the it_ prefix; the former pt_ prefix no longer denotes a separate class. Script tests use st_, and monitoring-client tests carry the api label. The embedded Python binding has a separate python label: with RDB_PYTHON=ON, python_stage refreshes the package and python_binding runs pytest as part of ordinary ninja test. Neither belongs to ninja test-valgrind. Two top-level guards - harness_guard-selftest and harness_command_integrity - verify that a wrapper actually ran the command under test and did not mask its exit status.
Valgrind descriptions refer to the standard Linux run. The Apple development port runs tests without that wrapper and requires a separate sanitizer build; a -vg name does not establish memory checking. See Apple development environment for the test scope and explicit test-api step. Unit tests in test_busFallback.cpp also check that a stopped live owner retains its lock and that the lock is recovered after its owner dies.
Execution and service scenarios
| Test name | Description |
|---|---|
Data | A shared set of data and queries for cross-cutting scenarios: waterfall (a full plan run under -m 10 plus artifact cleanup), workflow (a reference query, comparing two result streams), and all-operators (the same run for a query using the complete set of algebra operators). See: Data Processing and Distribution. |
ipc_identity_lock | A held IPC identity rejects startup before storage is changed; two servers with the same explicit name cannot take over shared IPC despite different TMPDIR values and bus namespaces. The first server remains responsive. It takes the lock through the engine’s own protocol (stillLinked with retries), because a bare open() plus flock() lost the race against a neighbouring test’s sweeper. Every failed check dumps the state at the moment of failure - the contents of /dev/shm with inodes, the locks with their owners from /proc/locks, the process table, and the tail of the engine log - which is why the test runs in parallel, without RUN_SERIAL. |
leftover_sweep | Cleanup after normal exit, restart following SIGKILL, exit of another instance, and explicit --cleanup. Checks that a live server retains its resources. Runs serially so a concurrent process cannot remove the leftovers under examination. |
agse1 | The window operator @(step, width) - the step counts flattened source elements; a positive width @(1,4) orders the window from the newest element, while a negative width @(1,-4) reverses its order. See: AGSE Sliding Window. |
agse_array | AGSE over a numeric array field and an equivalent scalar schema: every flat element must enter the window in the same order. See: Aggregate Operators, Compilation Passes. |
agse_volatile | An AGSE window over a VOLATILE stream (MEMORY buffer) must see the whole window range. With too small a capacity the ring buffer overwrites the oldest field and the window reads the newest record in its place. See: VOLATILE Clause, AGSE Sliding Data Window. |
array_derived | Equivalence between numeric T[N] and explicit scalar fields through copy, shift, AGSE, SUMC, interleave, and mixed interleave, including NULL mapping. See: Aggregate Operators, Compilation Passes. |
client_tty_keystroke_immunity | A byte waiting on a pseudoterminal must not shorten xqry --elimitqry N reception; the client must receive its complete record budget before executing the combined --kill. |
config_storage_validation | Hard rejection of an invalid storage.dir in the TOML file: the nonexistent variant (directory missing) and unwritable (no write permission). In both the program exits non-zero with a Configuration error: storage.dir … message. The config-errors variant checks a discovered layer with invalid TOML syntax and with a relative paths.lock_dir in xretractor, xqry and xtrdb (nonzero exit code, file name and cause on stderr), a missing file as the positive control, an explicit --config, and --help working despite a malformed configuration. See: Command-Line Options - xretractor, Configuration file. |
deinterleave_roundtrip | Bit-exact verification of the interleave–deinterleave round-trip identity: a2 and b2 recover the components exactly, from record zero, with no placeholder record. The patterns are derived from the formal definitions, not from engine output. See: Tails, Logical Origins and Operator Observability. |
device_timeout | Reading a DEVICE source without blocking, with a FIFO as a controlled source: an explicit TIMEOUT clause in the -c listing, a warning about a deadline longer than the rate, refusal of TIMEOUT on the deprecated FILE and of a negative [sources] timeout_s; deadline precedence (RQL, configuration, 0, -f mode); the same bytes as BINFILE and as DEVICE give the same results behind multi-rate operators; a FIFO without a writer starts without hanging and gives NULL records; --until-eof ends when the writer leaves, with no NULL record from beyond the end; xqry answers while the engine waits for the source; TIMEOUT survives an ad hoc import and --reset. -vg- variant under Valgrind. See: DECLARE Command. |
ecg_qrs | Full execution of the compact ECG pipeline: windows directly in FROM, [_] expansion based on their width, and function-form reducers. The test checks origin= and tail= in the plan and 4,830 records of deterministic content across four intermediate and final streams. See: MIT-BIH ECG Visualization, Underscore Symbol Processing, Tails, Logical Origins and Operator Observability. |
agse2 | Window @(n,m) combinations on a 3-field stream, alignment and rate conversion at ratios 1:1, 1:2, 2:3, 2:4. See: AGSE Sliding Data Window. |
agse3 | The @(n,m) operator when the output rate is lower than the input rate (source rate 0.1) - windows @(3,2), @(3,3), @(3,-3). See: AGSE Sliding Data Window. |
consistency | Read consistency: two streams read the same source; their difference must always equal 100. See: Data and Control Flow. |
fatal_exit_path | A fatal startup or communication-thread error exits with status 1, removes IPC and the service lock, and does not turn into SIGSEGV or SIGABRT. See: Data and Control Flow. |
fncall_runtime_case | Executes mathematical functions in forms accepted by the grammar, including Sqrt, Ceil, and Floor; the test verifies runtime values, not only successful compilation. See: Field Expressions and Scalar Functions. |
index_wildcard_mixed | Expansion of [_] as one mixed SELECT-list item: field order before and after the expansion, two independent expansions, and payload layout matching the hand-written reference. |
adhoc_parse_error | Invalid syntax, multiple statements, an out-of-range literal, a zero interval, and other invalid values are rejected with a reason without stopping the server or changing its plan. This also covers LET declarations and ?NAME references, which the ad-hoc channel does not accept. |
adhoc_rule | Attaching RULE ... DO DUMP at run time, the available-history boundary, and rejection of DO SYSTEM and a range deeper than the MEMORY store. |
issue202_hash_shift_e2e | Runtime verification of (A>2)#(B>1) = (A#B)>3 for ΔA=0.1 and ΔB=0.2: independent text sources, physical equality of the matched and CC streams, and comparison with the sequence derived from the interleave formula. See: Substrates. |
issue113_meta_internal | Structure of the .meta sidecar file: header size (8 B), entry size (18 B), sampling interval, null bitsets for records with and without nulls. See: Data Storage Format - Files. |
issue113_meta_xtrdb | Verification via xtrdb that after running xretractor+xqry, the .meta file is created and reported correctly (meta: temp/str_null.meta). See: Data Storage Format - Artifact Analysis. |
issue113_null_skip | The -n flag in xqry - rows that are entirely null are skipped; without the flag, all rows (including all-null ones) must be present. See: Command-Line Options - xqry. |
issue113_null_xqry | Nulls transmitted over IPC: null values from the source file are shown as null in xqry output. See: Command-Line Options - xqry. |
issue121_isnull | The isnull(field) function - returns 1 when the field is null, 0 otherwise. See: Field Expressions and Scalar Functions. |
issue121_null_propagation | Propagation of null values through SELECT to the output stream. See: SELECT Command. |
issue128_numeric_to_string | Conversion of INTEGER/FLOAT to STRING via the to_string() function with a declared field width; verification of the output descriptor. See: Field Expressions and Scalar Functions. |
issue128_string_to_numeric | Conversion of STRING to numeric types: to_integer(), to_float(), to_double(); null propagation through the conversion. See: Field Expressions and Scalar Functions. |
issue167_dedup_cascaded | Cascaded absorption of substrates via deduplicateSubstrats() - multi-step rewriting of PUSH_ID tokens. See: Substrates. |
issue167_dedup_field_names | Substrate deduplication without comparing schema field names - merging when field types are equivalent, regardless of names. See: Substrates. |
issue167_dedup_nonzero_offset | Updating PUSH_ID in the consumer’s lSchema for a non-zero offset of the absorbed substrate; coverage of the code path in compiler.cpp. See: Substrates. |
issue167_dedup_positive | The basic deduplication case: a substrate merged with a named stream with an equivalent program and field types. See: Substrates. |
issue167_triarg | Multi-argument stream expressions: s1+s2+s3, (s1#s2)#s3, s1+(s2#s3), s1+s2+s3+s4; in-memory and on-disk substrates. See: Substrates, Operation Sequencing. |
issue217_client_diag_stderr | xqry diagnostics must go to stderr, not stdout. Invoking it with no server running exits non-zero and leaves stderr non-empty - without that, redirecting >/dev/null 2>err made every client failure invisible. See: Command-Line Options - xqry. |
issue227_join_alignment | Separation of the logical origin from the tail. The run variant checks the origin= and tail= values printed by the compiler and the content of a window joined with its own source; the adhoc-origin variant checks that a query attached at run time starts at the slot in which the runtime saw it. Expected values are derived from the operator definitions. See: Tails, Logical Origins and Operator Observability, Ad Hoc Queries. |
issue42_rule | The RULE command - conditional DUMP and SYSTEM actions triggered on stream values; runs xretractor and reads the result via xtrdb. A separate -dump entry decomposes the temp/str1_*_dump*.tmp files into INTEGER values and compares them against a pattern - it pins the actual state, including the leading zeros that DO DUMP -5 writes over a stream younger than six records. See: RULE Command. |
k19_boundaries | Operator observability boundaries: forward and backward windows, difference at equal and doubled interval, .sumc reduction. Distinguishes a genuine NULL inside a full window from the internal all-null record returned as a failsafe when reading outside the retained history. See: Tails, Logical Origins and Operator Observability. |
k24_capacity | History depth for operators that read ahead. Differences at an integral ratio ≥ 3 previously produced a stream of correct length consisting entirely of all-NULL records (a silent defect), and a chain of window, shift, and interleave ended in process abort inside storage::revRead. See: Compilation Passes. |
k24h10_exact_tails | Emission boundaries for difference and both de-interleaves, including sources with non-zero tails. Record count and content guard the exact phase rules against premature or delayed emission. See: Tails, Logical Origins and Operator Observability. |
let_constants | LET constants and ?NAME references in every numeric context. A pair of plans “literals / LET” yields byte-identical xretractor -c printouts (text, CSV, DOT) and, after a run on the same data, byte-identical stream files, descriptors and DUMP snapshots. See: LET Command. |
let_typed | Explicit type of a LET constant (#547). A DOUBLE constant over a DOUBLE field next to the unannotated constant 0.1 (FLOAT) - the difference is visible in a separate field; a RATIONAL constant in an expression over an INTEGER field yields a RATIONAL field; the UINT constant 3000000000 in RULE ... WHEN over a UINT field, with a VAR hit counter. Values and field types from .desc against the oracle.py oracle. See: LET Command. |
var_read | VAR without SET is equivalent to LET in scalar expressions; types, programs, and results agree. |
var_set | Hysteresis, counter, EMA, and rescaled uc10/uc11/uc12/uc14 cases against an independent Python oracle from the start of the run; next-slot updates, text-order conflicts, NULL, and two identical offline runs. |
var_reset | Latch state is lost on plan reload and returns only after a new threshold crossing. |
var_adhoc | Live VAR reads and DO SET attachment, priority of later rules, refusals preserving state, and reset without leaking names or values. |
var_xqry | xqry –vars before the first slot and after SET; INTEGER, FLOAT, RATIONAL, NULL, YAML, JSONL refusal, and empty lists for a plan without VAR or an idle instance. |
var_typed | Explicit VAR type: a UINT counter reset with a literal, a DOUBLE accumulator over a DOUBLE field, and a RATIONAL threshold restored with the literal 0.1 (exactly 1/10), compared with a Python oracle; two byte-identical runs and annotated types in xqry –vars. |
noclock_offline | Artifact and logical-timeline equivalence between paced and --no-clock execution, plus rejection of --no-clock --realtime. See: Command-Line Options - xretractor. |
multiserver_named | Two named instances, separate locks and IPC, every form of --name, automatic names, and independent shutdown. |
multiserver_no_clobber | A losing start of the same instance does not delete the owner’s artifacts and reports its PID. |
multiserver_routing | Automatic routing of streams, ad hoc commands, and RULE; rejection of cross-server requests; bus listing; and waiting for the correct instance. |
multiserver_uniqueness | Atomic uniqueness of stream names, storage files, and the rotation counter during startup, ad hoc attachment, service delivery, and concurrent starts. |
null_divide_by_zero | Division by zero is an absorbing value: the stream yields NULL and keeps running. The point of the test is the record following the division - had the missing result been handled by an exception, it would never have been produced. See: Field Expressions and Scalar Functions. |
issue56_timeshift | The > filter operator on joined streams - only records satisfying the condition end up in the output stream. See: SELECT Command - Sequencing. |
issue61_tmpmem | The in-memory substrate SUBSTRAT 'memory' - intermediate data kept in RAM instead of on disk. See: STORAGE Types. |
issue6_adhoc | Ad-hoc query mode: xqry -a 'SELECT ...' - defining and executing a query on the fly, without an .rql file. See: Ad Hoc Queries. |
operations | The # (HASH merge) operator on two streams with different rates - verifying the ratio of record counts in the output. See: Interleaving Operation Sequencing. |
optimizer_ablation | Variant builds with individual optimizer rules switched off. build-info checks the identity of the configuration the binary reports, plan checks plan shape, and the remaining variants (semantic, factor-*, dedup-*) compare execution results across configurations. Every admissible optimizer configuration must preserve the observable result. See: Production Builds and Diagnostic Variants. |
packaging | Checks the exact DEB contents when dpkg-deb is available: three binaries, systemd unit, license, default TOML, and configuration examples. Separately checks portable TGZ: three binaries, license, and default TOML, with relative paths and no service. Source packages are disabled and are not tested. See: Production Builds and Diagnostic Variants. |
r1_identity_nulls | The R1 identity for the rewritten plan, blocked/non-rewritten left-hand side, and explicit right-hand side: equal origin=, payload, and NULL map in .meta. The non-rewritten side has a strictly larger tail - R1 preserves the record sequence, not the latency - so its comparison covers the common prefix. The ΔA/ΔB=3/2 case guards the phase-maximum own tail of #. See: Substrates. |
replay_stability | Repeating the same plan on the same data must produce an identical set of non-empty artifacts: payloads, descriptors, NULL maps, and shadow files; only the 8-byte reserved header is omitted from metadata comparison. See: Stream Replay, Data Storage Format. |
rotation_test | The stream binary-file rotation mechanism (ROTATION) - file count after two xretractor -m 2 cycles. See: File Rotation Mechanism. |
select_cse_commutative_add | Sharing equivalent SELECT computations for a+b and b+a: one STREAM_SELECT_*, separate public artifacts and descriptors, and identical data and NULL metadata. The test also guards SELECT *, projection order, and the three-source regrouping counterexample. See: Substrates. |
service_delivery | Delivering a set to a live service: correct target selection, startup-plan persistence, rejection on collision with another instance, and starting a separate instance when --name or --autoname is supplied. |
service_idle | Service and idle mode: starting without an .rql file completes cleanly, and the log goes to stderr in sd-daemon format (priority prefix, no timestamp). Two ways of enabling it - the --service flag and the XRETRACTOR_SERVICE variable. See: General Perspective, Command-Line Options - xretractor. |
service_reset | Two-phase replacement of a complete plan, preservation of the old plan after rejection, transitions to and from idle, and persistence of the service startup plan. It also covers the DO SYSTEM boundary: a plan carrying such a rule is refused as a whole, the refusal names the rule and the reason, the rule does not run, and the old plan keeps computing - and the same plan is accepted, with the rule working, once the unrestricted.toml configuration sets service.unrestricted = true. |
service_reset_double | Two consecutive plan replacements on the same instance and correct reconstruction of resources for the next epoch. |
service_reset_race | Concurrent reset and client commands never observe a partially dismantled or partially active plan. |
show_handler_failure | A failure in the server’s show subscription handler reaches the client as the direct rejection reason instead of appearing later as a response-queue timeout. |
simple | A smoke test for arithmetic on joined streams (core0 rate 0.1 + core1 rate 0.2), read via xtrdb. See: SELECT Command. |
simple_max | The backward-compatible, deprecated .max notation - the maximum value, joined with the original stream. See: Aggregate Operators. |
slot_schedule | Slot schedule against a fixed anchor, measured by the moments at which records appear in the store: slot work shorter than the period (waiting for an empty DEVICE and a DO SYSTEM rule) does not make the delay grow, also with --realtime; after a single stall the overdue slots run without sleeping, execution returns to the original grid, and the BINFILE and DEVICE artifacts are byte-identical to a --no-clock run; a new epoch after --reset has its own anchor; an ad hoc import of a new rate does not shift the axis; SIGTERM during the sleep ends the run immediately, without a slot before its deadline. A -vg- variant runs under Valgrind (drift and catch-up, period 1/4 s). See: Query Tree Traversal Algorithm. |
source_kinds | Source kind from the keyword, not from the path: BINFILE 'ascii.txt' reads raw bytes, TEXTFILE 'values.dat' parses text with the NULL token, DEVICE on a FIFO named .txt reads raw bytes, and a zero byte is not NULL. File kind refusals (FIFO without a writer, character device, regular file for DEVICE) with exit code 71 and without hanging. Without --verbose the deprecated FILE form gives output identical to the explicit keywords, with --verbose one warning per declaration - also on an ad hoc import. Source descriptor: the old TYPE DEVICE of a binary file is replaced, a change of kind or path is refused. A -vg- variant runs under Valgrind. See: DECLARE Command. |
stream_generator | The SELECT ... STREAM cell[N] generator: executing the family matches manually written-out streams, the instances are named cell$0…cell$(N-1), and cleanup removes the artifacts of the whole family. See: SELECT Command - Stream Generators. |
string_field_passthrough | Unquoted TEXTSOURCE input, neighboring-field alignment, STRING[N] clipping, type propagation, and the actual value measured by Length. See: Field Expressions and Scalar Functions, Compilation Passes. |
tty_keystroke_immunity | A byte waiting on a pseudoterminal must not shorten xretractor --llimitqry N; a run under a TTY must produce the same amount of data as a run without a terminal. |
untileof_stop | --until-eof matches a manually bounded ONESHOT source, does not wrap the file, and stops at the first exhausted source in a multi-source plan. Variant it_untileof_stop-missing-sources (#488) checks TEXTFILE, BINFILE and DEVICE: a missing file or parent directory, a path component that is not a directory, a dangling symlink and denied permissions (under a non-root account). With -u and a run bounded by -m, it requires code EIO within 5 s, a diagnostic naming the cause, unchanged previous results and no repeated read warnings. It also checks -c without an available source and an input disappearing after preflight, before model construction: code EIO with no result records written. See: Command-Line Options - xretractor. |
wide_from_names | A wide FROM clause past the 200-byte threshold uses a stable shortened substrate name, stays within NAME_MAX, preserves deduplication, and performs the SUMC reduction over the window correctly. See: Substrates. |
window_aggregate | Record-history MIN/MAX/AVG/SUMC(expression : W): values, types, boundaries, arrays, expressions, shared groups, NULL, null2zero, and schema propagation through a copy. See: Aggregate Operators. |
xqry_array_row | Complete serialization of a numeric array field by xqry: every element in order in raw, Graphite, and InfluxDB formats, without limiting the value count to the number of descriptor entries. See: Command-Line Options - xqry, Stream Monitoring API. |
xqry_elem_limit | The -m N parameter in xqry - limits the number of received records to exactly N, regardless of the source’s length. See: Command-Line Options - xqry. |
xqrywait_gate | The --xqrywait gate does not lose the first command, does not reset the --llimitqry budget, and can be interrupted by a signal before a client arrives. |
Newer regression scenarios
| Test name | Description |
|---|---|
adhoc_register_rollback | An injected status failure and a separate -throw variant with an exception after import restore the plan and bus claims; the client receives the reason, the server keeps computing, and retrying the query produces data. |
hash_string | Interleaves STRING fields of different widths and INTEGER/DOUBLE fields, with both source orders and through ad hoc. The -adhoc-zero-step variant attaches a source before the zero step through the -x gate and checks initialization of its logical base. |
expr_corpus | Expression plans, including mixed types, strings, and overflow boundaries, check values and types against patterns and an independent oracle. The oracle also reads binary FLOAT/DOUBLE values and DUMP contents; own_rules covers true and false rule conditions, real-number precision, and UINT boundaries. |
ipc_client_killed_reading | Killing a client while it reads a response does not block later commands. |
issue252_missing_stream | A request for an unknown stream returns a refusal while the server keeps emitting records. |
rule_string_compare | String comparisons and a bare string condition in RULE WHEN fire rules in the correct slots. |
xtrdb_engine_guard | xtrdb refuses access for a live named instance, including one using a custom paths.lock_dir, but accepts a stale lock file. A FIFO in the lock directory does not hang the tool. An unreadable file causes a cannot verify refusal without changing storage; this case is explicitly skipped for root. |
xtrdb_lost_lock | xtrdb refuses access for a live engine whose lock file was deleted or replaced, and writes again once the engine stops (#573). |
expr_result_types | Result-field types and sizes, fractional values, NULL, and schema copying through SELECT *. |
field_ref_outside_from | Rejects a reference to a field of a stream outside FROM and verifies a reference through the result stream’s field. |
reducer_field_ref | Rejects a reducer name used as a field in SELECT and reads the result through a materialized stream. |
reducer_float_max_avg_count | MAX over negative FLOAT and DOUBLE values, and AVG over records with 256 and 257 fields. |
self_ref_field_shape | A field referenced by the stream’s own name takes its type from the corresponding FROM record slot. |
self_ref_simplify_synth | Input-slot types for windows and reducers protect FLOAT calculations from incorrect constant simplification. |
self_ref_simplify_type | A self-reference in an expression eligible for simplification uses the FROM slot type, not the output-field type. |
silent_arith_overflow | Overflow in INTEGER and RATIONAL expressions and reducers yields NULL instead of a wrapped number. |
synth_node_output_shape | Output-field types after a window, reducer, or join match the actual input slots. |
xqrywait_first_row | The first record survives the interval between opening the --xqrywait gate and creating the xqry subscription queue. |
Compilation and offline scenarios
The following directories primarily register compilation variants, plan presentation, or artifact operations. Some also occur in the execution table because one CMakeLists.txt can register several independent CTest entries.
| Test name | Description |
|---|---|
Data | The compilation side of the shared Data set (files shared with the serial variant): on-query - compilation of the reference query, presenter - plan presentation after that compilation, banned-artifacts - a guard checking that no artifact with a forbidden name colliding with system tools was created in the install directory. See: Compilation and Plan Construction. |
dsp | Compilation regression for the compact FIR filter pipeline: the source@(1,25) window directly in FROM, 25-element expansion of source[_] * filter[_], the SUMC(accRow) reduction, and joining the signal with the output. See: Signal Filter Implementation, Underscore Symbol Processing. |
issue113_meta | xtrdb operations after two appends - record list and hexdump of the binary file compared against a pattern. See: Data Storage Format - Artifact Analysis. |
issue113_meta_autocreate | Automatic creation of the .meta sidecar file after the first append; size >16 B; xtrdb reports the correct path. See: Data Storage Format - Files. |
issue113_null_txtsrc | The rread/getpos commands in xtrdb on a TEXTSOURCE stream containing nulls. See: Data Storage Format - Artifact Analysis. |
issue153_storagemap_meta_cases | The xtrdb -s storage map for a plain file and a retractordb-style file: slot markers, segment list, rotated files, .meta/.shadow references. See: Inspection Tool xtrdb -s. |
issue202_hash_shift_factorization | Algebraic optimization of (A>i)#(B>k) into (A#B)>(i+k) when i·ΔA=k·ΔB, plus protection of the unmatched case. See: Substrates. |
issue31_doc | Generating DOT/SVG graphs via xretractor -c -d ... for documentation examples at three levels of detail. See: Compilation Debugging. |
issue42_rule | Compilation of RULE syntax - the -c stage only, without starting the server. See: RULE Command. |
issue56_timeshift | Compilation of the > filter operator - the -c stage only. See: SELECT Command - Sequencing. |
issue61_tmpmem | Compilation of a query with SUBSTRAT 'memory' - the -c stage only. See: STORAGE Types. |
issue95_loopInCompile | Cycle detection in the query graph by the compiler - expected “Circular dependency” error and a non-zero exit code. See: Loop Detection in Compilation. |
issue96_no_substrat_reduction | User-defined streams with an identical structure are NOT merged; only automatic substrates are subject to merging. See: Substrates. |
issue96_substrat_reference | A generated substrate shared by two user streams - correct references in the dependency tree. See: Substrates. |
Pattern1 | Compilation of the # (HASH-merge) operator, field selection with an offset, and stream joining with +. See: Interleaving and Summation Operation Sequencing. |
Pattern2 | Compilation of queries on BYTE streams from /dev/urandom: SELECT, arithmetic, stream joining. See: SELECT Command. |
Pattern3 | Compilation of SELECT * (unfold) with an output-file declaration and retention. See: Asterisk Expansion. |
Pattern5 | xtrdb operations on a multi-type record (STRING, INTEGER, BYTE, FLOAT): append, read, list/rlist, input, write. See: Artifact Analysis. |
Pattern6 | Compilation of the window operator @(n,m) forward @(1,10) and backward @(1,-10), plus a leak-free valgrind run. See: AGSE Sliding Data Window. |
Pattern7 | Compilation with identical field names across multiple streams (issue #17) - correct field identification via the stream index. See: DECLARE Command, Aliasing. |
retention | xtrdb operations on a file with a RETENTION parameter: open, purge, append, list, write for a specific record. See: Data Storage Format - File Rotation Mechanism. |
simple | Compilation of a basic arithmetic query + DOT graph + valgrind; uses data from IntegrationTest/simple. See: SELECT Command. |
simple_max | Compilation of a query with .max + DOT graph + valgrind; uses data from IntegrationTest/simple_max. See: Aggregate Operators. |
subquery | Compilation of nested subqueries: (a#b)>1 (hash-merge inside a filter) and (a>1)#b (filter inside a hash-merge). See: Dependency Tree Construction. |
txtsrc | xtrdb operations descc/rread/printt on a TEXTSOURCE stream (a text file as a data source). See: Data Storage Format. |