Commit Graph

4275 Commits (4668fe51a661f05d9aefeb8288a8a9a15cf072f6)

Author SHA1 Message Date
Onur Tirtir 2cd0a69dfb
Fix multi-row & router INSERT crash with local exec. when def. cols not specified (#4197)
Multi-row & router INSERT's were crashing with local execution if at
least one of the DEFAULT columns were not specified in VALUES list.

This was because, the changes we make on query->values_lists and
query->targetList was sufficient for deparsing given INSERT for remote
execution but not sufficient for local execution.

With this commit, DEFAULT value normalization for multi-row & router
INSERT's is fixed by adding dummy column references for unspecified
DEFAULT columns.
2020-10-05 10:45:17 +03:00
Hanefi Onaldi ba88ed3f0b
Merge pull request #4207 from citusdata/no-worker-hash-in-insert-select 2020-10-02 18:27:36 +03:00
Hanefi Önaldı 6d8e83d24f
Replace worker_hash calls with partkey IS NOT NULL filters 2020-10-02 18:16:24 +03:00
Önder Kalacı df5aa0f0cc
Switch to sequential execution if the index name is long (#4209)
Citus has the logic to truncate the long shard names to prevent
various issues, including self-deadlocks. However, for partitioned
tables, when index is created on the parent table, the index names
on the partitions are auto-generated by Postgres. We use the same
Postgres function to generate the index names on the shards of the
partitions. If the length exceeds the limit, we switch to sequential
execution mode.
2020-10-02 13:39:34 +03:00
SaitTalhaNisanci 45bb0fb587
Do initial cleanup only once in pg_init (#4213)
In postmasters execution of _PG_init, IsUnderPostmaster will be false and
we want to do the cleanup at that time only, otherwise there is a chance that
there will be parallel queries and we might do a cleanup for things that are
already in use.
2020-10-02 09:12:39 +03:00
Ahmet Gedemenli 6a341b6ab8
Merge pull request #4196 from citusdata/support-explain-analyze-wal
Support EXPLAIN(ANALYZE, WAL)
2020-10-01 14:43:42 +03:00
Ahmet Gedemenli 70e9edb4f2 Add subplan test with insert 2020-10-01 13:58:55 +03:00
Jelte Fennema 13ef8252e7 Add broken distributed subplan test 2020-10-01 13:52:42 +03:00
Ahmet Gedemenli 3357eea46b Add regression tests for PG13 WAL 2020-10-01 13:52:42 +03:00
Ahmet Gedemenli d268aa7bc8 Support EXPLAIN(ANALYZE, WAL) 2020-10-01 13:52:42 +03:00
Önder Kalacı f3962fc7f6
Merge pull request #4199 from citusdata/terminate_connection
Forcefully terminate connections after citus.node_connection_timeout
2020-10-01 08:56:39 +02:00
Onder Kalaci 56ca256374 Forcefully terminate connections after citus.node_connection_timeout
After the connection timeout, we fail the session/pool. However, the
underlying connection can still be trying to connect. That is dangerous
because the new placement executions have already been in place. The
executor cannot handle the situation where multiple of
EXECUTION_ORDER_ANY task executions succeeds.

Adding a regression test doesn't seem easily doable. To reproduce the issue
- Add 2 worker nodes
- create a reference table
- set citus.node_connection_timeout to 1ms (requires code change)
- Continiously execute `SELECT count(*) FROM ref_table`
- Sometime later, you hit an out-of-array access in
  `ScheduleNextPlacementExecution()` hence crashing.
- The reason for that is sometimes the first connection
  successfully established while the executor is already
  trying to execute the query on the second node.
2020-09-30 18:24:24 +02:00
Hanefi Onaldi 2894002211
Merge pull request #4208 from citusdata/cleanup-pgoptions
Remove some pgoptions to prevent hitting bash command character limits
2020-09-30 17:04:27 +03:00
Hanefi Önaldı 9ec85f1283
Remove some pgoptions to prevent hitting bash command character limits 2020-09-30 15:04:40 +03:00
Onur Tirtir 3f8ac527c9
Merge pull request #4205 from citusdata/update-cl-941
Update CHANGELOG for 9.4.1
2020-09-30 10:47:45 +03:00
Onur Tirtir bc29238546 Update CHANGELOG for 9.4.1 2020-09-30 10:09:54 +03:00
Hanefi Onaldi 85d32bcf35
Merge pull request #4198 from citusdata/disallow-volatile-subquery-in-updates
Disallow volatile functions on single shard update subqueries
2020-09-29 16:27:13 +03:00
Hanefi Önaldı b0a2c1ee5c
Disallow volatile functions on single shard update queries
We currently do not support volatile functions in update/delete statements
because the function evaluation logic does not know how to distinguish
volatile functions (that need to be evaluated per row) from stable functions
(that need to be evaluated per query), and it is also not safe to push the
volatile functions down on replicated tables.
2020-09-29 15:40:21 +03:00
Marco Slot 12ecdea790
Merge pull request #4173 from citusdata/fix/create-index-concurrently-local 2020-09-29 10:15:40 +02:00
Hadi Moshayedi d37c717e14 Clean-up resources on drop 2020-09-28 22:49:24 -07:00
Hadi Moshayedi cf0ba6103e Associate metadata with rel filenode 2020-09-28 22:43:33 -07:00
Hadi Moshayedi 207eedc35a Merge pull request #16 from citusdata/analyze
Initial implementation of ANALYZE
2020-09-28 06:57:15 -07:00
Hadi Moshayedi ec1e277e8e Initial implementation of ANALYZE 2020-09-26 23:55:46 -07:00
Hadi Moshayedi d352a987fa Merge pull request #12 from citusdata/memcxt
reset memory context at end of execution
2020-09-26 23:37:09 -07:00
Hadi Moshayedi 5a077f2308 Remove the unused drop event trigger 2020-09-25 13:10:32 -07:00
Hadi Moshayedi 1d69519bd8 Delete autogenerated expected files 2020-09-25 13:03:34 -07:00
Marco Slot b905c8043d Fix create index concurrently crash with local execution 2020-09-25 11:49:09 +02:00
Ahmet Gedemenli e892e253b1
Merge pull request #4191 from citusdata/sort-explain-analyze-output-by-time
Sort explain analyze output by task time
2020-09-24 14:38:06 +03:00
Ahmet Gedemenli abfb79bda6 Sort explain analyze output by task time
Add sort method parameter for regression tests

Fix check-style

Change sorting method parameters to enum

Polish

Add task fields to OutTask

Add test into multi_explain

Fix isolation test
2020-09-24 11:38:40 +03:00
Jeff Davis 7714b60e5e reset memory context at end of execution 2020-09-23 22:53:49 -07:00
Hadi Moshayedi 398394056c Merge pull request #10 from citusdata/cleanup_metadata
Metadata simplification and some refactoring
2020-09-23 10:42:48 -07:00
Hadi Moshayedi a34cdeb83c Remove StripeFooter 2020-09-23 10:40:55 -07:00
Jeff Davis 1b45cfb52e remove generated sql test files 2020-09-23 09:53:32 -07:00
Hadi Moshayedi db5287069f Make block offsets relative to stripe start 2020-09-23 09:21:13 -07:00
Hadi Moshayedi bc585be3ed Save blockRowCount in StripeMetadata 2020-09-23 09:21:13 -07:00
jeff-davis be5a586843 Merge pull request #9 from citusdata/tableam
Tableam
2020-09-22 08:00:59 -07:00
Onur Tirtir 64d5ac6a10
Do not downgrade if a citus local table exists (#4174)
As the previous versions of Citus don't know how to handle citus local
tables, we should prevent downgrading from 9.5 to older versions if any
citus local tables exists.
2020-09-22 14:19:50 +03:00
Jeff Davis 8af9c91540 address review comments 2020-09-21 18:13:14 -07:00
SaitTalhaNisanci dba7e052df
Merge enterprise branch if it exists (#4181)
* Merge enterprise branch if it exists

We should merge the enterprise branch if it exists in the check
enterpise merge job, otherwise the following can happen:
- there is some change on community that breaks the compilation on
enterprise without creating any conflicts
- we fix the compilation issue by opening a branch on enterprise
- the job doesn't see the enterprise specific fix because it doesn't try
to merge enterprise branch if there are no conflicts

* Update ci/check_enterprise_merge.sh

Co-authored-by: Jelte Fennema <github-tech@jeltef.nl>

* Simplify the steps

Co-authored-by: Jelte Fennema <github-tech@jeltef.nl>
2020-09-21 19:31:10 +03:00
Önder Kalacı bc293d9d5e
Merge pull request #4167 from citusdata/metadata_improvements
Improve the robustness of function call delegation
2020-09-21 15:14:21 +02:00
Onder Kalaci 5d017cd123 Improve node matedata when coordinator is added
Coordinator should always be always active, hasmetadata and
metadasynced. Prevent changing those fields.
2020-09-21 14:53:41 +02:00
Onder Kalaci 6fc1dea85c Improve the robustness of function call delegation
Pushing down the CALLs to the node that the CALL is executed is
dangerous and could lead to infinite recursion.

When the coordinator added as worker, Citus was by chance preventing
this. The coordinator was marked as "not metadatasynced" node
in pg_dist_node, which prevented CALL/function delegation to happen.

With this commit, we do the following:

  - Fix metadatasynced column for the coordinator on pg_dist_node
  - Prevent pushdown of function/procedure to the same node that
    the function/procedure is being executed. Today, we do not sync
    pg_dist_object (e.g., distributed functions metadata) to the
    worker nodes. But, even if we do it now, the function call delegation
    would prevent the infinite recursion.
2020-09-21 14:53:30 +02:00
SaitTalhaNisanci e7cd1ed0ee
Not take ShareUpdateExlusiveLock on pg_dist_transaction (#4184)
* Not take ShareUpdateExlusiveLock on pg_dist_transaction

We were taking ShareUpdateExlusiveLock on pg_dist_transaction during
recovery to prevent multiple recoveries happening concurrenly. VACUUM(
not FULL) also takes ShareUpdateExclusiveLock, and they can conflict. It
seems that VACUUM will skip the table if there is a conflicting lock
already taken unless it is doing the vacuum to prevent id wraparound, in
which case there can be a deadlock. I guess the deadlock happens if:

- VACUUM takes a lock on pg_dist_transaction and is done for id
wraparound problem
- The transaction in the maintenance tries to take a lock but
cannot as that conflicts with the lock acquired by VACUUM
- The transaction in the maintenance daemon has a very old xid hence
VACUUM cannot proceed.

If we take a row exclusive lock in transaction recovery then it wouldn't
conflict with VACUUM hence it could proceed so the deadlock would be
resolved. To prevent concurrent transaction recoveries happening, an
advisory lock is taken with ShareUpdateExlusiveLock as before.

* Use CITUS_OPERATIONS tag
2020-09-21 15:20:38 +03:00
Jeff Davis c303f0f135 improve rel size estimate 2020-09-18 12:15:08 -07:00
Jeff Davis a05e75a6d1 fixup 2020-09-18 11:59:28 -07:00
Jeff Davis 06f1c96975 almost works 2020-09-18 11:37:39 -07:00
Onur Tirtir e69ee407e1
Merge pull request #4176 from citusdata/refactor/id_list_functions
Refactor the functions that return OID lists for citus tables
2020-09-18 20:49:05 +03:00
Jeff Davis 0f43534845 fixup guc 2020-09-18 09:26:20 -07:00
Jeff Davis fbe4728287 use GUCs 2020-09-18 09:19:41 -07:00
Jeff Davis 9f9bb64c4c fixup 2020-09-18 09:18:03 -07:00