Commit Graph

660 Commits (e55a27a487ab3ea701ef12fcb1ebb63941a10e66)

Author SHA1 Message Date
Marco Slot e55a27a487 Enable transaction recovery in connection API 2016-12-23 16:14:29 +01:00
Marco Slot 06e3eff3d2 Convert worker_transactions to new connection API 2016-12-23 16:14:29 +01:00
Marco Slot 6ea2cb7c8e Add a wrapper for PQsendQuery 2016-12-23 16:14:29 +01:00
Marco Slot b9cc1d4d2c Connectionapify SendCommandListToWorkerInSingleTransaction 2016-12-23 16:14:29 +01:00
Burak Yücesoy cedc4b6ce9 Merge pull request #1062 from citusdata/grant_public_select_access_to_metadata_tables
GRANT SELECT access for metadata tables to public
2016-12-23 16:43:15 +03:00
Burak Yucesoy 4c8da43617 GRANT SELECT access for metadata tables to public
Previously, we errored out if non-user tries to SELECT query for some metadata tables. It
seems that we already GRANT SELECT access to some metadata tables but not others. With
this change, we GRANT SELECT access to all existing Citus metadata tables.
2016-12-23 16:32:47 +03:00
Eren Başak 8bd5229c8c Merge pull request #1045 from citusdata/propagate_mx_metadata_changes
Propagate MX Metadata Changes
2016-12-23 14:58:49 +02:00
Eren Basak 93bc2c6c12 Handle MX tables on workers during drop table commands 2016-12-23 15:43:32 +03:00
Eren Basak bdf732d115 Propagate `mark_tables_colocated` changes in `pg_dist_partition` table to metadata workers. 2016-12-23 15:43:32 +03:00
Eren Basak 9876e253b7 Propagate DDL commands to metadata workers for MX tables 2016-12-23 15:43:32 +03:00
Eren Basak 3d9540e500 Propagate MX table and shard metadata on `create_distributed_table` call 2016-12-23 15:43:32 +03:00
Eren Basak 54c2de697c Rename multi_metadata_snapshot to multi_metadata_sync to make it include future mx metadata syncing regression tests 2016-12-23 15:43:32 +03:00
Eren Basak 02e44745ec Mark hash distributed tables with replication factor = 1 as streaming replicated tables (repmodel=s).
This works only with `create_distributed_table` call.
2016-12-23 15:43:31 +03:00
Marco Slot 8debcca017 Merge pull request #1010 from citusdata/feature/insert_select_functions
Evaluate functions in INSERT..SELECT
2016-12-23 13:24:21 +01:00
Marco Slot 9cdea04466 Enable evaluation of stable functions in INSERT..SELECT 2016-12-23 12:47:21 +01:00
Marco Slot f058ba3ec0 Add explicit RelationShards mapping to tasks 2016-12-23 10:23:43 +01:00
Marco Slot 3520121e92 Merge pull request #1056 from citusdata/feature/mx_locks
Add shard locking UDFs
2016-12-22 11:20:43 +01:00
Marco Slot 483648a4a4 Add shard locking UDFs 2016-12-22 11:04:34 +01:00
Burak Yücesoy f0e9f132c8 Add get_distribution_value_shardid UDF (#1048)
* Add get_distribution_value_shardid UDF

With this UDF users can now map given distribution value to shard id. We mostly hide
shardids from users to prevent unnecessary complexity but some power users might need
to know about which entry/value is stored in which shard for maintanence purposes.

Signature of this UDF is as follows;

bigint get_distribution_value_shardid(table_name regclass, distribution_value anyelement)
2016-12-22 12:17:08 +03:00
Eren Başak 4cbf4df01a Merge pull request #1055 from citusdata/ignore_multi_outer_join_reference_outputs
Make git ignore multi_outer_join_reference test outputs
2016-12-21 15:11:29 +02:00
Eren Basak cff5ed552c Make git ignore multi_outer_join_reference test outputs 2016-12-21 15:58:22 +03:00
Önder Kalacı 6b5ca72db6 Merge pull request #1018 from citusdata/reference_table_base
Reference table Phase-1
2016-12-20 14:15:20 +02:00
Onder Kalaci e0ef4b2f08 Improve regression tests for multi_colocated_shard_transfer
Ensure that regression tests outputs are consistent
for multi_colocated_shard_transfer.
2016-12-20 14:09:35 +02:00
Onder Kalaci 807fc1cc28 Reference Table Support - Phase 1
With this commit, we implemented some basic features of reference tables.

To start with, a reference table is
  * a distributed table whithout a distribution column defined on it
  * the distributed table is single sharded
  * and the shard is replicated to all nodes

Reference tables follows the same code-path with a single sharded
tables. Thus, broadcast JOINs are applicable to reference tables.
But, since the table is replicated to all nodes, table fetching is
not required any more.

Reference tables support the uniqueness constraints for any column.

Reference tables can be used in INSERT INTO .. SELECT queries with
the following rules:
  * If a reference table is in the SELECT part of the query, it is
    safe join with another reference table and/or hash partitioned
    tables.
  * If a reference table is in the INSERT part of the query, all
    other participating tables should be reference tables.

Reference tables follow the regular co-location structure. Since
all reference tables are single sharded and replicated to all nodes,
they are always co-located with each other.

Queries involving only reference tables always follows router planner
and executor.

Reference tables can have composite typed columns and there is no need
to create/define the necessary support functions.

All modification queries, master_* UDFs, EXPLAIN, DDLs, TRUNCATE,
sequences, transactions, COPY, schema support works on reference
tables as expected. Plus, all the pre-requisites associated with
distribution columns are dismissed.
2016-12-20 14:09:35 +02:00
Eren Başak ca35163648 Merge pull request #912 from citusdata/add_timeout_guc
Add citus.node_connection_timeout GUC
2016-12-20 13:33:54 +02:00
Eren Basak 5eb90d6d93 Add citus.node_connection_timeout GUC 2016-12-20 14:11:37 +03:00
Marco Slot 7a39282597 Merge pull request #1049 from citusdata/bugfix/schema_owner
Fix permissions for multi-user re-partition queries
2016-12-20 11:22:59 +01:00
Marco Slot c772dcd32e Run copy commands in worker_merge_files_into_table as superuser 2016-12-20 10:15:42 +01:00
Marco Slot 2ebd92de0a Set user as pg_merge_job_* schema owner 2016-12-20 10:15:42 +01:00
Murat Tuncer 43d9aa0305 Merge pull request #1027 from citusdata/feature/930_keep_router_planner_active_at_all_times
Make router planner active at all times
2016-12-20 10:56:13 +02:00
Murat Tuncer 6c95f0352e Make router planner active at all times
We used to disable router planner and executor
when task executor is set to task-tracker.

This change enables router planning and execution
at all times regardless of task execution mode.

We are introducing a hidden flag enable_router_execution
to enable/disable router execution. Its default value is
true. User may disable router planning by setting it to false.
2016-12-20 11:24:01 +03:00
Jason Petersen 54c2efccc1 Add targeted VACUUM/ANALYZE support
Adds support for VACUUM and ANALYZE commands which target a specific
distributed table. After grabbing the appropriate locks, this imple-
mentation sends VACUUM commands to each placement (using one connec-
tion per placement). These commands are sent in parallel, so users
with large tables will benefit from sharding. Except for VERBOSE, all
VACUUM and ANALYZE options are supported, including the explicit
column list used by ANALYZE.

As with many of our utility commands, the local command also runs. In
the VACUUM/ANALYZE case, the local command is executed before any re-
mote propagation. Because error handling is managed after local proc-
essing, this can result in a VACUUM completing locally but erroring
out when distributed processing commences: a minor technicality in all
cases, as there isn't really much reason to ever roll back a VACUUM (an
impossibility in any case, as VACUUM cannot run within a transaction).

