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 |