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.