Skip to content

Commit ee9166c

Browse files
committed
Refactor documentation: remove .md extensions from all internal links
and delete deprecated docs
1 parent 23b91c2 commit ee9166c

111 files changed

Lines changed: 599 additions & 891 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs-site/content/docs/reference/sql/aggregates.md

Lines changed: 0 additions & 72 deletions
This file was deleted.

docs-site/content/docs/reference/sql/data-types.md

Lines changed: 0 additions & 50 deletions
This file was deleted.

docs-site/content/docs/reference/sql/functions.md

Lines changed: 0 additions & 122 deletions
This file was deleted.

docs-site/content/docs/reference/sql/null-semantics.md

Lines changed: 0 additions & 72 deletions
This file was deleted.

docs-site/reference/api/data-api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Data API (deprecated)
22

3-
This page has been renamed to **Jobs API**. See [Jobs API](jobs-api.md).
3+
This page has been renamed to **Jobs API**. See [Jobs API](jobs-api).
44

55
Base URL: https://jobs.opteryx.app
66

docs-site/reference/internals/bytecode-engine.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@ Because the whole program is known at compile time, the executor can pick a path
5050

5151
## In short
5252

53-
The bytecode engine is the expression-evaluation core: it compiles each expression into a flat, postfix program once at bind time — materialising literals and binding kernels to function pointers up front — then executes that program over [Draken](draken.md) vectors morsel by morsel, with the GIL released wherever the whole expression is native. The planner does the thinking once; the data path just runs.
53+
The bytecode engine is the expression-evaluation core: it compiles each expression into a flat, postfix program once at bind time — materialising literals and binding kernels to function pointers up front — then executes that program over [Draken](draken) vectors morsel by morsel, with the GIL released wherever the whole expression is native. The planner does the thinking once; the data path just runs.

docs-site/reference/internals/draken-german-strings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Strings are the awkward case for a columnar engine. Numbers are fixed-width —
44

55
Draken sidesteps most of that cost with a layout commonly called the *German string* (popularised by the Umbra and DuckDB teams). The idea: make every string occupy a fixed-width slot, and pack enough information into that slot that the most common operations — equality, ordering, length — usually finish without ever touching the variable-length bytes at all.
66

7-
This document explains that layout. For how strings (and every other column) are wrapped for execution, see [How Draken Stores Column Data](draken-vector-encoding.md).
7+
This document explains that layout. For how strings (and every other column) are wrapped for execution, see [How Draken Stores Column Data](draken-vector-encoding).
88

99
---
1010

@@ -92,7 +92,7 @@ Operations like aggregation accumulate group keys by copying string slots from o
9292

9393
That means **no re-derivation of the prefix** and no work proportional to the string's length beyond the byte copy itself. Re-homing a string key is essentially a 16-byte copy plus an arena append.
9494

95-
Because a long slot holds an *offset* rather than a pointer, slots and arena are also byte-for-byte relocatable as a pair — which is what lets a string column be written to disk and read back without rebuilding anything (see [Skene](skene.md)).
95+
Because a long slot holds an *offset* rather than a pointer, slots and arena are also byte-for-byte relocatable as a pair — which is what lets a string column be written to disk and read back without rebuilding anything (see [Skene](skene)).
9696

9797
---
9898

docs-site/reference/internals/draken-vector-encoding.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Predicate evaluation becomes even cheaper than the memory saving suggests. To te
3030

3131
Parquet's RLE_DICTIONARY encoding on disk maps directly to this shape in memory. There is no expansion step at read time.
3232

33-
The values inside a string dictionary — and inside any string column — have their own fixed-width layout; see [How Draken Stores Strings](draken-german-strings.md).
33+
The values inside a string dictionary — and inside any string column — have their own fixed-width layout; see [How Draken Stores Strings](draken-german-strings).
3434

3535
### Constant
3636

docs-site/reference/internals/draken.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
Draken is the columnar vector library at the centre of Opteryx. Every column of data in the engine — whether freshly read from a file, produced by a join, or returned from an expression — is a Draken vector. It is the common currency that lets the scan, the operators, and the expression engine all speak the same language, across the Python, Cython, and C++ boundaries.
44

5-
Draken has **zero external dependencies**, and it ships inside both the Opteryx SQL engine and the standalone [Rugo](rugo.md) file engine. It is never published on its own; it travels as part of whatever uses it.
5+
Draken has **zero external dependencies**, and it ships inside both the Opteryx SQL engine and the standalone [Rugo](rugo) file engine. It is never published on its own; it travels as part of whatever uses it.
66

77
---
88

99
## One vector, one access pattern
1010

1111
The core idea is that all columnar data is represented by a single struct, the **DrakenVector**, and every consumer reads it the same way. A vector pairs a buffer of values with a *selection* — a list of indices — and the value of logical row `i` is always `data[selection[i]]`. That one access pattern is the correctness contract: any kernel written against it produces the right answer for every vector it is handed.
1212

13-
This uniform access is what lets the same vector quietly carry three very different physical layouts — a fully materialised *dense* column, a *constant* broadcast of one value, or a *dictionary* of distinct values plus per-row codes — without operators needing to branch on which is which. That layout story is told in full in [Draken vector encoding](draken-vector-encoding.md), and the way strings in particular are stored has its own page in [Draken string storage](draken-german-strings.md).
13+
This uniform access is what lets the same vector quietly carry three very different physical layouts — a fully materialised *dense* column, a *constant* broadcast of one value, or a *dictionary* of distinct values plus per-row codes — without operators needing to branch on which is which. That layout story is told in full in [Draken vector encoding](draken-vector-encoding), and the way strings in particular are stored has its own page in [Draken string storage](draken-german-strings).
1414

1515
The struct's memory layout is **frozen**: a large number of compiled call sites bind its field offsets at compile time, so the engine pins the layout with compile-time assertions. A silent reordering of its fields would not fail the build — it would corrupt data — so the layout is guarded rather than trusted.
1616

@@ -51,4 +51,4 @@ Code that consumes Draken does so through a typed Cython surface and a small C++
5151

5252
## In short
5353

54-
Draken is the substrate everything else stands on: one frozen vector struct, one access pattern, one type vocabulary, and a native kernel library that computes over all of it. Rugo fills vectors from files; the [bytecode engine](bytecode-engine.md) evaluates expressions over them; the operators join, group, and sort them — but they all agree, because they all speak Draken.
54+
Draken is the substrate everything else stands on: one frozen vector struct, one access pattern, one type vocabulary, and a native kernel library that computes over all of it. Rugo fills vectors from files; the [bytecode engine](bytecode-engine) evaluates expressions over them; the operators join, group, and sort them — but they all agree, because they all speak Draken.

0 commit comments

Comments
 (0)