Tell HN: Citus is 100% open source now

31 points by didip ↗ HN
https://github.com/citusdata/citus

I just realized this now, looks like Microsoft did it after they bought Citus? Good job!

Citus is a PostgreSQL extension that transforms Postgres into a distributed database.

    -- before adding the first worker node, tell future worker nodes how to reach the coordinator
    SELECT citus_set_coordinator_host('10.0.0.1', 5432);

    -- add worker nodes
    SELECT citus_add_node('10.0.0.2', 5432);
    SELECT citus_add_node('10.0.0.3', 5432);

    -- rebalance the shards over the new worker nodes
    SELECT rebalance_table_shards();
I am not affiliated with them, I just want to share this awesome OSS project.

9 comments

[ 3.1 ms ] story [ 37.6 ms ] thread
SELECT causing changes to things makes me feel weird inside.
That's how every Postgres extension works (e.g. Timescale, PostGIS, etc.)
Not just Postgres extensions, most of Postgres’ own administrative functions can be triggered in SELECT statements. e.g. pg_terminate_backend()

https://www.postgresql.org/docs/current/functions-admin.html

To be quite clear, that always felt weird to me as well - something to the effect of "I thought SELECT was for reading data; why am I using it to create a replica?"
SELECT is a bit like return?

return 6;

or

return x++;

or even

return (exit(0));

I think GP is saying they view SELECT as a "pure" function. A pure function doesn't modify state, so neither should SELECT.
Yeah, from limited experience with SQL "SELECT is safe" (assuming no weirdness in sub functions or commands) but that's clearly not always the case.

  DO $$ BEGIN
      PERFORM rebalance_table_shards();
  END $$;