Package com.darkcollective.relix.symbol.relation


package com.darkcollective.relix.symbol.relation
Relation symbol hierarchy — the five concrete kinds of named relation.

All five implement RelationSymbol, which in turn implements Symbol.

  • DatabaseRelationSymbol — a relation backed by an external JDBC store. Only its schema is stored here; the actual data lives in the database.
  • InlineRelationSymbol — a relation whose rows are declared inline in a .relix file, typically as a Markdown or CSV table. Column types are inferred from cell content: columns whose every cell parses as a number are typed ScalarType.NUMBER; all others are ScalarType.STRING.
  • QueryRelationSymbol — a named relational algebra expression (a RelNode body). Acts as a view: the body is stored for later semantic analysis and pretty-printing.
  • SourceRelationSymbol — a relation backed by an external transport (HTTP API, CSV file, etc.). Only the schema is stored here for name-resolution purposes; the full source configuration lives in the semantic model produced by relix-semantic.
  • SystemRelationSymbol — a read-only engine-computed catalog relation in the reserved relix.* namespace. Rows are populated by CatalogBuilder; the type itself enforces that catalog relations are structurally distinct from user-declared inline data.

All five types are records and are therefore immutable. The user-facing types (InlineRelationSymbol, SourceRelationSymbol) provide a convenience factory method (of(...)) that applies the standard defaults: namespace "default" and provenance Provenance.USER.