Commit Graph

645 Commits (368e4dbb745603d14d67cd2fc4b4899e930274fe)

Author SHA1 Message Date
Burak Velioglu 368e4dbb74
Move truncate trigger 2022-01-22 23:51:23 +03:00
Burak Velioglu bee36628a1
Use GetFullTableCreationCommands 2022-01-22 22:47:53 +03:00
Burak Velioglu ccea041d6a
Address reviews 2022-01-21 17:52:41 +03:00
Burak Velioglu 8a5c8c449f
Address reviews 2022-01-21 12:54:18 +03:00
Burak Velioglu 3bb1a1fe6c
Merge branch 'master' into velioglu/table_wo_seq_prototype 2022-01-21 01:09:20 +03:00
Onur Tirtir 181111b84f Drop ruleutils copied for statistics 2022-01-20 17:28:19 +03:00
Onur Tirtir 7b59295af2 Drop ruleutils copied for triggers 2022-01-20 17:28:19 +03:00
Burak Velioglu da3a0f4cdd
Combine metadata logic 2022-01-20 17:03:50 +03:00
Teja Mupparti 54862f8c22 (1) Functions will be delegated even when present in the scope of an explicit
BEGIN/COMMIT transaction block or in a UDF calling another UDF.
(2) Prohibit/Limit the delegated function not to do a 2PC (or any work on a
remote connection).
(3) Have a safety net to ensure the (2) i.e. we should block the connections
from the delegated procedure or make sure that no 2PC happens on the node.
(4) Such delegated functions are restricted to use only the distributed argument
value.

Note: To limit the scope of the project we are considering only Functions(not
procedures) for the initial work.

DESCRIPTION: Introduce a new flag "force_delegation" in create_distributed_function(),
which will allow a function to be delegated in an explicit transaction block.

Fixes #3265

Once the function is delegated to the worker, on that node during the planning

distributed_planner()
TryToDelegateFunctionCall()
CheckDelegatedFunctionExecution()
EnableInForceDelegatedFuncExecution()
Save the distribution argument (Constant)
ExecutorStart()
CitusBeginScan()
IsShardKeyValueAllowed()
Ensure to not use non-distribution argument.

ExecutorRun()
AdaptiveExecutor()
StartDistributedExecution()
EnsureNoRemoteExecutionFromWorkers()
Ensure all the shards are local to the node in the remoteTaskList.
NonPushableInsertSelectExecScan()
InitializeCopyShardState()
EnsureNoRemoteExecutionFromWorkers()
Ensure all the shards are local to the node in the placementList.

