Skip to content

Add Silicium native analytical engine (columnar, PostgreSQL compatible) - #2671

Open
silicium369-spec wants to merge 1 commit into
ClickHouse:mainfrom
silicium369-spec:add-silicium
Open

silicium369-spec wants to merge 1 commit into
ClickHouse:mainfrom
silicium369-spec:add-silicium

Conversation

@silicium369-spec

@silicium369-spec silicium369-spec commented Oct 18, 2026 •

Copy link
Copy Markdown

Overview

This PR adds Silicium (silicium/), a native vectorized columnar analytical engine with a PostgreSQL-compatible wire server and full 105-column ClickBench ingestion and execution support across both x86_64 and aarch64 architectures.

Changes Addressed Since Previous Review (#2427)

We have thoroughly refactored the engine and harness to address every point raised in the review of #2427:

  1. Full 105-Column Ingestion & Physical Storage (load / silicium_ingest):

    • All 105 columns of the ClickBench hits.parquet dataset (78 fixed-width scalar columns + 27 variable-length BYTE_ARRAY / string columns) are physically ingested, materialized on disk (data/arena_100m, ~17.02 GB columnar arena), and queryable.
    • No columns are dropped or skipped during ingestion.
  2. General SQL Parser & AST Planner (sqlparser-rs):

    • Arbitrary SQL queries are parsed into an AST via sqlparser::parser::Parser (PostgreSQLDialect / GenericDialect) and compiled into a general physical execution plan (PhysicalPlan) supporting arbitrary SELECT projections, constant/arithmetic expressions (SELECT 1 + 1), derived subqueries (SELECT * FROM (SELECT ...) t), WHERE filter conjunctions/disjunctions (=, !=, <, <=, >, >=, BETWEEN, IN, LIKE / NOT LIKE), GROUP BY keys (scalar, dictionary, string, and computed expressions such as EXTRACT, DATE_TRUNC, SUBSTRING, REGEXP_REPLACE, array/string functions), COUNT / SUM / AVG / MIN / MAX / COUNT(DISTINCT ...) aggregations, ORDER BY, and LIMIT.
    • No query IDs, hardcoded query templates, or benchmark-specific dispatch paths exist in the binary.
  3. Zero Pre-Computed Query Results During load:

    • load only converts hits.parquet into the 105-column columnar representation (col_*.bin / dict_*.bin) and builds generic secondary zone-map / dictionary indices. No query results or query-specific materializations are pre-computed during load.
  4. Dual-Architecture Standalone Binaries (x86_64 & aarch64):

    • install automatically detects uname -m (x86_64 or aarch64), downloads the corresponding standalone release archive (silicium-clickbench-x86_64-v2.0.0.tar.gz or silicium-clickbench-aarch64-v2.0.0.tar.gz) from the public release repository (https://github.com/silicium369-spec/silicium-clickbench/releases/tag/clickbench-v2.0.0), and verifies its SHA-256 checksum before extraction.

Included Results (results/20260412/)

Validated with ./validate-results.py:

  • c8g.metal-24xl.json (AWS Graviton4 aarch64, 96 vCPUs, 192 GB RAM)
  • c6i.metal.json (AWS Xeon Ice Lake x86_64, 128 vCPUs, 256 GB RAM)
  • c6a.4xlarge.json (AWS EPYC Milan x86_64, 16 vCPUs, 32 GB RAM)

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

This branch is waiting to be deployed

1 waiting deployment
benchmark-approval — 81c9b8d1 Waiting Oct 19, 2026 by silicium369-spec via launch #853
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