Commit Graph

2622 Commits (e5cd298a987fd4b1b0804e61de21863031bf2078)

Author SHA1 Message Date
Önder Kalacı e21578f3af
Merge pull request #2866 from citusdata/fix_83_regression
Do not record relation accessess unnecessarily
2019-08-08 18:47:58 +02:00
Onder Kalaci 060ac11476 Do not record relation accessess unnecessarily
Before this commit, we've recorded the relation accesses in 3 different
places
    - FindPlacementListConnection         -- applies all executor in tx block
    - StartPlacementExecutionOnSession()  -- adaptive executor only
    - StartPlacementListConnection()      -- router/real-time only

This is different than Citus 8.2, and could lead to query execution times
increase considerably on multi-shard commands in transaction block
that are on partitioned tables.

Benchmarks:

```
1+8 c5.4xlarge cluster

Empty distributed partitioned table with 365 partitions: https://gist.github.com/onderkalaci/1edace4ed6bd6f061c8a15594865bb51#file-partitions_365-sql

./pgbench -f /tmp/multi_shard.sql -c10 -j10 -P 1 -T 120 postgres://citus:w3r6KLJpv3mxe9E-NIUeJw@c.fy5fkjcv45vcepaogqcaskmmkee.db.citusdata.com:5432/citus?sslmode=require

cat  /tmp/multi_shard.sql
BEGIN;
	DELETE FROM collections_list;
	DELETE FROM collections_list;
	DELETE FROM collections_list;
COMMIT;
cat  /tmp/single_shard.sql
BEGIN;
	DELETE FROM collections_list WHERE key = :aid;
	DELETE FROM collections_list WHERE key = :aid;
	DELETE FROM collections_list WHERE key = :aid;
COMMIT;

cat  /tmp/mix.sql
BEGIN;
	DELETE FROM collections_list WHERE key = :aid;
	DELETE FROM collections_list WHERE key = :aid;
	DELETE FROM collections_list WHERE key = :aid;

	DELETE FROM collections_list;
	DELETE FROM collections_list;
	DELETE FROM collections_list;
COMMIT;
```

The table shows `latency average` of pgbench runs explained above, so we have a pretty solid improvement even over 8.2.2.

