Requested Features
- Improve query cost estimation
- Improve write performance
- Improve read performance
- Improve memory usage
- Add checksum logic
- Add new compression methods
- Enable ALTER FOREIGN TABLE ADD COLUMN
- Enable ALTER FOREIGN TABLE DROP COLUMN
- Enable users other than superuser to safely create columnar tables (permissions)
- Transactional semantics
- Add config setting to make pg_fsync() optional
Known Issues
- Reading from an empty table currently errors out. It should return a table with
no rows.
- Copy command ignores NOT NULL constraints.
- Planning functions don't take into account average column width.
- Planning functions don't correctly take into account block skipping benefits.
- On 32-bit platforms, when file size is outside the 32-bit signed range, EXPLAIN
command prints incorrect file size.
- If two different columnar tables are configured to point to the same file,
writes to the underlying file aren't protected from each other.
- Hstore and json types work. However, constructors for hstore and json types
applied on a tuple return NULL.
- When a data load is in progress, concurrent reads on the table overestimate the
page count.
- We have a minor memory leak in CStoreEndWrite. We need to also free the
comparisonFunctionArray.
- block_filtering test fails on Ubuntu because the "da_DK" locale is not enabled
by default.
- We don't yet incorporate the compression method's impact on disk I/O into cost
estimates.
- During CREATE FOREIGN TABLE, we don't check if we have access to the given
filename's directory path.
- If CitusDB applies a broadcast table join, and if the columnar table is one of
the smaller tables, we error out.