mirror of https://github.com/citusdata/citus.git
With this PR, we allow creating distributed tables with without specifying a shard key via create_distributed_table(). Here are the the important details about those tables: * Specifying `shard_count` is not allowed because it is assumed to be 1. * We mostly call such tables as "null shard-key" table in code / comments. * To avoid doing a breaking layout change in create_distributed_table(); instead of throwing an error, it will inform the user that `distribution_type` param is ignored unless it's explicitly set to NULL or 'h'. * `colocate_with` param allows colocating such null shard-key tables to each other. * We define this table type, i.e., NULL_SHARD_KEY_TABLE, as a subclass of DISTRIBUTED_TABLE because we mostly want to treat them as distributed tables in terms of SQL / DDL / operation support. * Metadata for such tables look like: - distribution method => DISTRIBUTE_BY_NONE - replication model => REPLICATION_MODEL_STREAMING - colocation id => **!=** INVALID_COLOCATION_ID (distinguishes from Citus local tables) * We assign colocation groups for such tables to different nodes in a round-robin fashion based on the modulo of "colocation id". Note that this PR doesn't care about DDL (except CREATE TABLE) / SQL / operation (i.e., Citus UDFs) support for such tables but adds a preliminary API. |
||
|---|---|---|
| .. | ||
| cdc | ||
| clock | ||
| commands | ||
| connection | ||
| deparser | ||
| executor | ||
| metadata | ||
| operations | ||
| planner | ||
| progress | ||
| relay | ||
| replication | ||
| shardsplit | ||
| sql | ||
| test | ||
| transaction | ||
| utils | ||
| worker | ||
| .gitignore | ||
| Makefile | ||
| citus--11.1-1.control | ||
| citus.control | ||
| safeclib | ||
| shared_library_init.c | ||