Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# What a released distribution carries, and what it does not.
#
# `git archive` reads these from the tree it archives, so a tag must contain
# this file for the rules to apply to that tag's archive.
#
# The rule for deciding: ship what someone INSTALLING the extension needs, plus
# what lets them verify it. Leave out what only someone DEVELOPING it needs.
# Anything the Makefile reads stays, or the archive does not build.

# Internal design records and planning, 1.1M. Two files stay, because the
# documents a consumer actually reads link to them:
#
# NATIVE_FORMAT_AND_INTERFACE_SPEC.md README.md, PROVENANCE.md and four
# pages under docs/ reference it, and
# README is the page PGXN renders
# ROADMAP.md CHANGELOG.md and the spec link to it
#
# Named per-path, not as `design/`: export-ignore on the directory prunes it
# before git archive descends, so the exceptions would never be reached. Same
# shape as the test/ rules below.
#
# KNOWN AND ACCEPTED: ROADMAP.md links onward to EXTERNAL_AUDIT_2026_07.md,
# POSTGRESQL_VERSION_ADOPTION.md and gaps/, which do not ship. Those four links
# are dead inside the distribution. Following the closure would ship nearly all
# of design/ and there would be no trim left. The line is drawn so that the
# files a reader arrives at -- README and CHANGELOG -- resolve, and the dead
# links are confined to one internal planning document.
#
# This was found by resolving every relative link in the archive, not by judging
# which documents looked internal. That first judgement dropped the format spec
# and left a dead link on the rendered README.
design/*.md export-ignore
design/NATIVE_FORMAT_AND_INTERFACE_SPEC.md -export-ignore
design/ROADMAP.md -export-ignore
design/gaps/ export-ignore

# Benchmark harnesses, including builds of other engines to compare against.
bench/ export-ignore

# CI configuration; meaningless outside this repository.
.github/ export-ignore

# The project's own gate. It needs several PostgreSQL installs and a container,
# so it cannot be run from an unpacked distribution, and it is 5.1M of 9M.
#
# Named piece by piece rather than as `test/`, because export-ignore on a
# DIRECTORY prunes it before git archive descends, so an exception inside it can
# never be reached. Measured: `test/ export-ignore` plus
# `test/isolation/ -export-ignore` shipped zero isolation specs, and so did
# `test/**` plus `test/isolation/**`. 269 files sit directly under test/, all
# .sh or .py, and four directories, of which isolation is the one that stays.
test/*.sh export-ignore
test/*.py export-ignore
test/fixtures/ export-ignore
test/pbt/ export-ignore
test/selftest/ export-ignore

# test/isolation/ is NOT ignored: the Makefile globs test/isolation/specs/*.spec
# into ISOLATION and points ISOLATION_OPTS at it, so `make installcheck` runs
# the race specs from an unpacked distribution. 56K.

# Superseded by CHANGELOG.md; both describe the PREVIOUS release.
ANNOUNCEMENT_1.0-alpha2.md export-ignore
RELEASE_NOTES_1.0-alpha2.md export-ignore

# Orientation for someone working ON the repository, not with the extension.
CONTEXT.md export-ignore

# Documentation-site build config; docs/ itself ships.
mkdocs.yml export-ignore

# Repository mechanics.
.gitignore export-ignore
.mailmap export-ignore
.gitattributes export-ignore
4 changes: 2 additions & 2 deletions META.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "pgcolumnar",
"abstract": "Analytic column storage for PostgreSQL, built as a native table access method",
"description": "pgColumnar is a columnar storage table access method for PostgreSQL, written as a clean-room, MIT-licensed implementation. It reads and writes its own native format, PGCN v1, and supports chunk-group skipping from zone maps and bloom filters, vectorized aggregation, projections, retention, online compaction and reclustering, parallel bulk ingest and export, Apache Arrow and Parquet import and export, Apache Iceberg, and object storage.",
"version": "1.0.0alpha3",
"version": "1.0.0-alpha.3",
"maintainer": [
"Joshua D. Drake <jd@commandprompt.com>"
],
Expand All @@ -12,7 +12,7 @@
"pgcolumnar": {
"file": "pgcolumnar--1.0-alpha3.sql",
"docfile": "docs/index.md",
"version": "1.0.0alpha3",
"version": "1.0.0-alpha.3",
"abstract": "Analytic column storage for PostgreSQL, built as a native table access method"
}
},
Expand Down
5 changes: 5 additions & 0 deletions docs/benchmarks.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Benchmarks

These harnesses ship with the source, not with the distribution. A PGXN
distribution does not carry `bench/`. The harnesses build and install other
database engines to compare against. Clone
<https://github.com/commandprompt/pgcolumnar> to run them.

`bench/` holds three harnesses. Each builds and installs the extension into a
throwaway cluster, loads a dataset, and reports timings:

Expand Down
10 changes: 7 additions & 3 deletions docs/limitations.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

## Release status

pgColumnar is pre-release. The version marker is `1.0-alpha3`, recorded in `VERSION`.
That version is in development and is not tagged. The latest published pre-release
is `v1.0-alpha2`.
pgColumnar is pre-release. The version marker is `1.0-alpha3`, recorded in `VERSION`,
and it is tagged `v1.0-alpha3`.

On PGXN the same release is `1.0.0-alpha.3`. The two differ because PGXN requires a
semantic version. A semantic version has three integer components, and `1.0-alpha3`
has two. The pre-release identifier is dot-separated so that a tenth alpha sorts
after a third. `CREATE EXTENSION` reports the control file's version.

An alpha is still an alpha: treat a columnar table as reloadable and keep the source
the data was loaded from. The extension is appropriate today for evaluation, for analytical
Expand Down
8 changes: 8 additions & 0 deletions docs/testing.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Testing

These harnesses ship with the source, not with the distribution. The paths
below are in the git repository. A PGXN distribution carries the extension, its
documentation and the regression fixtures. It does not carry the test harness.
The suite needs several PostgreSQL installs and a container. It cannot run from
an unpacked tarball. From a distribution, use `make installcheck`. That runs the
`pg_regress` and isolation suites, which do ship. For everything below, clone
<https://github.com/commandprompt/pgcolumnar>.

The test suite builds and installs the extension, starts a throwaway cluster,
exercises the access method, and checks results. Each script takes a `pg_config`
and is self-contained:
Expand Down
Loading