Package-level declarations
Types
One column as system.columns reports it.
A dataset declaration drafted from a table: its document, in the format of a dataset file, and the columns it leaves out because a dataset cannot declare their type.
Drafts a dataset declaration from what system.columns proves about a table, with the rules ClickHouseQuerySchemaAdapter checks a declaration by, so a draft always passes that check (dataset platform design §4.1). What only a person can decide is left for them:
How a ClickHouseDatasetQueryBackendFactory reaches its datasets.
The four query primitives over one dataset's table. Every statement runs under the limits of the query's entry (ClickHouseDatasetOptions.limits) and reads FINAL when the dataset deduplicates.
Creates each dataset's ClickHouse backend and storage adapter: over the default source's executor, or over the named source among sources that its storage binding names.
Where a dataset's records live, read from its storage binding:
Runs statements over the HTTP client and decodes JSONEachRow, one record per line.
What one query may cost ClickHouse, sent as server settings so ClickHouse enforces it: a query over a limit fails rather than returning a truncated result. null leaves the server's own setting.
What a dataset's table proves about its declaration (design §4.2, §5.2). The declaration is the contract and the table only confirms it: every declared field must be a root column of a supported type whose family matches the declared types, a non-null declaration needs a non-Nullable column, and the scope and identity columns must not be Nullable. FINAL needs an engine that merges rows. Any mismatch fails the compile, so the Catalog keeps the previous schema and reports it; a column the declaration does not name is never exposed.
One statement and its server-side parameters. Every caller value is bound as a typed parameter ({p0:String}); the SQL text holds only identifiers from the compiled schema, function names and finite numeric constants.
A table or view, its engine and its columns by name.
The family of a column's base type: what decides its capabilities and how operands are bound.