This also fixes a minor issue: Properly handle expressions+parameters in distribution arguments
2022-01-19 16:43:33 -08:00
Burak Velioglu f509cd6660
Revert it back 2022-01-20 00:02:14 +03:00
Burak Velioglu fc36de02ba
Move sync check on create dist table 2022-01-19 23:53:13 +03:00
Burak Velioglu 97a1720a17
Address reviews 2022-01-19 23:31:14 +03:00
Burak Velioglu 065db645b9
Move table related part out from metadata 2022-01-19 14:27:13 +03:00
Burak Velioglu b082473563
Address reviews 2 2022-01-19 12:01:42 +03:00
Burak Velioglu 7b84c72aae
Address reviews 2022-01-19 11:26:12 +03:00
Marco Slot 33bfa0b191 Hide shards from application_name's with a specific prefix 2022-01-18 15:20:55 +04:00
Burak Velioglu aedd09ffdf
Separate command list generation and execution 2022-01-16 23:49:31 +03:00
Burak Velioglu 4ae87e8057
Merge branch 'master' into velioglu/table_wo_seq_prototype 2022-01-16 17:11:04 +03:00
Burak Velioglu 9dc9d0d4dd
citus indent 2022-01-16 15:44:45 +03:00
Burak Velioglu fc307afdc4
Use function to get table command list and fix isolation test 2022-01-16 15:42:54 +03:00
Onur Tirtir 70d8e1fe97
Assert that we will create indexes on shards via local execution (#5620) 2022-01-13 17:09:57 +01:00
Burak Velioglu 33efade04c
Merge branch 'master' into velioglu/table_wo_seq_prototype 2022-01-13 00:41:45 +03:00
Burak Velioglu 9fc09947ed
Citus indent 2022-01-12 15:26:01 +03:00
Halil Ozan Akgul 63cd90e5dd Add missing library to dependencies.c 2022-01-11 18:36:43 +03:00
Burak Velioglu 2b513c4100
Merge branch 'master' into velioglu/table_wo_seq_prototype 2022-01-11 11:35:32 +03:00
Burak Velioglu f3522763e5
Remove hacky group id check and unused UDFs 2022-01-11 11:22:45 +03:00
Burak Velioglu 697d1468fe
Use coordianated transaction for object prop 2022-01-10 22:08:43 +03:00
Önder Kalacı 885601c02c
Require superuser while activating a node (#5609)
* Require superuser while activating a node

With this change, we require ActiveNode() (hence citus_add_node(),
citus_activate_node()) explicitly require for a superuser.

Before this commit, these functions were designed to work with
non-superuser roles with the relevent GRANTs given.

However, that is not a widely used way for calling the functions
above.

Due to possibility of non-super user calling the UDFs, they were
designed in a way that some commands were using some additional
short-lived superuser connections. That is:
	(a) breaking transactional behavior (e.g., ROLLBACK
 	    wouldn't fully rollback the whole transaction)
        (b) Making it very complicated to reason about which
	    parts of the node activation goes over which connections,
	    and becoming vulnerable to deadlocks / visibility issues.
2022-01-10 08:30:13 -08:00
Burak Velioglu 4a7a8b8835
Fix sequence owner, reference shards and update tests 2022-01-10 11:30:52 +03:00
Onur Tirtir 3cc44ed8b3
Tell other backends it's safe to ignore the backend that concurrently built the shell table index (#5520)
In addition to starting a new transaction, we also need to tell other
backends --including the ones spawned for connections opened to
localhost to build indexes on shards of this relation-- that concurrent
index builds can safely ignore us.

Normally, DefineIndex() only does that if index doesn't have any
predicates (i.e.: where clause) and no index expressions at all.
However, now that we already called standard process utility, index
build on the shell table is finished anyway.

The reason behind doing so is that we cannot guarantee not grabbing any
snapshots via adaptive executor, and the backends creating indexes on
local shards (if any) might block on waiting for current xact of the
current backend to finish, which would cause self deadlocks that are not
detectable.
2022-01-10 10:23:09 +03:00
Marco Slot ee3b50b026 Disallow remote execution from queries on shards 2022-01-07 17:46:21 +01:00
Ahmet Gedemenli 3c834e6693
Disable foreign distributed tables (#5605)
* Disable foreign distributed tables
* Add warning for existing distributed foreign tables
2022-01-07 18:12:23 +03:00
Burak Velioglu 8006765504
Handle foreign tables and update tests 2022-01-07 15:48:20 +03:00
Burak Velioglu 21138784a3
Update comment 2022-01-07 13:03:31 +03:00
Burak Velioglu 942f1a2c48
Revert local sequence break change 2022-01-07 12:55:47 +03:00
Burak Velioglu 36fb662bf4
Merge branch 'master' into velioglu/table_wo_seq_prototype 2022-01-07 12:43:35 +03:00
Ahmet Gedemenli 45e423136c
Support foreign tables in MX (#5461) 2022-01-06 18:50:34 +03:00
Önder Kalacı 5305aa4246
Do not drop sequences when dropping metadata (#5584)
Dropping sequences means we need to recreate
and hence losing the sequence.

With this commit, we keep the existing sequences
such that resyncing wouldn't drop the sequence.

We do that by breaking the dependency of the sequence
from the table.
2022-01-06 09:48:34 +01:00
jeff-davis 2e03efd91e
Columnar: move DDL hooks to citus to remove dependency. (#5547)
Add a new hook ColumnarTableSetOptions_hook so that citus can get
control when the columnar table options change.
2022-01-04 23:26:46 -08:00
Önder Kalacı 0a8b0b06c6
Do not allow distributed functions on non-metadata synced nodes (#5586)
Before this commit, Citus was triggering metadata syncing
in the background when a function is distributed. However,
with Citus 11, we expect all clusters to have metadata synced
enabled. So, we do not expect any nodes not to have the metadata.

This change:
	(a) pro: simplifies the code and opens up possibilities
		 to simplify futher by reducing the scope of
		 bg worker to only sync node metadata
        (b) pro: explicitly asks users to sync the metadata such that
  	    any unforseen impact can be easily detected
        (c) con: For distributed functions without distribution
		 argument, we do not necessarily require the metadata
		 sycned. However, for completeness and simplicity, we
		 do so.
2022-01-04 13:12:57 +01:00
Burak Velioglu c60f77bb99
Merge branch 'master' into velioglu/table_wo_seq_prototype 2022-01-04 12:53:14 +03:00
Burak Velioglu 596e49db8c
Citus Indent 2021-12-31 13:16:30 +03:00
Burak Velioglu 848d13f6eb
Changes depending on the discussion 2021-12-30 14:38:31 +03:00
Burak Velioglu cc68e87903
Citus indent 2021-12-28 12:48:20 +03:00
Burak Velioglu d912cd9a9b
Update todos 2021-12-28 11:27:12 +03:00
Burak Velioglu cfe3f97faf
Create shell always for dist and reference table 2021-12-28 11:08:27 +03:00
Burak Velioglu d18525a906
Create shell always for local table 2021-12-28 10:58:35 +03:00
Ahmet Gedemenli 042d45b263 Propagate foreign server ops 2021-12-23 17:54:04 +03:00
Burak Velioglu 6598a23963
Dependency update 2021-12-23 17:46:37 +03:00
Burak Velioglu 48c5ce8960
Dist table refactor 2021-12-23 00:16:38 +03:00