DuckDB Clickhouse System Table emulator for chsql

January 4, 2025 · View on GitHub

DuckDB Clickhouse System Table emulator for chsql

This project loosely emulates ClickHouse system tables within DuckDB for client compatibility

The chsql_system extension provides a subset of system functions:

Table Views

  • system.databases
  • system.tables
  • system.columns
  • system.functions
  • system.uptime
  • system.disks

Scalar

  • uptime()

Installation

coming soon

Usage

D -- List all databases in scope
D SELECT * FROM system.databases;
┌─────────┬─────────┬───────────┬───────────────┬──────────────────────────────────────┬─────────────┬─────────┐
name   │ engine  │ data_path │ metadata_path │                 uuid                 │ engine_full │ comment │
varcharvarcharvarcharvarchar    │                 uuid                 │   varcharvarchar
├─────────┼─────────┼───────────┼───────────────┼──────────────────────────────────────┼─────────────┼─────────┤
│ memory  │ duckdb  │ NULL      │               │ 80000000-0000-0000-0000-000000000000 │ DuckDB      │ NULL
│ test    │ duckdb  │ test.db   │               │ 80000000-0000-0000-0000-000000000000 │ DuckDB      │ NULL
system  │ duckdb  │ NULL      │               │ 80000000-0000-0000-0000-000000000000 │ DuckDB      │ NULL
│ temp    │ duckdb  │ NULL      │               │ 80000000-0000-0000-0000-000000000000 │ DuckDB      │ NULL
└─────────┴─────────┴───────────┴───────────────┴──────────────────────────────────────┴─────────────┴─────────┘

D -- List all tables in scope
D SELECT * FROM system.tables;
┌──────────┬──────────────┬──────────────────────────────────────┬────────────┬──────────────┬───────────┬───────────────┬────────────────────────────┬──────────────────┬────────────────────────────────────────┐
databasename     │                 uuid                 │   engine   │ is_temporary │ data_path │ metadata_path │ metadata_modification_time │ metadata_version │           create_table_query           │
varcharvarchar    │                 uuid                 │  varcharbooleanvarcharvarchartimestamp          │      int32       │                varchar
├──────────┼──────────────┼──────────────────────────────────────┼────────────┼──────────────┼───────────┼───────────────┼────────────────────────────┼──────────────────┼────────────────────────────────────────┤
│ test     │ remote_table │ 80000000-0000-0000-0000-000000000000 │ BASE TABLE │ false        │           │               │ 1970-01-01 00:00:000CREATE TABLE remote_table(id INTEGER); │
└──────────┴──────────────┴──────────────────────────────────────┴────────────┴──────────────┴───────────┴───────────────┴────────────────────────────┴──────────────────┴────────────────────────────────────────┘
 
