mirror of https://github.com/citusdata/citus.git
We were already doing so for functions & types believing that this cannot be the case for other object types. However, as in #5830, we cannot distribute an object that user attempts creating in temp schema. Even more, this doesn't only apply to functions and types but also to many other object types. So with this commit, we teach preprocess/postprocess functions (that need to create dependencies on worker nodes) how to skip trying to distribute such objects. We also start identifying temp schemas as the objects that we don't know how to propagate to worker nodes so that we can simply create objects locally if user attempts creating them in a temp schema. There are 36 callers of `EnsureDependenciesExistOnAllNodes` in the codebase atm and for the most we still need to throw a hard error (i.e.: not use `DeferErrorIfHasUnsupportedDependency` beforehand), such as: i) user explicitly wants to create a distributed object * CreateCitusLocalTable * CreateDistributedTable * master_create_worker_shards * master_create_empty_shard * create_distributed_function * EnsureExtensionFunctionCanBeDistributed ii) we don't want to skip altering distributed table on worker nodes * PostprocessIndexStmt * PostprocessCreateTriggerStmt * PostprocessCreateStatisticsStmt iii) object is already distributed / handled by Citus before, so we aren't okay with not propagating the ALTER command * PostprocessAlterTableSchemaStmt * PostprocessAlterCollationOwnerStmt * PostprocessAlterCollationSchemaStmt * PostprocessAlterDatabaseOwnerStmt * PostprocessAlterExtensionSchemaStmt * PostprocessAlterFunctionOwnerStmt * PostprocessAlterFunctionSchemaStmt * PostprocessAlterSequenceOwnerStmt * PostprocessAlterSequenceSchemaStmt * PostprocessAlterStatisticsSchemaStmt * PostprocessAlterStatisticsOwnerStmt * PostprocessAlterTextSearchConfigurationSchemaStmt * PostprocessAlterTextSearchDictionarySchemaStmt * PostprocessAlterTextSearchConfigurationOwnerStmt * PostprocessAlterTextSearchDictionaryOwnerStmt * PostprocessAlterTypeSchemaStmt * PostprocessAlterForeignServerOwnerStmt iv) we already cannot create those objects in temp schemas, so skipping for now * PostprocessCreateExtensionStmt * PostprocessCreateForeignServerStmt Also note that there are 3 more callers of `EnsureDependenciesExistOnAllNodes` in enterprise in addition to those 36 but we don't need to do anything specific about them due to the same reasoning given in iii). |
||
---|---|---|
.. | ||
test | ||
copy_modified | ||
copy_modified_wrapper | ||
create_test.py | ||
diff | ||
diff-filter | ||
normalize.sed | ||
test_diff |