Limitations

We are actively working on improvements. Community feedback and contributions are welcome! Check our GitHub Issues for more details.

1. Support for some Postgres types:

  • Enums
  • uhugeint
  • JSONB (A fix for this is in progress)
  • Arrays (not for all supported types yet)
  • Comparisons to literals in the queries are not supported for all data types yet. – There may be some loss in precision when dealing with Postgres numeric types.

2. Small Write Workloads

Current implementation creates a new Parquet file for each small write, which can be inefficient. Specific challenges include:

  • Each small write generates a separate Parquet file
  • No built-in mechanism for file optimization (Compaction & Vacuum)

Workaround run a no-op update query: UPDATE T set a=a, this will set your table to optimal state;

3. Indexes and Keys

Primary and Foreign Keys are not fully supported on ColumnStore tables. This is an area of active development.

4. DML Triggers

Support for DML (Data Manipulation Language) triggers is currently limited.

Trigger on postgres Heap table that writes to ColumnStore table is supported, but not vice versus. Track progress on GitHub Issue #18.

5. ALTER TABLE

You can't alter a columnstore table schema.

6. Partitioned Tables

pg_mooncake does not support partitioned tables #17.

However, partitioning is usually not required to get good performance for columnstore tables.

Data is naturally 'segmented' into data files and file skipping (segment elimination) is performed automatically at query time.

Want to help? Check our GitHub Issues to:

  • Create feature requests
  • Report bugs
  • Track ongoing improvements