D -- List all columns in scope
D SELECT * FROM system.columns;
┌──────────┬───────────┬────────────────────────────┬───────────┬──────────┬─────────┐
databasetablenametype    │ position │ comment │
varcharvarcharvarcharvarchar  │  int32   │ varchar
├──────────┼───────────┼────────────────────────────┼───────────┼──────────┼─────────┤
│ memory   │ columns   │ databaseVARCHAR0 │         │
│ memory   │ columns   │ tableVARCHAR1 │         │
│ memory   │ columns   │ nameVARCHAR2 │         │
│ memory   │ columns   │ typeVARCHAR3 │         │
│ memory   │ columns   │ position                   │ INTEGER4 │         │
│ memory   │ columns   │ comment                    │ VARCHAR5 │         │
│ memory   │ databases │ nameVARCHAR0 │         │
│ memory   │ databases │ engine                     │ VARCHAR1 │         │
│ memory   │ databases │ data_path                  │ VARCHAR2 │         │
│ memory   │ databases │ metadata_path              │ VARCHAR3 │         │
│ memory   │ databases │ uuid                       │ UUID      │        4 │         │
│ memory   │ databases │ engine_full                │ VARCHAR5 │         │
│ memory   │ databases │ comment                    │ VARCHAR6 │         │
│ memory   │ functions │ nameVARCHAR0 │         │
│ memory   │ functions │ is_aggregate               │ BOOLEAN1 │         │
│ memory   │ functions │ case_insensitive           │ BOOLEAN2 │         │
│ memory   │ functions │ descriptionVARCHAR3 │         │
│ memory   │ tables    │ databaseVARCHAR0 │         │
│ memory   │ tables    │ nameVARCHAR1 │         │
│ memory   │ tables    │ uuid                       │ UUID      │        2 │         │
│ memory   │ tables    │ engine                     │ VARCHAR3 │         │
│ memory   │ tables    │ is_temporary               │ BOOLEAN4 │         │
│ memory   │ tables    │ data_path                  │ VARCHAR5 │         │
│ memory   │ tables    │ metadata_path              │ VARCHAR6 │         │
│ memory   │ tables    │ metadata_modification_time │ TIMESTAMP7 │         │
│ memory   │ tables    │ metadata_version           │ INTEGER8 │         │
│ memory   │ tables    │ create_table_query         │ VARCHAR9 │         │
├──────────┴───────────┴────────────────────────────┴───────────┴──────────┴─────────┤
27 rows                                                                  6 columns │
└────────────────────────────────────────────────────────────────────────────────────┘

 
D -- List all functions in scope
D SELECT * FROM system.functions;
┌──────────────────────────────────────────┬──────────────┬──────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
name                   │ is_aggregate │ case_insensitive │                                                                   description
varcharbooleanbooleanvarchar
├──────────────────────────────────────────┼──────────────┼──────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ test_all_types                           │ false        │ false            │ NULL
│ pragma_version                           │ false        │ false            │ NULL
│ duckdb_sequences                         │ false        │ false            │ NULL
│ duckdb_functions                         │ false        │ false            │ NULL
│ duckdb_extensions                        │ false        │ false            │ NULL
│ duckdb_constraints                       │ false        │ false            │ NULL
│ system_columns                           │ false        │ false            │ NULL                                                                                                                                            │                         │
│  ·                                       │   ·          │   ·              │  ·                                                                                                                                              │
│  ·                                       │   ·          │   ·              │  ·                                                                                                                                              │
│  ·                                       │   ·          │   ·              │  ·                                                                                                                                              │
format_type                              │ false        │ false            │ NULL
│ has_column_privilege                     │ false        │ false            │ NULL
│ inet_client_port                         │ false        │ false            │ NULL
├──────────────────────────────────────────┴──────────────┴──────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
692 rows (40 shown)                                                                                                                                                                                                4 columns │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

D -- List all attached databases and blocks as disks
D SELECT * FROM system.disks;
┌──────────┬──────────────┬────────────┬─────────────┬──────────────────┬─────────────────┬─────────┬─────────────────────┬───────────────┬──────────────┬──────────────┬───────────────┬───────────┬───────────┬────────────┐
namepath     │ free_space │ total_space │ unreserved_space │ keep_free_space │  type   │ object_storage_type │ metadata_type │ is_encrypted │ is_read_only │ is_write_once │ is_remote │ is_broken │ cache_path │
varcharvarchar    │   int64    │    int64    │      int64       │      int64      │ varcharvarcharvarcharbooleanbooleanbooleanbooleanbooleanvarchar
├──────────┼──────────────┼────────────┼─────────────┼──────────────────┼─────────────────┼─────────┼─────────────────────┼───────────────┼──────────────┼──────────────┼───────────────┼───────────┼───────────┼────────────┤
│ localdb  │ test.db026214400LocalNoneNone          │ false        │ false        │ false         │ false     │ false     │            │
│ memory   │ NULL0000LocalNoneNone          │ false        │ false        │ false         │ false     │ false     │            │
│ testduck │ /tmp/duck.db2621447864322621440LocalNoneNone          │ false        │ false        │ false         │ false     │ false     │            │
└──────────┴──────────────┴────────────┴─────────────┴──────────────────┴─────────────────┴─────────┴─────────────────────┴───────────────┴──────────────┴──────────────┴───────────────┴───────────┴───────────┴────────────┘

Note

Don't use this unless you need ClickHouse client compatibility. Rely on pure DuckDB functions to build your applications.