| Test  | Citus 8.2.2  |  Citus 8.3.1   | Citus 8.3.2 (this branch)  | Citus 8.3.1 (FKEYs disabled via GUC)  |
| ------------- | ------------- | ------------- |------------- | ------------- |
|multi_shard |  2370.083 ms  |3605.040 ms |1324.094 ms |1247.255 ms  |
| single_shard  | 85.338 ms  |120.934 ms  |73.216 ms  | 78.765 ms |
| mix  | 2434.459 ms | 3727.080 ms  |1306.456 ms  | 1280.326 ms |
2019-08-08 18:42:08 +02:00
Onder Kalaci 35ee896f3d Get rid of an unnecessary parameter
targetPoolSize parameter for ExecuteUtilityTaskListWithoutResults
becomes obsolete, just remove it.
2019-08-07 19:35:56 +02:00
Onder Kalaci b2e01d0745 Refactor switching to sequential mode
We don't need to wait until the execution. As soon as we realize
that we need sequential execution, we should do it.
2019-08-07 19:35:56 +02:00
Hanefi Onaldi 263faffb27
Update CONTRIBUTING.md (#2865)
* Update dependency versions
* Add libcurl and autoconf to required dependencies
* Add Clang/LLVM instructions for CentOS/RHEL setup
2019-08-06 17:52:44 +03:00
Hadi Moshayedi f9efb21f1b
Merge pull request #2863 from citusdata/fix_typo
Fix a typo in foreign_key_restriction_enforcement
2019-08-02 16:13:43 -07:00
Hadi Moshayedi b1ab805ce2 Fix a typo in foreign_key_restriction_enforcement 2019-08-02 16:06:52 -07:00
Hadi Moshayedi a1a7d95c0a
Merge pull request #2861 from citusdata/less_polymorphic_plan_router_query
PlanRouterQuery: don't store list of list of shard intervals in relationShardList
2019-08-02 09:16:09 -07:00
Philip Dubé b77c52f95b PlanRouterQuery: don't store list of list of shard intervals in relationShardList 2019-08-02 14:08:57 +00:00
Philip Dubé 9b4ba2f5b2
Merge pull request #2858 from citusdata/multi_modifications_bug
Use 2PC in adaptive executor when dealing with replication factors above 1
2019-08-02 00:20:22 +00:00
Philip Dubé fdc0ef6392 Adaptive executor: use 2PC when replication_factor > 1 2019-08-01 23:55:12 +00:00
Philip Dubé 19bcb1b4f7 multi_modifications: extend to demonstrate issue in adaptive executor 2019-08-01 23:55:04 +00:00
Hadi Moshayedi b81d5947e4
Merge pull request #2859 from citusdata/no_null_percent_s
Avoid segfault in logging queries
2019-08-01 09:36:52 -07:00
Philip Dubé 064bd66a20 Avoid segfault in logging queries 2019-07-31 15:28:46 +00:00
Hanefi Onaldi e88cb8335f
Update Changelog for v8.3.1 2019-07-29 13:10:28 +03:00
Philip Dubé dc67fa36c6
Merge pull request #2854 from citusdata/compare_shard_intervals_id_tie_breaker
CompareShardIntervals: if intervals are equal, compare id
2019-07-26 16:27:35 +00:00
Philip Dubé 3982b4635f CompareShardIntervals: if intervals are equal, compare id. Works around sort being unstable 2019-07-26 16:13:36 +00:00
Philip Dubé 6f1a8dfdbe
Merge pull request #2852 from citusdata/update_tests_colocation_utils_copy
Update two tests, useful fallout from pg12 branch
2019-07-25 17:36:16 +00:00
Marco Slot c471d9680c
Merge pull request #2848 from citusdata/adaptive_executor_tuning
Adaptive executor performance improvements
2019-07-25 16:52:36 +02:00
Philip Dubé 0e233c63a3 multi_colocation_utils: sort by nodeport, not placementid
multi_copy: replace smgr with aclitem, smgr is removed in pg12
2019-07-25 14:33:43 +00:00
Hadi Moshayedi cd2905ec23
Merge pull request #2845 from citusdata/squash_migrations_56
Squash migrations for versions 5/6, don't use WITH OIDS
2019-07-24 11:10:15 -07:00
Philip Dubé 50144b75d0 Add check-empty to testing Makefile
Don't create functions multiple times
Move ALTER TABLEs to their declaration
Remove DROP FUNCTIONS IF EXISTS, OR REPLACE
2019-07-24 11:03:54 -07:00
Philip Dubé acbaa38a62 Squash migrations for versions 5/6, don't use WITH OIDS 2019-07-24 11:03:29 -07:00
Philip Dubé 3e6f3e4f3b
Merge pull request #2849 from citusdata/sort-list-is-not-in-place
Update workerNodeList after sorting
2019-07-23 21:04:22 +00:00
Hanefi Onaldi 8127297999 update workerNodeList after sorting 2019-07-23 20:57:07 +00:00
Philip Dubé 6c5866cc4d
Merge pull request #2850 from citusdata/fix_a_couple_shardid_tests
Fix multi_prune_shard_list
2019-07-23 20:19:55 +00:00
Philip Dubé 6598c68993 Fix multi_prune_shard_list & don't set next_shard_id unnecessarily in multi_null_minmax_value_pruning 2019-07-23 19:44:18 +00:00
Marco Slot e2bc09838e Use ereport instead of elog in adaptive executor 2019-07-23 20:40:32 +02:00
Marco Slot bd111366b0 Skip CheckConnectionTimeout when checkForPoolTimeout is false 2019-07-23 20:40:32 +02:00
Marco Slot a3811b1e55 Avoid FindWorkerNode calls in adaptive executor 2019-07-23 20:40:32 +02:00
Marco Slot 4444d92dbc Set initial pool size to cached connection count 2019-07-23 20:40:32 +02:00
Marco Slot 4c0c33365e Avoid creating a redundant event set at the start 2019-07-23 20:40:32 +02:00
Marco Slot 32e7a80960 Avoid unnecessary calls to PQconsumeInput 2019-07-23 20:40:32 +02:00
Marco Slot 71ad5c095b Use ModifyWaitEvent when only wait flags changed 2019-07-23 20:40:32 +02:00
Marco Slot efbe58eab2 Fix SQL schema version, we skipped 8.3 2019-07-17 16:05:25 +02:00
Hadi Moshayedi 86b30ee094
Merge pull request #2807 from citusdata/2776_preparation
DistributedPlan: replace operation with modLevel
2019-07-16 14:04:10 -07:00
Philip Dubé 0915027389 DistributedPlan: replace operation with modLevel
This causes no behaviorial changes, only organizes better to implement modifying CTEs

Also rename ExtactInsertRangeTableEntry to ExtractResultRelationRTE,
as the source of this function didn't match the documentation

Remove Task's upsertQuery in favor of ROW_MODIFY_NONCOMMUTATIVE

Split up AcquireExecutorShardLock into more internal functions

Tests: Normalize multi_reference_table multi_create_table_constraints
2019-07-16 13:58:18 -07:00
Hanefi Onaldi 0bdec52761
Fix default_version in citus.control file (#2840) 2019-07-11 14:24:51 +03:00
Hadi Moshayedi e3ab6388c1
Merge pull request #2838 from citusdata/normalize_sql_procedure_and_custom_aggregate_support
Tests: normalize sql_procedure and custom_aggregate_support
2019-07-10 16:21:39 -07:00
Philip Dubé befd0caddd Tests: normalize sql_procedure and custom_aggregate_support
Also fix typo in multi_insert_select
2019-07-10 14:36:17 +00:00
Hanefi Onaldi 5a6eba6ba9
Bump Citus to 8.4devel 2019-07-10 15:26:10 +03:00
Hanefi Onaldi fbfc0660d2
Bump citus to 8.3.0
Add changelog entry for 8.3.0
2019-07-10 14:49:11 +03:00
Nils Dijk 3d815f240c
Merge pull request #2831 from citusdata/tests/multi-user-manual-automation
Fix an issue with subquery map merge jobs as non-root
2019-07-10 12:48:23 +02:00
Nils Dijk 791cc26a86
Fix an issue with subquery map merge jobs as non-root
Also automated all manual tests around multi user isolation for internal citus udf's

automate upgrade_to_reference_table tests
add negative tests for lock_relation_if_exists
add tests for permissions on worker_cleanup_job_schema_cache
add tests for worker_fetch_partition_file
add tests for worker_merge_files_into_table
fix problem with worker_merge_files_and_run_query when run as non-super user and add tests for behaviour
2019-07-10 12:40:05 +02:00
Marco Slot 9453645860
Merge pull request #2833 from citusdata/fix_relation_shard_list
Don't modify cache entry in RelationShardListForShardCreate()
2019-07-10 09:37:00 +02:00
Hadi Moshayedi 46608e42f9 Add hyperscale tutorial to the regression tests. 2019-07-10 10:47:55 +02:00
Hadi Moshayedi 91d8a41ecd Don't modify cache entry in RelationShardListForShardCreate() 2019-07-09 12:44:48 -07:00
Marco Slot 70434bc716 Increase slow start time in test to make valgrind tests pass 2019-07-08 06:04:13 +02:00
Marco Slot b09ee85408
Merge pull request #2825 from citusdata/fix_set
Fix crash in RESET and make it behave properly
2019-07-05 23:25:00 +02:00
Hadi Moshayedi 032167c553 Fix Assert() in ProcessVariableSetStmt() 2019-07-05 14:11:22 -07:00