Remote propagation of targeted VACUUM/ANALYZE is controlled by the
enable_ddl_propagation setting; warnings are emitted if such a command
is attempted when DDL propagation is disabled. Unqualified VACUUM or
ANALYZE is not handled, but a warning message informs the user of this.

Implementation note: this commit adds a "BARE" value to MultiShard-
CommitProtocol. When active, no BEGIN command is ever sent to remote
nodes, useful for commands such as VACUUM/ANALYZE which must not run in
a transaction block. This value is not user-facing and is reset at
transaction end.
2016-12-16 16:59:06 -07:00
Metin Döşlü 54f18a1c88 Merge pull request #1046 from citusdata/feature/colocate_with
Add colocate_with option to create_distributed_table()
2016-12-16 14:33:22 +02:00
Metin Doslu fc908a3ab6 Refactor distribution column type check for colocation 2016-12-16 15:24:45 +02:00
Metin Doslu d43a01ebae Don't allow tables with different replication models to be colocated 2016-12-16 15:23:49 +02:00
Metin Doslu 4ff550429f Add colocate_with option to create_distributed_table()
With this commit, we support three versions of colocate_with: i.default, ii.none
and iii. a specific table name.
2016-12-16 14:53:35 +02:00
Metin Doslu 15aeac0502 Move colocation related functions to colocation_utils.c 2016-12-16 14:52:40 +02:00
Marco Slot 130b9ccd3a Merge pull request #1042 from citusdata/feature/column_name
Expose the column_to_column_name UDF
2016-12-16 11:40:29 +01:00
Marco Slot d733bfa044 Expose the column_to_column_name UDF to make partkey in pg_dist_partition human-readable 2016-12-14 10:46:33 +01:00
Eren Başak 8dbb523377 Merge pull request #997 from citusdata/add_sync_metadata_to_node
Add sync_metadata_to_node UDF
2016-12-14 10:06:17 +02:00
Eren Basak 7a9f9af9ea Add stop_metadata_sync_to_node UDF 2016-12-14 10:53:12 +03:00
Eren Basak 59b95a958d Propagate CREATE SCHEMA commands with the correct AUTHORIZATION clause in start_metadata_sync_to_node 2016-12-14 10:53:12 +03:00
Eren Basak 72e5e826b8 Make start_metadata_sync_to_node UDF to propagate foreign-key constraints 2016-12-14 10:53:12 +03:00
Eren Basak eea27619a0 Make truncate triggers propagated on start_metadata_sync_to_node call 2016-12-14 10:53:10 +03:00
Eren Basak 9b6d33f5b4 Prevent Transactions in start_metadata_sync_to_node 2016-12-13 10:48:03 +03:00
Eren Basak 1b812ec3b1 Add Regression Tests For start_metadata_sync_to_node 2016-12-13 10:48:03 +03:00
Eren Basak 9c415d4f34 Add start_metadata_sync_to_node UDF
This change adds `start_metadata_sync_to_node` UDF which copies the metadata about nodes and MX tables
from master to the specified worker, sets its local group ID and marks its hasmetadata to true to
allow it receive future DDL changes.
2016-12-13 10:48:03 +03:00
Andres Freund 6e4443b555 Merge pull request #835 from citusdata/valgrind-support
Allow to run regression tests under valgrind
2016-12-12 16:34:58 -08:00
Andres Freund bed853664e Add support for running regression tests under valgrind.
Note that this only provides infrastructure for running tests under
valgrind - there's some spurious failures due to timeouts.
2016-12-12 15:42:11 -08:00
Andres Freund d4463e9d2c Merge pull request #1020 from citusdata/feature/transaction-management
Centralized Transaction Management Infrastructure
2016-12-12 15:27:27 -08:00