change address method to return list of addresses

pull/6063/head
aykutbozkurt 2022-07-14 14:38:29 +03:00
parent 9d5ca41e8c
commit 9d232d7b00
18 changed files with 345 additions and 310 deletions

View File

@ -169,7 +169,7 @@ CreateCollationDDLsIdempotent(Oid collationId)
} }
ObjectAddress List *
AlterCollationOwnerObjectAddress(Node *node, bool missing_ok) AlterCollationOwnerObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
@ -177,8 +177,13 @@ AlterCollationOwnerObjectAddress(Node *node, bool missing_ok)
Assert(stmt->objectType == OBJECT_COLLATION); Assert(stmt->objectType == OBJECT_COLLATION);
return get_object_address(stmt->objectType, stmt->object, &relation, ObjectAddress objectAddress = get_object_address(stmt->objectType, stmt->object,
AccessExclusiveLock, missing_ok); &relation, AccessExclusiveLock,
missing_ok);
ObjectAddress *objectAddressCopy = palloc0(sizeof(ObjectAddress));
*objectAddressCopy = objectAddress;
return list_make1(objectAddressCopy);
} }
@ -186,17 +191,17 @@ AlterCollationOwnerObjectAddress(Node *node, bool missing_ok)
* RenameCollationStmtObjectAddress returns the ObjectAddress of the type that is the object * RenameCollationStmtObjectAddress returns the ObjectAddress of the type that is the object
* of the RenameStmt. Errors if missing_ok is false. * of the RenameStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
RenameCollationStmtObjectAddress(Node *node, bool missing_ok) RenameCollationStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
Assert(stmt->renameType == OBJECT_COLLATION); Assert(stmt->renameType == OBJECT_COLLATION);
Oid collationOid = get_collation_oid((List *) stmt->object, missing_ok); Oid collationOid = get_collation_oid((List *) stmt->object, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, CollationRelationId, collationOid); ObjectAddressSet(*address, CollationRelationId, collationOid);
return address; return list_make1(address);
} }
@ -209,7 +214,7 @@ RenameCollationStmtObjectAddress(Node *node, bool missing_ok)
* new schema. Errors if missing_ok is false and the type cannot be found in either of the * new schema. Errors if missing_ok is false and the type cannot be found in either of the
* schemas. * schemas.
*/ */
ObjectAddress List *
AlterCollationSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterCollationSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -232,9 +237,9 @@ AlterCollationSchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, CollationRelationId, collationOid); ObjectAddressSet(*address, CollationRelationId, collationOid);
return address; return list_make1(address);
} }
@ -291,15 +296,15 @@ GenerateBackupNameForCollationCollision(const ObjectAddress *address)
} }
ObjectAddress List *
DefineCollationStmtObjectAddress(Node *node, bool missing_ok) DefineCollationStmtObjectAddress(Node *node, bool missing_ok)
{ {
DefineStmt *stmt = castNode(DefineStmt, node); DefineStmt *stmt = castNode(DefineStmt, node);
Assert(stmt->kind == OBJECT_COLLATION); Assert(stmt->kind == OBJECT_COLLATION);
Oid collOid = get_collation_oid(stmt->defnames, missing_ok); Oid collOid = get_collation_oid(stmt->defnames, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, CollationRelationId, collOid); ObjectAddressSet(*address, CollationRelationId, collOid);
return address; return list_make1(address);
} }

View File

@ -40,17 +40,17 @@ bool EnableAlterDatabaseOwner = true;
* AlterDatabaseOwnerObjectAddress returns the ObjectAddress of the database that is the * AlterDatabaseOwnerObjectAddress returns the ObjectAddress of the database that is the
* object of the AlterOwnerStmt. Errors if missing_ok is false. * object of the AlterOwnerStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
AlterDatabaseOwnerObjectAddress(Node *node, bool missing_ok) AlterDatabaseOwnerObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
Assert(stmt->objectType == OBJECT_DATABASE); Assert(stmt->objectType == OBJECT_DATABASE);
Oid databaseOid = get_database_oid(strVal((String *) stmt->object), missing_ok); Oid databaseOid = get_database_oid(strVal((String *) stmt->object), missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, DatabaseRelationId, databaseOid); ObjectAddressSet(*address, DatabaseRelationId, databaseOid);
return address; return list_make1(address);
} }

View File

@ -37,7 +37,7 @@
static CollateClause * MakeCollateClauseFromOid(Oid collationOid); static CollateClause * MakeCollateClauseFromOid(Oid collationOid);
static ObjectAddress GetDomainAddressByName(TypeName *domainName, bool missing_ok); static List * GetDomainAddressByName(TypeName *domainName, bool missing_ok);
/* /*
* GetDomainAddressByName returns the ObjectAddress of the domain identified by * GetDomainAddressByName returns the ObjectAddress of the domain identified by
@ -45,13 +45,13 @@ static ObjectAddress GetDomainAddressByName(TypeName *domainName, bool missing_o
* InvalidOid. When missing_ok is false this function will raise an error instead when the * InvalidOid. When missing_ok is false this function will raise an error instead when the
* domain can't be found. * domain can't be found.
*/ */
static ObjectAddress static List *
GetDomainAddressByName(TypeName *domainName, bool missing_ok) GetDomainAddressByName(TypeName *domainName, bool missing_ok)
{ {
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
Oid domainOid = LookupTypeNameOid(NULL, domainName, missing_ok); Oid domainOid = LookupTypeNameOid(NULL, domainName, missing_ok);
ObjectAddressSet(address, TypeRelationId, domainOid); ObjectAddressSet(*address, TypeRelationId, domainOid);
return address; return list_make1(address);
} }
@ -229,17 +229,17 @@ MakeCollateClauseFromOid(Oid collationOid)
* created by the statement. When missing_ok is false the function will raise an error if * created by the statement. When missing_ok is false the function will raise an error if
* the domain cannot be found in the local catalog. * the domain cannot be found in the local catalog.
*/ */
ObjectAddress List *
CreateDomainStmtObjectAddress(Node *node, bool missing_ok) CreateDomainStmtObjectAddress(Node *node, bool missing_ok)
{ {
CreateDomainStmt *stmt = castNode(CreateDomainStmt, node); CreateDomainStmt *stmt = castNode(CreateDomainStmt, node);
TypeName *typeName = makeTypeNameFromNameList(stmt->domainname); TypeName *typeName = makeTypeNameFromNameList(stmt->domainname);
Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -248,7 +248,7 @@ CreateDomainStmtObjectAddress(Node *node, bool missing_ok)
* When missing_ok is false this function will raise an error when the domain is not * When missing_ok is false this function will raise an error when the domain is not
* found. * found.
*/ */
ObjectAddress List *
AlterDomainStmtObjectAddress(Node *node, bool missing_ok) AlterDomainStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterDomainStmt *stmt = castNode(AlterDomainStmt, node); AlterDomainStmt *stmt = castNode(AlterDomainStmt, node);
@ -263,7 +263,7 @@ AlterDomainStmtObjectAddress(Node *node, bool missing_ok)
* which the constraint is being renamed. When missing_ok this function will raise an * which the constraint is being renamed. When missing_ok this function will raise an
* error if the domain cannot be found. * error if the domain cannot be found.
*/ */
ObjectAddress List *
DomainRenameConstraintStmtObjectAddress(Node *node, bool missing_ok) DomainRenameConstraintStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -278,7 +278,7 @@ DomainRenameConstraintStmtObjectAddress(Node *node, bool missing_ok)
* being changed. When missing_ok is false this function will raise an error if the domain * being changed. When missing_ok is false this function will raise an error if the domain
* cannot be found. * cannot be found.
*/ */
ObjectAddress List *
AlterDomainOwnerStmtObjectAddress(Node *node, bool missing_ok) AlterDomainOwnerStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
@ -294,7 +294,7 @@ AlterDomainOwnerStmtObjectAddress(Node *node, bool missing_ok)
* When missing_ok is false this function will raise an error when the domain cannot be * When missing_ok is false this function will raise an error when the domain cannot be
* found. * found.
*/ */
ObjectAddress List *
RenameDomainStmtObjectAddress(Node *node, bool missing_ok) RenameDomainStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);

View File

@ -1128,7 +1128,7 @@ GetDependentFDWsToExtension(Oid extensionId)
* AlterExtensionSchemaStmtObjectAddress returns the ObjectAddress of the extension that is * AlterExtensionSchemaStmtObjectAddress returns the ObjectAddress of the extension that is
* the subject of the AlterObjectSchemaStmt. Errors if missing_ok is false. * the subject of the AlterObjectSchemaStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
AlterExtensionSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterExtensionSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -1145,10 +1145,10 @@ AlterExtensionSchemaStmtObjectAddress(Node *node, bool missing_ok)
extensionName))); extensionName)));
} }
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, ExtensionRelationId, extensionOid); ObjectAddressSet(*address, ExtensionRelationId, extensionOid);
return address; return list_make1(address);
} }
@ -1156,7 +1156,7 @@ AlterExtensionSchemaStmtObjectAddress(Node *node, bool missing_ok)
* AlterExtensionUpdateStmtObjectAddress returns the ObjectAddress of the extension that is * AlterExtensionUpdateStmtObjectAddress returns the ObjectAddress of the extension that is
* the subject of the AlterExtensionStmt. Errors if missing_ok is false. * the subject of the AlterExtensionStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
AlterExtensionUpdateStmtObjectAddress(Node *node, bool missing_ok) AlterExtensionUpdateStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterExtensionStmt *stmt = castNode(AlterExtensionStmt, node); AlterExtensionStmt *stmt = castNode(AlterExtensionStmt, node);
@ -1171,10 +1171,10 @@ AlterExtensionUpdateStmtObjectAddress(Node *node, bool missing_ok)
extensionName))); extensionName)));
} }
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, ExtensionRelationId, extensionOid); ObjectAddressSet(*address, ExtensionRelationId, extensionOid);
return address; return list_make1(address);
} }

View File

@ -16,6 +16,7 @@
#include "distributed/commands.h" #include "distributed/commands.h"
#include "distributed/deparser.h" #include "distributed/deparser.h"
#include "distributed/listutils.h" #include "distributed/listutils.h"
#include "distributed/log_utils.h"
#include "distributed/metadata/distobject.h" #include "distributed/metadata/distobject.h"
#include "distributed/metadata_sync.h" #include "distributed/metadata_sync.h"
#include "distributed/multi_executor.h" #include "distributed/multi_executor.h"
@ -29,7 +30,7 @@
static char * GetForeignServerAlterOwnerCommand(Oid serverId); static char * GetForeignServerAlterOwnerCommand(Oid serverId);
static Node * RecreateForeignServerStmt(Oid serverId); static Node * RecreateForeignServerStmt(Oid serverId);
static bool NameListHasDistributedServer(List *serverNames); static bool NameListHasDistributedServer(List *serverNames);
static ObjectAddress GetObjectAddressByServerName(char *serverName, bool missing_ok); static List * GetObjectAddressByServerName(char *serverName, bool missing_ok);
/* /*
@ -40,7 +41,7 @@ static ObjectAddress GetObjectAddressByServerName(char *serverName, bool missing
* Never returns NULL, but the objid in the address can be invalid if missingOk * Never returns NULL, but the objid in the address can be invalid if missingOk
* was set to true. * was set to true.
*/ */
ObjectAddress List *
CreateForeignServerStmtObjectAddress(Node *node, bool missing_ok) CreateForeignServerStmtObjectAddress(Node *node, bool missing_ok)
{ {
CreateForeignServerStmt *stmt = castNode(CreateForeignServerStmt, node); CreateForeignServerStmt *stmt = castNode(CreateForeignServerStmt, node);
@ -57,7 +58,7 @@ CreateForeignServerStmtObjectAddress(Node *node, bool missing_ok)
* Never returns NULL, but the objid in the address can be invalid if missingOk * Never returns NULL, but the objid in the address can be invalid if missingOk
* was set to true. * was set to true.
*/ */
ObjectAddress List *
AlterForeignServerStmtObjectAddress(Node *node, bool missing_ok) AlterForeignServerStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterForeignServerStmt *stmt = castNode(AlterForeignServerStmt, node); AlterForeignServerStmt *stmt = castNode(AlterForeignServerStmt, node);
@ -121,7 +122,7 @@ PreprocessGrantOnForeignServerStmt(Node *node, const char *queryString,
* Never returns NULL, but the objid in the address can be invalid if missingOk * Never returns NULL, but the objid in the address can be invalid if missingOk
* was set to true. * was set to true.
*/ */
ObjectAddress List *
RenameForeignServerStmtObjectAddress(Node *node, bool missing_ok) RenameForeignServerStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -139,7 +140,7 @@ RenameForeignServerStmtObjectAddress(Node *node, bool missing_ok)
* Never returns NULL, but the objid in the address can be invalid if missingOk * Never returns NULL, but the objid in the address can be invalid if missingOk
* was set to true. * was set to true.
*/ */
ObjectAddress List *
AlterForeignServerOwnerStmtObjectAddress(Node *node, bool missing_ok) AlterForeignServerOwnerStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
@ -245,9 +246,16 @@ NameListHasDistributedServer(List *serverNames)
String *serverValue = NULL; String *serverValue = NULL;
foreach_ptr(serverValue, serverNames) foreach_ptr(serverValue, serverNames)
{ {
ObjectAddress address = GetObjectAddressByServerName(strVal(serverValue), false); List *addresses = GetObjectAddressByServerName(strVal(serverValue), false);
if (list_length(addresses) > 1)
{
ereport(ERROR, errmsg(
"citus does not support multiple object addresses in NameListHasDistributedServer"));
}
if (IsObjectDistributed(&address)) ObjectAddress *address = linitial(addresses);
if (IsObjectDistributed(address))
{ {
return true; return true;
} }
@ -257,13 +265,13 @@ NameListHasDistributedServer(List *serverNames)
} }
static ObjectAddress static List *
GetObjectAddressByServerName(char *serverName, bool missing_ok) GetObjectAddressByServerName(char *serverName, bool missing_ok)
{ {
ForeignServer *server = GetForeignServerByName(serverName, missing_ok); ForeignServer *server = GetForeignServerByName(serverName, missing_ok);
Oid serverOid = server->serverid; Oid serverOid = server->serverid;
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, ForeignServerRelationId, serverOid); ObjectAddressSet(*address, ForeignServerRelationId, serverOid);
return address; return list_make1(address);
} }

View File

@ -88,9 +88,9 @@ static void EnsureFunctionCanBeColocatedWithTable(Oid functionOid, Oid
static bool ShouldPropagateCreateFunction(CreateFunctionStmt *stmt); static bool ShouldPropagateCreateFunction(CreateFunctionStmt *stmt);
static bool ShouldPropagateAlterFunction(const ObjectAddress *address); static bool ShouldPropagateAlterFunction(const ObjectAddress *address);
static bool ShouldAddFunctionSignature(FunctionParameterMode mode); static bool ShouldAddFunctionSignature(FunctionParameterMode mode);
static ObjectAddress FunctionToObjectAddress(ObjectType objectType, static List * FunctionToObjectAddress(ObjectType objectType,
ObjectWithArgs *objectWithArgs, ObjectWithArgs *objectWithArgs,
bool missing_ok); bool missing_ok);
static void ErrorIfUnsupportedAlterFunctionStmt(AlterFunctionStmt *stmt); static void ErrorIfUnsupportedAlterFunctionStmt(AlterFunctionStmt *stmt);
static char * quote_qualified_func_name(Oid funcOid); static char * quote_qualified_func_name(Oid funcOid);
static void DistributeFunctionWithDistributionArgument(RegProcedure funcOid, static void DistributeFunctionWithDistributionArgument(RegProcedure funcOid,
@ -1405,7 +1405,7 @@ PostprocessCreateFunctionStmt(Node *node, const char *queryString)
* CREATE [OR REPLACE] FUNCTION statement. If missing_ok is false it will error with the * CREATE [OR REPLACE] FUNCTION statement. If missing_ok is false it will error with the
* normal postgres error for unfound functions. * normal postgres error for unfound functions.
*/ */
ObjectAddress List *
CreateFunctionStmtObjectAddress(Node *node, bool missing_ok) CreateFunctionStmtObjectAddress(Node *node, bool missing_ok)
{ {
CreateFunctionStmt *stmt = castNode(CreateFunctionStmt, node); CreateFunctionStmt *stmt = castNode(CreateFunctionStmt, node);
@ -1440,7 +1440,7 @@ CreateFunctionStmtObjectAddress(Node *node, bool missing_ok)
* *
* objectId in the address can be invalid if missing_ok was set to true. * objectId in the address can be invalid if missing_ok was set to true.
*/ */
ObjectAddress List *
DefineAggregateStmtObjectAddress(Node *node, bool missing_ok) DefineAggregateStmtObjectAddress(Node *node, bool missing_ok)
{ {
DefineStmt *stmt = castNode(DefineStmt, node); DefineStmt *stmt = castNode(DefineStmt, node);
@ -1576,7 +1576,7 @@ PreprocessAlterFunctionDependsStmt(Node *node, const char *queryString,
* is the subject of an ALTER FUNCTION ... DEPENS ON EXTENSION ... statement. If * is the subject of an ALTER FUNCTION ... DEPENS ON EXTENSION ... statement. If
* missing_ok is set to false the lookup will raise an error. * missing_ok is set to false the lookup will raise an error.
*/ */
ObjectAddress List *
AlterFunctionDependsStmtObjectAddress(Node *node, bool missing_ok) AlterFunctionDependsStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectDependsStmt *stmt = castNode(AlterObjectDependsStmt, node); AlterObjectDependsStmt *stmt = castNode(AlterObjectDependsStmt, node);
@ -1592,7 +1592,7 @@ AlterFunctionDependsStmtObjectAddress(Node *node, bool missing_ok)
* AlterFunctionStmt. If missing_ok is set to false an error will be raised if postgres * AlterFunctionStmt. If missing_ok is set to false an error will be raised if postgres
* was unable to find the function/procedure that was the target of the statement. * was unable to find the function/procedure that was the target of the statement.
*/ */
ObjectAddress List *
AlterFunctionStmtObjectAddress(Node *node, bool missing_ok) AlterFunctionStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterFunctionStmt *stmt = castNode(AlterFunctionStmt, node); AlterFunctionStmt *stmt = castNode(AlterFunctionStmt, node);
@ -1604,7 +1604,7 @@ AlterFunctionStmtObjectAddress(Node *node, bool missing_ok)
* RenameFunctionStmtObjectAddress returns the ObjectAddress of the function that is the * RenameFunctionStmtObjectAddress returns the ObjectAddress of the function that is the
* subject of the RenameStmt. Errors if missing_ok is false. * subject of the RenameStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
RenameFunctionStmtObjectAddress(Node *node, bool missing_ok) RenameFunctionStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -1617,7 +1617,7 @@ RenameFunctionStmtObjectAddress(Node *node, bool missing_ok)
* AlterFunctionOwnerObjectAddress returns the ObjectAddress of the function that is the * AlterFunctionOwnerObjectAddress returns the ObjectAddress of the function that is the
* subject of the AlterOwnerStmt. Errors if missing_ok is false. * subject of the AlterOwnerStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
AlterFunctionOwnerObjectAddress(Node *node, bool missing_ok) AlterFunctionOwnerObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
@ -1635,7 +1635,7 @@ AlterFunctionOwnerObjectAddress(Node *node, bool missing_ok)
* the new schema. Errors if missing_ok is false and the type cannot be found in either of * the new schema. Errors if missing_ok is false and the type cannot be found in either of
* the schemas. * the schemas.
*/ */
ObjectAddress List *
AlterFunctionSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterFunctionSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -1680,10 +1680,10 @@ AlterFunctionSchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, ProcedureRelationId, funcOid); ObjectAddressSet(*address, ProcedureRelationId, funcOid);
return address; return list_make1(address);
} }
@ -1827,17 +1827,17 @@ ShouldAddFunctionSignature(FunctionParameterMode mode)
* Function/Procedure/Aggregate. If missing_ok is set to false an error will be * Function/Procedure/Aggregate. If missing_ok is set to false an error will be
* raised by postgres explaining the Function/Procedure could not be found. * raised by postgres explaining the Function/Procedure could not be found.
*/ */
static ObjectAddress static List *
FunctionToObjectAddress(ObjectType objectType, ObjectWithArgs *objectWithArgs, FunctionToObjectAddress(ObjectType objectType, ObjectWithArgs *objectWithArgs,
bool missing_ok) bool missing_ok)
{ {
AssertObjectTypeIsFunctional(objectType); AssertObjectTypeIsFunctional(objectType);
Oid funcOid = LookupFuncWithArgs(objectType, objectWithArgs, missing_ok); Oid funcOid = LookupFuncWithArgs(objectType, objectWithArgs, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, ProcedureRelationId, funcOid); ObjectAddressSet(*address, ProcedureRelationId, funcOid);
return address; return list_make1(address);
} }

View File

@ -74,7 +74,7 @@ static Node * makeFloatConst(char *str, int location);
static const char * WrapQueryInAlterRoleIfExistsCall(const char *query, RoleSpec *role); static const char * WrapQueryInAlterRoleIfExistsCall(const char *query, RoleSpec *role);
static VariableSetStmt * MakeVariableSetStmt(const char *config); static VariableSetStmt * MakeVariableSetStmt(const char *config);
static int ConfigGenericNameCompare(const void *lhs, const void *rhs); static int ConfigGenericNameCompare(const void *lhs, const void *rhs);
static ObjectAddress RoleSpecToObjectAddress(RoleSpec *role, bool missing_ok); static List * RoleSpecToObjectAddress(RoleSpec *role, bool missing_ok);
/* controlled via GUC */ /* controlled via GUC */
bool EnableCreateRolePropagation = true; bool EnableCreateRolePropagation = true;
@ -87,7 +87,7 @@ bool EnableAlterRoleSetPropagation = true;
* AlterRoleStmt. If missing_ok is set to false an error will be raised if postgres * AlterRoleStmt. If missing_ok is set to false an error will be raised if postgres
* was unable to find the role that was the target of the statement. * was unable to find the role that was the target of the statement.
*/ */
ObjectAddress List *
AlterRoleStmtObjectAddress(Node *node, bool missing_ok) AlterRoleStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterRoleStmt *stmt = castNode(AlterRoleStmt, node); AlterRoleStmt *stmt = castNode(AlterRoleStmt, node);
@ -100,7 +100,7 @@ AlterRoleStmtObjectAddress(Node *node, bool missing_ok)
* AlterRoleSetStmt. If missing_ok is set to false an error will be raised if postgres * AlterRoleSetStmt. If missing_ok is set to false an error will be raised if postgres
* was unable to find the role that was the target of the statement. * was unable to find the role that was the target of the statement.
*/ */
ObjectAddress List *
AlterRoleSetStmtObjectAddress(Node *node, bool missing_ok) AlterRoleSetStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterRoleSetStmt *stmt = castNode(AlterRoleSetStmt, node); AlterRoleSetStmt *stmt = castNode(AlterRoleSetStmt, node);
@ -113,19 +113,19 @@ AlterRoleSetStmtObjectAddress(Node *node, bool missing_ok)
* RoleSpec. If missing_ok is set to false an error will be raised by postgres * RoleSpec. If missing_ok is set to false an error will be raised by postgres
* explaining the Role could not be found. * explaining the Role could not be found.
*/ */
static ObjectAddress static List *
RoleSpecToObjectAddress(RoleSpec *role, bool missing_ok) RoleSpecToObjectAddress(RoleSpec *role, bool missing_ok)
{ {
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
if (role != NULL) if (role != NULL)
{ {
/* roles can be NULL for statements on ALL roles eg. ALTER ROLE ALL SET ... */ /* roles can be NULL for statements on ALL roles eg. ALTER ROLE ALL SET ... */
Oid roleOid = get_rolespec_oid(role, missing_ok); Oid roleOid = get_rolespec_oid(role, missing_ok);
ObjectAddressSet(address, AuthIdRelationId, roleOid); ObjectAddressSet(*address, AuthIdRelationId, roleOid);
} }
return address; return list_make1(address);
} }
@ -1179,15 +1179,15 @@ ConfigGenericNameCompare(const void *a, const void *b)
* Never returns NULL, but the objid in the address could be invalid if missing_ok was set * Never returns NULL, but the objid in the address could be invalid if missing_ok was set
* to true. * to true.
*/ */
ObjectAddress List *
CreateRoleStmtObjectAddress(Node *node, bool missing_ok) CreateRoleStmtObjectAddress(Node *node, bool missing_ok)
{ {
CreateRoleStmt *stmt = castNode(CreateRoleStmt, node); CreateRoleStmt *stmt = castNode(CreateRoleStmt, node);
Oid roleOid = get_role_oid(stmt->role, missing_ok); Oid roleOid = get_role_oid(stmt->role, missing_ok);
ObjectAddress roleAddress = { 0 }; ObjectAddress *roleAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(roleAddress, AuthIdRelationId, roleOid); ObjectAddressSet(*roleAddress, AuthIdRelationId, roleOid);
return roleAddress; return list_make1(roleAddress);
} }

View File

@ -40,7 +40,7 @@
#include "utils/relcache.h" #include "utils/relcache.h"
static ObjectAddress GetObjectAddressBySchemaName(char *schemaName, bool missing_ok); static List * GetObjectAddressBySchemaName(char *schemaName, bool missing_ok);
static List * FilterDistributedSchemas(List *schemas); static List * FilterDistributedSchemas(List *schemas);
static bool SchemaHasDistributedTableWithFKey(char *schemaName); static bool SchemaHasDistributedTableWithFKey(char *schemaName);
static bool ShouldPropagateCreateSchemaStmt(void); static bool ShouldPropagateCreateSchemaStmt(void);
@ -183,7 +183,7 @@ PreprocessGrantOnSchemaStmt(Node *node, const char *queryString,
* CreateSchemaStmtObjectAddress returns the ObjectAddress of the schema that is * CreateSchemaStmtObjectAddress returns the ObjectAddress of the schema that is
* the object of the CreateSchemaStmt. Errors if missing_ok is false. * the object of the CreateSchemaStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
CreateSchemaStmtObjectAddress(Node *node, bool missing_ok) CreateSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
CreateSchemaStmt *stmt = castNode(CreateSchemaStmt, node); CreateSchemaStmt *stmt = castNode(CreateSchemaStmt, node);
@ -213,7 +213,7 @@ CreateSchemaStmtObjectAddress(Node *node, bool missing_ok)
* AlterSchemaRenameStmtObjectAddress returns the ObjectAddress of the schema that is * AlterSchemaRenameStmtObjectAddress returns the ObjectAddress of the schema that is
* the object of the RenameStmt. Errors if missing_ok is false. * the object of the RenameStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
AlterSchemaRenameStmtObjectAddress(Node *node, bool missing_ok) AlterSchemaRenameStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -227,15 +227,15 @@ AlterSchemaRenameStmtObjectAddress(Node *node, bool missing_ok)
* GetObjectAddressBySchemaName returns the ObjectAddress of the schema with the * GetObjectAddressBySchemaName returns the ObjectAddress of the schema with the
* given name. Errors out if schema is not found and missing_ok is false. * given name. Errors out if schema is not found and missing_ok is false.
*/ */
ObjectAddress List *
GetObjectAddressBySchemaName(char *schemaName, bool missing_ok) GetObjectAddressBySchemaName(char *schemaName, bool missing_ok)
{ {
Oid schemaOid = get_namespace_oid(schemaName, missing_ok); Oid schemaOid = get_namespace_oid(schemaName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, NamespaceRelationId, schemaOid); ObjectAddressSet(*address, NamespaceRelationId, schemaOid);
return address; return list_make1(address);
} }

View File

@ -358,7 +358,7 @@ PreprocessRenameSequenceStmt(Node *node, const char *queryString, ProcessUtility
* RenameSequenceStmtObjectAddress returns the ObjectAddress of the sequence that is the * RenameSequenceStmtObjectAddress returns the ObjectAddress of the sequence that is the
* subject of the RenameStmt. * subject of the RenameStmt.
*/ */
ObjectAddress List *
RenameSequenceStmtObjectAddress(Node *node, bool missing_ok) RenameSequenceStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -366,10 +366,10 @@ RenameSequenceStmtObjectAddress(Node *node, bool missing_ok)
RangeVar *sequence = stmt->relation; RangeVar *sequence = stmt->relation;
Oid seqOid = RangeVarGetRelid(sequence, NoLock, missing_ok); Oid seqOid = RangeVarGetRelid(sequence, NoLock, missing_ok);
ObjectAddress sequenceAddress = { 0 }; ObjectAddress *sequenceAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(sequenceAddress, RelationRelationId, seqOid); ObjectAddressSet(*sequenceAddress, RelationRelationId, seqOid);
return sequenceAddress; return list_make1(sequenceAddress);
} }
@ -471,17 +471,17 @@ SequenceUsedInDistributedTable(const ObjectAddress *sequenceAddress)
* AlterSequenceStmtObjectAddress returns the ObjectAddress of the sequence that is the * AlterSequenceStmtObjectAddress returns the ObjectAddress of the sequence that is the
* subject of the AlterSeqStmt. * subject of the AlterSeqStmt.
*/ */
ObjectAddress List *
AlterSequenceStmtObjectAddress(Node *node, bool missing_ok) AlterSequenceStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterSeqStmt *stmt = castNode(AlterSeqStmt, node); AlterSeqStmt *stmt = castNode(AlterSeqStmt, node);
RangeVar *sequence = stmt->sequence; RangeVar *sequence = stmt->sequence;
Oid seqOid = RangeVarGetRelid(sequence, NoLock, stmt->missing_ok); Oid seqOid = RangeVarGetRelid(sequence, NoLock, stmt->missing_ok);
ObjectAddress sequenceAddress = { 0 }; ObjectAddress *sequenceAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(sequenceAddress, RelationRelationId, seqOid); ObjectAddressSet(*sequenceAddress, RelationRelationId, seqOid);
return sequenceAddress; return list_make1(sequenceAddress);
} }
@ -521,7 +521,7 @@ PreprocessAlterSequenceSchemaStmt(Node *node, const char *queryString,
* AlterSequenceSchemaStmtObjectAddress returns the ObjectAddress of the sequence that is * AlterSequenceSchemaStmtObjectAddress returns the ObjectAddress of the sequence that is
* the subject of the AlterObjectSchemaStmt. * the subject of the AlterObjectSchemaStmt.
*/ */
ObjectAddress List *
AlterSequenceSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterSequenceSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -555,10 +555,10 @@ AlterSequenceSchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress sequenceAddress = { 0 }; ObjectAddress *sequenceAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(sequenceAddress, RelationRelationId, seqOid); ObjectAddressSet(*sequenceAddress, RelationRelationId, seqOid);
return sequenceAddress; return list_make1(sequenceAddress);
} }
@ -623,7 +623,7 @@ PreprocessAlterSequenceOwnerStmt(Node *node, const char *queryString,
* AlterSequenceOwnerStmtObjectAddress returns the ObjectAddress of the sequence that is the * AlterSequenceOwnerStmtObjectAddress returns the ObjectAddress of the sequence that is the
* subject of the AlterOwnerStmt. * subject of the AlterOwnerStmt.
*/ */
ObjectAddress List *
AlterSequenceOwnerStmtObjectAddress(Node *node, bool missing_ok) AlterSequenceOwnerStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterTableStmt *stmt = castNode(AlterTableStmt, node); AlterTableStmt *stmt = castNode(AlterTableStmt, node);
@ -631,10 +631,10 @@ AlterSequenceOwnerStmtObjectAddress(Node *node, bool missing_ok)
RangeVar *sequence = stmt->relation; RangeVar *sequence = stmt->relation;
Oid seqOid = RangeVarGetRelid(sequence, NoLock, missing_ok); Oid seqOid = RangeVarGetRelid(sequence, NoLock, missing_ok);
ObjectAddress sequenceAddress = { 0 }; ObjectAddress *sequenceAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(sequenceAddress, RelationRelationId, seqOid); ObjectAddressSet(*sequenceAddress, RelationRelationId, seqOid);
return sequenceAddress; return list_make1(sequenceAddress);
} }

View File

@ -138,16 +138,16 @@ PostprocessCreateStatisticsStmt(Node *node, const char *queryString)
* Never returns NULL, but the objid in the address can be invalid if missingOk * Never returns NULL, but the objid in the address can be invalid if missingOk
* was set to true. * was set to true.
*/ */
ObjectAddress List *
CreateStatisticsStmtObjectAddress(Node *node, bool missingOk) CreateStatisticsStmtObjectAddress(Node *node, bool missingOk)
{ {
CreateStatsStmt *stmt = castNode(CreateStatsStmt, node); CreateStatsStmt *stmt = castNode(CreateStatsStmt, node);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
Oid statsOid = get_statistics_object_oid(stmt->defnames, missingOk); Oid statsOid = get_statistics_object_oid(stmt->defnames, missingOk);
ObjectAddressSet(address, StatisticExtRelationId, statsOid); ObjectAddressSet(*address, StatisticExtRelationId, statsOid);
return address; return list_make1(address);
} }
@ -322,18 +322,18 @@ PostprocessAlterStatisticsSchemaStmt(Node *node, const char *queryString)
* Never returns NULL, but the objid in the address can be invalid if missingOk * Never returns NULL, but the objid in the address can be invalid if missingOk
* was set to true. * was set to true.
*/ */
ObjectAddress List *
AlterStatisticsSchemaStmtObjectAddress(Node *node, bool missingOk) AlterStatisticsSchemaStmtObjectAddress(Node *node, bool missingOk)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
String *statName = llast((List *) stmt->object); String *statName = llast((List *) stmt->object);
Oid statsOid = get_statistics_object_oid(list_make2(makeString(stmt->newschema), Oid statsOid = get_statistics_object_oid(list_make2(makeString(stmt->newschema),
statName), missingOk); statName), missingOk);
ObjectAddressSet(address, StatisticExtRelationId, statsOid); ObjectAddressSet(*address, StatisticExtRelationId, statsOid);
return address; return list_make1(address);
} }

View File

@ -3353,7 +3353,7 @@ ErrorIfUnsupportedAlterAddConstraintStmt(AlterTableStmt *alterTableStatement)
* will look in the new schema. Errors if missing_ok is false and the table cannot * will look in the new schema. Errors if missing_ok is false and the table cannot
* be found in either of the schemas. * be found in either of the schemas.
*/ */
ObjectAddress List *
AlterTableSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterTableSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -3389,10 +3389,10 @@ AlterTableSchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, RelationRelationId, tableOid); ObjectAddressSet(*address, RelationRelationId, tableOid);
return address; return list_make1(address);
} }

View File

@ -569,7 +569,7 @@ get_ts_parser_namelist(Oid tsparserOid)
* being created. If missing_pk is false the function will error, explaining to the user * being created. If missing_pk is false the function will error, explaining to the user
* the text search configuration described in the statement doesn't exist. * the text search configuration described in the statement doesn't exist.
*/ */
ObjectAddress List *
CreateTextSearchConfigurationObjectAddress(Node *node, bool missing_ok) CreateTextSearchConfigurationObjectAddress(Node *node, bool missing_ok)
{ {
DefineStmt *stmt = castNode(DefineStmt, node); DefineStmt *stmt = castNode(DefineStmt, node);
@ -577,9 +577,9 @@ CreateTextSearchConfigurationObjectAddress(Node *node, bool missing_ok)
Oid objid = get_ts_config_oid(stmt->defnames, missing_ok); Oid objid = get_ts_config_oid(stmt->defnames, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSConfigRelationId, objid); ObjectAddressSet(*address, TSConfigRelationId, objid);
return address; return list_make1(address);
} }
@ -588,7 +588,7 @@ CreateTextSearchConfigurationObjectAddress(Node *node, bool missing_ok)
* being created. If missing_pk is false the function will error, explaining to the user * being created. If missing_pk is false the function will error, explaining to the user
* the text search dictionary described in the statement doesn't exist. * the text search dictionary described in the statement doesn't exist.
*/ */
ObjectAddress List *
CreateTextSearchDictObjectAddress(Node *node, bool missing_ok) CreateTextSearchDictObjectAddress(Node *node, bool missing_ok)
{ {
DefineStmt *stmt = castNode(DefineStmt, node); DefineStmt *stmt = castNode(DefineStmt, node);
@ -596,9 +596,9 @@ CreateTextSearchDictObjectAddress(Node *node, bool missing_ok)
Oid objid = get_ts_dict_oid(stmt->defnames, missing_ok); Oid objid = get_ts_dict_oid(stmt->defnames, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSDictionaryRelationId, objid); ObjectAddressSet(*address, TSDictionaryRelationId, objid);
return address; return list_make1(address);
} }
@ -607,7 +607,7 @@ CreateTextSearchDictObjectAddress(Node *node, bool missing_ok)
* SEARCH CONFIGURATION being renamed. Optionally errors if the configuration does not * SEARCH CONFIGURATION being renamed. Optionally errors if the configuration does not
* exist based on the missing_ok flag passed in by the caller. * exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
RenameTextSearchConfigurationStmtObjectAddress(Node *node, bool missing_ok) RenameTextSearchConfigurationStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -615,9 +615,9 @@ RenameTextSearchConfigurationStmtObjectAddress(Node *node, bool missing_ok)
Oid objid = get_ts_config_oid(castNode(List, stmt->object), missing_ok); Oid objid = get_ts_config_oid(castNode(List, stmt->object), missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSConfigRelationId, objid); ObjectAddressSet(*address, TSConfigRelationId, objid);
return address; return list_make1(address);
} }
@ -626,7 +626,7 @@ RenameTextSearchConfigurationStmtObjectAddress(Node *node, bool missing_ok)
* SEARCH DICTIONARY being renamed. Optionally errors if the dictionary does not * SEARCH DICTIONARY being renamed. Optionally errors if the dictionary does not
* exist based on the missing_ok flag passed in by the caller. * exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
RenameTextSearchDictionaryStmtObjectAddress(Node *node, bool missing_ok) RenameTextSearchDictionaryStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -634,9 +634,9 @@ RenameTextSearchDictionaryStmtObjectAddress(Node *node, bool missing_ok)
Oid objid = get_ts_dict_oid(castNode(List, stmt->object), missing_ok); Oid objid = get_ts_dict_oid(castNode(List, stmt->object), missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSDictionaryRelationId, objid); ObjectAddressSet(*address, TSDictionaryRelationId, objid);
return address; return list_make1(address);
} }
@ -645,16 +645,16 @@ RenameTextSearchDictionaryStmtObjectAddress(Node *node, bool missing_ok)
* SEARCH CONFIGURATION being altered. Optionally errors if the configuration does not * SEARCH CONFIGURATION being altered. Optionally errors if the configuration does not
* exist based on the missing_ok flag passed in by the caller. * exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
AlterTextSearchConfigurationStmtObjectAddress(Node *node, bool missing_ok) AlterTextSearchConfigurationStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterTSConfigurationStmt *stmt = castNode(AlterTSConfigurationStmt, node); AlterTSConfigurationStmt *stmt = castNode(AlterTSConfigurationStmt, node);
Oid objid = get_ts_config_oid(stmt->cfgname, missing_ok); Oid objid = get_ts_config_oid(stmt->cfgname, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSConfigRelationId, objid); ObjectAddressSet(*address, TSConfigRelationId, objid);
return address; return list_make1(address);
} }
@ -663,16 +663,16 @@ AlterTextSearchConfigurationStmtObjectAddress(Node *node, bool missing_ok)
* SEARCH CONFIGURATION being altered. Optionally errors if the configuration does not * SEARCH CONFIGURATION being altered. Optionally errors if the configuration does not
* exist based on the missing_ok flag passed in by the caller. * exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
AlterTextSearchDictionaryStmtObjectAddress(Node *node, bool missing_ok) AlterTextSearchDictionaryStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterTSDictionaryStmt *stmt = castNode(AlterTSDictionaryStmt, node); AlterTSDictionaryStmt *stmt = castNode(AlterTSDictionaryStmt, node);
Oid objid = get_ts_dict_oid(stmt->dictname, missing_ok); Oid objid = get_ts_dict_oid(stmt->dictname, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSDictionaryRelationId, objid); ObjectAddressSet(*address, TSDictionaryRelationId, objid);
return address; return list_make1(address);
} }
@ -685,7 +685,7 @@ AlterTextSearchDictionaryStmtObjectAddress(Node *node, bool missing_ok)
* the triple checking before the error might be thrown. Errors for non-existing schema's * the triple checking before the error might be thrown. Errors for non-existing schema's
* in edgecases will be raised by postgres while executing the move. * in edgecases will be raised by postgres while executing the move.
*/ */
ObjectAddress List *
AlterTextSearchConfigurationSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterTextSearchConfigurationSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -723,9 +723,9 @@ AlterTextSearchConfigurationSchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress sequenceAddress = { 0 }; ObjectAddress *sequenceAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(sequenceAddress, TSConfigRelationId, objid); ObjectAddressSet(*sequenceAddress, TSConfigRelationId, objid);
return sequenceAddress; return list_make1(sequenceAddress);
} }
@ -738,7 +738,7 @@ AlterTextSearchConfigurationSchemaStmtObjectAddress(Node *node, bool missing_ok)
* the triple checking before the error might be thrown. Errors for non-existing schema's * the triple checking before the error might be thrown. Errors for non-existing schema's
* in edgecases will be raised by postgres while executing the move. * in edgecases will be raised by postgres while executing the move.
*/ */
ObjectAddress List *
AlterTextSearchDictionarySchemaStmtObjectAddress(Node *node, bool missing_ok) AlterTextSearchDictionarySchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -776,9 +776,9 @@ AlterTextSearchDictionarySchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress sequenceAddress = { 0 }; ObjectAddress *sequenceAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(sequenceAddress, TSDictionaryRelationId, objid); ObjectAddressSet(*sequenceAddress, TSDictionaryRelationId, objid);
return sequenceAddress; return list_make1(sequenceAddress);
} }
@ -787,7 +787,7 @@ AlterTextSearchDictionarySchemaStmtObjectAddress(Node *node, bool missing_ok)
* SEARCH CONFIGURATION on which the comment is placed. Optionally errors if the * SEARCH CONFIGURATION on which the comment is placed. Optionally errors if the
* configuration does not exist based on the missing_ok flag passed in by the caller. * configuration does not exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
TextSearchConfigurationCommentObjectAddress(Node *node, bool missing_ok) TextSearchConfigurationCommentObjectAddress(Node *node, bool missing_ok)
{ {
CommentStmt *stmt = castNode(CommentStmt, node); CommentStmt *stmt = castNode(CommentStmt, node);
@ -795,9 +795,9 @@ TextSearchConfigurationCommentObjectAddress(Node *node, bool missing_ok)
Oid objid = get_ts_config_oid(castNode(List, stmt->object), missing_ok); Oid objid = get_ts_config_oid(castNode(List, stmt->object), missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSConfigRelationId, objid); ObjectAddressSet(*address, TSConfigRelationId, objid);
return address; return list_make1(address);
} }
@ -806,7 +806,7 @@ TextSearchConfigurationCommentObjectAddress(Node *node, bool missing_ok)
* DICTIONARY on which the comment is placed. Optionally errors if the dictionary does not * DICTIONARY on which the comment is placed. Optionally errors if the dictionary does not
* exist based on the missing_ok flag passed in by the caller. * exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
TextSearchDictCommentObjectAddress(Node *node, bool missing_ok) TextSearchDictCommentObjectAddress(Node *node, bool missing_ok)
{ {
CommentStmt *stmt = castNode(CommentStmt, node); CommentStmt *stmt = castNode(CommentStmt, node);
@ -814,9 +814,9 @@ TextSearchDictCommentObjectAddress(Node *node, bool missing_ok)
Oid objid = get_ts_dict_oid(castNode(List, stmt->object), missing_ok); Oid objid = get_ts_dict_oid(castNode(List, stmt->object), missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TSDictionaryRelationId, objid); ObjectAddressSet(*address, TSDictionaryRelationId, objid);
return address; return list_make1(address);
} }
@ -825,7 +825,7 @@ TextSearchDictCommentObjectAddress(Node *node, bool missing_ok)
* SEARCH CONFIGURATION for which the owner is changed. Optionally errors if the * SEARCH CONFIGURATION for which the owner is changed. Optionally errors if the
* configuration does not exist based on the missing_ok flag passed in by the caller. * configuration does not exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
AlterTextSearchConfigurationOwnerObjectAddress(Node *node, bool missing_ok) AlterTextSearchConfigurationOwnerObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
@ -833,8 +833,14 @@ AlterTextSearchConfigurationOwnerObjectAddress(Node *node, bool missing_ok)
Assert(stmt->objectType == OBJECT_TSCONFIGURATION); Assert(stmt->objectType == OBJECT_TSCONFIGURATION);
return get_object_address(stmt->objectType, stmt->object, &relation, AccessShareLock, ObjectAddress objectAddress = get_object_address(stmt->objectType, stmt->object,
missing_ok); &relation, AccessShareLock,
missing_ok);
ObjectAddress *objectAddressCopy = palloc0(sizeof(ObjectAddress));
*objectAddressCopy = objectAddress;
return list_make1(objectAddressCopy);
} }
@ -843,16 +849,20 @@ AlterTextSearchConfigurationOwnerObjectAddress(Node *node, bool missing_ok)
* SEARCH DICTIONARY for which the owner is changed. Optionally errors if the * SEARCH DICTIONARY for which the owner is changed. Optionally errors if the
* configuration does not exist based on the missing_ok flag passed in by the caller. * configuration does not exist based on the missing_ok flag passed in by the caller.
*/ */
ObjectAddress List *
AlterTextSearchDictOwnerObjectAddress(Node *node, bool missing_ok) AlterTextSearchDictOwnerObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
Relation relation = NULL; Relation relation = NULL;
Assert(stmt->objectType == OBJECT_TSDICTIONARY); Assert(stmt->objectType == OBJECT_TSDICTIONARY);
ObjectAddress objectAddress = get_object_address(stmt->objectType, stmt->object,
&relation, AccessShareLock,
missing_ok);
ObjectAddress *objectAddressCopy = palloc0(sizeof(ObjectAddress));
*objectAddressCopy = objectAddress;
return get_object_address(stmt->objectType, stmt->object, &relation, AccessShareLock, return list_make1(objectAddressCopy);
missing_ok);
} }

View File

@ -241,7 +241,7 @@ PostprocessCreateTriggerStmt(Node *node, const char *queryString)
* Never returns NULL, but the objid in the address can be invalid if missingOk * Never returns NULL, but the objid in the address can be invalid if missingOk
* was set to true. * was set to true.
*/ */
ObjectAddress List *
CreateTriggerStmtObjectAddress(Node *node, bool missingOk) CreateTriggerStmtObjectAddress(Node *node, bool missingOk)
{ {
CreateTrigStmt *createTriggerStmt = castNode(CreateTrigStmt, node); CreateTrigStmt *createTriggerStmt = castNode(CreateTrigStmt, node);
@ -260,9 +260,9 @@ CreateTriggerStmtObjectAddress(Node *node, bool missingOk)
triggerName, relationName))); triggerName, relationName)));
} }
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TriggerRelationId, triggerId); ObjectAddressSet(*address, TriggerRelationId, triggerId);
return address; return list_make1(address);
} }

View File

@ -300,16 +300,16 @@ EnumValsList(Oid typeOid)
* Never returns NULL, but the objid in the address could be invalid if missing_ok was set * Never returns NULL, but the objid in the address could be invalid if missing_ok was set
* to true. * to true.
*/ */
ObjectAddress List *
CompositeTypeStmtObjectAddress(Node *node, bool missing_ok) CompositeTypeStmtObjectAddress(Node *node, bool missing_ok)
{ {
CompositeTypeStmt *stmt = castNode(CompositeTypeStmt, node); CompositeTypeStmt *stmt = castNode(CompositeTypeStmt, node);
TypeName *typeName = MakeTypeNameFromRangeVar(stmt->typevar); TypeName *typeName = MakeTypeNameFromRangeVar(stmt->typevar);
Oid typeOid = LookupNonAssociatedArrayTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupNonAssociatedArrayTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -321,16 +321,16 @@ CompositeTypeStmtObjectAddress(Node *node, bool missing_ok)
* Never returns NULL, but the objid in the address could be invalid if missing_ok was set * Never returns NULL, but the objid in the address could be invalid if missing_ok was set
* to true. * to true.
*/ */
ObjectAddress List *
CreateEnumStmtObjectAddress(Node *node, bool missing_ok) CreateEnumStmtObjectAddress(Node *node, bool missing_ok)
{ {
CreateEnumStmt *stmt = castNode(CreateEnumStmt, node); CreateEnumStmt *stmt = castNode(CreateEnumStmt, node);
TypeName *typeName = makeTypeNameFromNameList(stmt->typeName); TypeName *typeName = makeTypeNameFromNameList(stmt->typeName);
Oid typeOid = LookupNonAssociatedArrayTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupNonAssociatedArrayTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -342,7 +342,7 @@ CreateEnumStmtObjectAddress(Node *node, bool missing_ok)
* Never returns NULL, but the objid in the address could be invalid if missing_ok was set * Never returns NULL, but the objid in the address could be invalid if missing_ok was set
* to true. * to true.
*/ */
ObjectAddress List *
AlterTypeStmtObjectAddress(Node *node, bool missing_ok) AlterTypeStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterTableStmt *stmt = castNode(AlterTableStmt, node); AlterTableStmt *stmt = castNode(AlterTableStmt, node);
@ -350,10 +350,10 @@ AlterTypeStmtObjectAddress(Node *node, bool missing_ok)
TypeName *typeName = MakeTypeNameFromRangeVar(stmt->relation); TypeName *typeName = MakeTypeNameFromRangeVar(stmt->relation);
Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -361,16 +361,16 @@ AlterTypeStmtObjectAddress(Node *node, bool missing_ok)
* AlterEnumStmtObjectAddress return the ObjectAddress of the enum type that is the * AlterEnumStmtObjectAddress return the ObjectAddress of the enum type that is the
* object of the AlterEnumStmt. Errors is missing_ok is false. * object of the AlterEnumStmt. Errors is missing_ok is false.
*/ */
ObjectAddress List *
AlterEnumStmtObjectAddress(Node *node, bool missing_ok) AlterEnumStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterEnumStmt *stmt = castNode(AlterEnumStmt, node); AlterEnumStmt *stmt = castNode(AlterEnumStmt, node);
TypeName *typeName = makeTypeNameFromNameList(stmt->typeName); TypeName *typeName = makeTypeNameFromNameList(stmt->typeName);
Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -378,7 +378,7 @@ AlterEnumStmtObjectAddress(Node *node, bool missing_ok)
* RenameTypeStmtObjectAddress returns the ObjectAddress of the type that is the object * RenameTypeStmtObjectAddress returns the ObjectAddress of the type that is the object
* of the RenameStmt. Errors if missing_ok is false. * of the RenameStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
RenameTypeStmtObjectAddress(Node *node, bool missing_ok) RenameTypeStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -386,10 +386,10 @@ RenameTypeStmtObjectAddress(Node *node, bool missing_ok)
TypeName *typeName = makeTypeNameFromNameList((List *) stmt->object); TypeName *typeName = makeTypeNameFromNameList((List *) stmt->object);
Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -402,7 +402,7 @@ RenameTypeStmtObjectAddress(Node *node, bool missing_ok)
* new schema. Errors if missing_ok is false and the type cannot be found in either of the * new schema. Errors if missing_ok is false and the type cannot be found in either of the
* schemas. * schemas.
*/ */
ObjectAddress List *
AlterTypeSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterTypeSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -447,10 +447,10 @@ AlterTypeSchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -462,7 +462,7 @@ AlterTypeSchemaStmtObjectAddress(Node *node, bool missing_ok)
* changed as Attributes are not distributed on their own but as a side effect of the * changed as Attributes are not distributed on their own but as a side effect of the
* whole type distribution. * whole type distribution.
*/ */
ObjectAddress List *
RenameTypeAttributeStmtObjectAddress(Node *node, bool missing_ok) RenameTypeAttributeStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -471,10 +471,10 @@ RenameTypeAttributeStmtObjectAddress(Node *node, bool missing_ok)
TypeName *typeName = MakeTypeNameFromRangeVar(stmt->relation); TypeName *typeName = MakeTypeNameFromRangeVar(stmt->relation);
Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }
@ -482,7 +482,7 @@ RenameTypeAttributeStmtObjectAddress(Node *node, bool missing_ok)
* AlterTypeOwnerObjectAddress returns the ObjectAddress of the type that is the object * AlterTypeOwnerObjectAddress returns the ObjectAddress of the type that is the object
* of the AlterOwnerStmt. Errors if missing_ok is false. * of the AlterOwnerStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
AlterTypeOwnerObjectAddress(Node *node, bool missing_ok) AlterTypeOwnerObjectAddress(Node *node, bool missing_ok)
{ {
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node); AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
@ -490,10 +490,10 @@ AlterTypeOwnerObjectAddress(Node *node, bool missing_ok)
TypeName *typeName = makeTypeNameFromNameList((List *) stmt->object); TypeName *typeName = makeTypeNameFromNameList((List *) stmt->object);
Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok); Oid typeOid = LookupTypeNameOid(NULL, typeName, missing_ok);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(address, TypeRelationId, typeOid); ObjectAddressSet(*address, TypeRelationId, typeOid);
return address; return list_make1(address);
} }

View File

@ -152,17 +152,17 @@ PostprocessViewStmt(Node *node, const char *queryString)
* ViewStmtObjectAddress returns the ObjectAddress for the subject of the * ViewStmtObjectAddress returns the ObjectAddress for the subject of the
* CREATE [OR REPLACE] VIEW statement. * CREATE [OR REPLACE] VIEW statement.
*/ */
ObjectAddress List *
ViewStmtObjectAddress(Node *node, bool missing_ok) ViewStmtObjectAddress(Node *node, bool missing_ok)
{ {
ViewStmt *stmt = castNode(ViewStmt, node); ViewStmt *stmt = castNode(ViewStmt, node);
Oid viewOid = RangeVarGetRelid(stmt->view, NoLock, missing_ok); Oid viewOid = RangeVarGetRelid(stmt->view, NoLock, missing_ok);
ObjectAddress viewAddress = { 0 }; ObjectAddress *viewAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(viewAddress, RelationRelationId, viewOid); ObjectAddressSet(*viewAddress, RelationRelationId, viewOid);
return viewAddress; return list_make1(viewAddress);
} }
@ -520,16 +520,16 @@ PostprocessAlterViewStmt(Node *node, const char *queryString)
* AlterViewStmtObjectAddress returns the ObjectAddress for the subject of the * AlterViewStmtObjectAddress returns the ObjectAddress for the subject of the
* ALTER VIEW statement. * ALTER VIEW statement.
*/ */
ObjectAddress List *
AlterViewStmtObjectAddress(Node *node, bool missing_ok) AlterViewStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterTableStmt *stmt = castNode(AlterTableStmt, node); AlterTableStmt *stmt = castNode(AlterTableStmt, node);
Oid viewOid = RangeVarGetRelid(stmt->relation, NoLock, missing_ok); Oid viewOid = RangeVarGetRelid(stmt->relation, NoLock, missing_ok);
ObjectAddress viewAddress = { 0 }; ObjectAddress *viewAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(viewAddress, RelationRelationId, viewOid); ObjectAddressSet(*viewAddress, RelationRelationId, viewOid);
return viewAddress; return list_make1(viewAddress);
} }
@ -572,17 +572,17 @@ PreprocessRenameViewStmt(Node *node, const char *queryString,
* RenameViewStmtObjectAddress returns the ObjectAddress of the view that is the object * RenameViewStmtObjectAddress returns the ObjectAddress of the view that is the object
* of the RenameStmt. Errors if missing_ok is false. * of the RenameStmt. Errors if missing_ok is false.
*/ */
ObjectAddress List *
RenameViewStmtObjectAddress(Node *node, bool missing_ok) RenameViewStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
Oid viewOid = RangeVarGetRelid(stmt->relation, NoLock, missing_ok); Oid viewOid = RangeVarGetRelid(stmt->relation, NoLock, missing_ok);
ObjectAddress viewAddress = { 0 }; ObjectAddress *viewAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(viewAddress, RelationRelationId, viewOid); ObjectAddressSet(*viewAddress, RelationRelationId, viewOid);
return viewAddress; return list_make1(viewAddress);
} }
@ -648,7 +648,7 @@ PostprocessAlterViewSchemaStmt(Node *node, const char *queryString)
* AlterViewSchemaStmtObjectAddress returns the ObjectAddress of the view that is the object * AlterViewSchemaStmtObjectAddress returns the ObjectAddress of the view that is the object
* of the alter schema statement. * of the alter schema statement.
*/ */
ObjectAddress List *
AlterViewSchemaStmtObjectAddress(Node *node, bool missing_ok) AlterViewSchemaStmtObjectAddress(Node *node, bool missing_ok)
{ {
AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node); AlterObjectSchemaStmt *stmt = castNode(AlterObjectSchemaStmt, node);
@ -676,10 +676,10 @@ AlterViewSchemaStmtObjectAddress(Node *node, bool missing_ok)
} }
} }
ObjectAddress viewAddress = { 0 }; ObjectAddress *viewAddress = palloc0(sizeof(ObjectAddress));
ObjectAddressSet(viewAddress, RelationRelationId, viewOid); ObjectAddressSet(*viewAddress, RelationRelationId, viewOid);
return viewAddress; return list_make1(viewAddress);
} }

View File

@ -33,11 +33,23 @@ GetObjectAddressFromParseTree(Node *parseTree, bool missing_ok)
ereport(ERROR, (errmsg("unsupported statement to get object address for"))); ereport(ERROR, (errmsg("unsupported statement to get object address for")));
} }
return ops->address(parseTree, missing_ok); List *objectAddresses = ops->address(parseTree, missing_ok);
if (list_length(objectAddresses) > 1)
{
ereport(ERROR, (errmsg(
"citus does not support multiple object addresses in GetObjectAddressFromParseTree")));
}
Assert(list_length(objectAddresses) == 1);
ObjectAddress *objectAddress = linitial(objectAddresses);
return *objectAddress;
} }
ObjectAddress List *
RenameAttributeStmtObjectAddress(Node *node, bool missing_ok) RenameAttributeStmtObjectAddress(Node *node, bool missing_ok)
{ {
RenameStmt *stmt = castNode(RenameStmt, node); RenameStmt *stmt = castNode(RenameStmt, node);
@ -67,11 +79,11 @@ RenameAttributeStmtObjectAddress(Node *node, bool missing_ok)
* Never returns NULL, but the objid in the address could be invalid if missing_ok was set * Never returns NULL, but the objid in the address could be invalid if missing_ok was set
* to true. * to true.
*/ */
ObjectAddress List *
CreateExtensionStmtObjectAddress(Node *node, bool missing_ok) CreateExtensionStmtObjectAddress(Node *node, bool missing_ok)
{ {
CreateExtensionStmt *stmt = castNode(CreateExtensionStmt, node); CreateExtensionStmt *stmt = castNode(CreateExtensionStmt, node);
ObjectAddress address = { 0 }; ObjectAddress *address = palloc0(sizeof(ObjectAddress));
const char *extensionName = stmt->extname; const char *extensionName = stmt->extname;
@ -85,7 +97,7 @@ CreateExtensionStmtObjectAddress(Node *node, bool missing_ok)
extensionName))); extensionName)));
} }
ObjectAddressSet(address, ExtensionRelationId, extensionoid); ObjectAddressSet(*address, ExtensionRelationId, extensionoid);
return address; return list_make1(address);
} }

View File

@ -63,7 +63,7 @@ typedef struct DistributeObjectOps
void (*qualify)(Node *); void (*qualify)(Node *);
List * (*preprocess)(Node *, const char *, ProcessUtilityContext); List * (*preprocess)(Node *, const char *, ProcessUtilityContext);
List * (*postprocess)(Node *, const char *); List * (*postprocess)(Node *, const char *);
ObjectAddress (*address)(Node *, bool); List * (*address)(Node *, bool);
bool markDistributed; bool markDistributed;
/* fields used by common implementations, omitted for specialized implementations */ /* fields used by common implementations, omitted for specialized implementations */
@ -159,24 +159,24 @@ extern bool CallDistributedProcedureRemotely(CallStmt *callStmt, DestReceiver *d
/* collation.c - forward declarations */ /* collation.c - forward declarations */
extern char * CreateCollationDDL(Oid collationId); extern char * CreateCollationDDL(Oid collationId);
extern List * CreateCollationDDLsIdempotent(Oid collationId); extern List * CreateCollationDDLsIdempotent(Oid collationId);
extern ObjectAddress AlterCollationOwnerObjectAddress(Node *stmt, bool missing_ok); extern List * AlterCollationOwnerObjectAddress(Node *stmt, bool missing_ok);
extern ObjectAddress RenameCollationStmtObjectAddress(Node *stmt, bool missing_ok); extern List * RenameCollationStmtObjectAddress(Node *stmt, bool missing_ok);
extern ObjectAddress AlterCollationSchemaStmtObjectAddress(Node *stmt, extern List * AlterCollationSchemaStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern char * GenerateBackupNameForCollationCollision(const ObjectAddress *address); extern char * GenerateBackupNameForCollationCollision(const ObjectAddress *address);
extern ObjectAddress DefineCollationStmtObjectAddress(Node *stmt, bool missing_ok); extern List * DefineCollationStmtObjectAddress(Node *stmt, bool missing_ok);
/* database.c - forward declarations */ /* database.c - forward declarations */
extern ObjectAddress AlterDatabaseOwnerObjectAddress(Node *node, bool missing_ok); extern List * AlterDatabaseOwnerObjectAddress(Node *node, bool missing_ok);
extern List * DatabaseOwnerDDLCommands(const ObjectAddress *address); extern List * DatabaseOwnerDDLCommands(const ObjectAddress *address);
/* domain.c - forward declarations */ /* domain.c - forward declarations */
extern ObjectAddress CreateDomainStmtObjectAddress(Node *node, bool missing_ok); extern List * CreateDomainStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress AlterDomainStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterDomainStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress DomainRenameConstraintStmtObjectAddress(Node *node, extern List * DomainRenameConstraintStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterDomainOwnerStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterDomainOwnerStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress RenameDomainStmtObjectAddress(Node *node, bool missing_ok); extern List * RenameDomainStmtObjectAddress(Node *node, bool missing_ok);
extern CreateDomainStmt * RecreateDomainStmt(Oid domainOid); extern CreateDomainStmt * RecreateDomainStmt(Oid domainOid);
extern Oid get_constraint_typid(Oid conoid); extern Oid get_constraint_typid(Oid conoid);
@ -208,10 +208,10 @@ extern List * PreprocessAlterExtensionContentsStmt(Node *node,
ProcessUtilityContext ProcessUtilityContext
processUtilityContext); processUtilityContext);
extern List * CreateExtensionDDLCommand(const ObjectAddress *extensionAddress); extern List * CreateExtensionDDLCommand(const ObjectAddress *extensionAddress);
extern ObjectAddress AlterExtensionSchemaStmtObjectAddress(Node *stmt, extern List * AlterExtensionSchemaStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterExtensionUpdateStmtObjectAddress(Node *stmt, extern List * AlterExtensionUpdateStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern void CreateExtensionWithVersion(char *extname, char *extVersion); extern void CreateExtensionWithVersion(char *extname, char *extVersion);
extern void AlterExtensionUpdateStmt(char *extname, char *extVersion); extern void AlterExtensionUpdateStmt(char *extname, char *extVersion);
extern int GetExtensionVersionNumber(char *extVersion); extern int GetExtensionVersionNumber(char *extVersion);
@ -263,11 +263,11 @@ extern Acl * GetPrivilegesForFDW(Oid FDWOid);
extern List * PreprocessGrantOnForeignServerStmt(Node *node, const char *queryString, extern List * PreprocessGrantOnForeignServerStmt(Node *node, const char *queryString,
ProcessUtilityContext ProcessUtilityContext
processUtilityContext); processUtilityContext);
extern ObjectAddress CreateForeignServerStmtObjectAddress(Node *node, bool missing_ok); extern List * CreateForeignServerStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress AlterForeignServerStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterForeignServerStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress RenameForeignServerStmtObjectAddress(Node *node, bool missing_ok); extern List * RenameForeignServerStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress AlterForeignServerOwnerStmtObjectAddress(Node *node, bool extern List * AlterForeignServerOwnerStmtObjectAddress(Node *node, bool
missing_ok); missing_ok);
extern List * GetForeignServerCreateDDLCommand(Oid serverId); extern List * GetForeignServerCreateDDLCommand(Oid serverId);
@ -282,26 +282,26 @@ extern List * PreprocessCreateFunctionStmt(Node *stmt, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PostprocessCreateFunctionStmt(Node *stmt, extern List * PostprocessCreateFunctionStmt(Node *stmt,
const char *queryString); const char *queryString);
extern ObjectAddress CreateFunctionStmtObjectAddress(Node *stmt, extern List * CreateFunctionStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern ObjectAddress DefineAggregateStmtObjectAddress(Node *stmt, extern List * DefineAggregateStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern List * PreprocessAlterFunctionStmt(Node *stmt, const char *queryString, extern List * PreprocessAlterFunctionStmt(Node *stmt, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern ObjectAddress AlterFunctionStmtObjectAddress(Node *stmt, extern List * AlterFunctionStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern ObjectAddress RenameFunctionStmtObjectAddress(Node *stmt, extern List * RenameFunctionStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterFunctionOwnerObjectAddress(Node *stmt, extern List * AlterFunctionOwnerObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterFunctionSchemaStmtObjectAddress(Node *stmt, extern List * AlterFunctionSchemaStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern List * PreprocessAlterFunctionDependsStmt(Node *stmt, extern List * PreprocessAlterFunctionDependsStmt(Node *stmt,
const char *queryString, const char *queryString,
ProcessUtilityContext ProcessUtilityContext
processUtilityContext); processUtilityContext);
extern ObjectAddress AlterFunctionDependsStmtObjectAddress(Node *stmt, extern List * AlterFunctionDependsStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern List * PreprocessGrantOnFunctionStmt(Node *node, const char *queryString, extern List * PreprocessGrantOnFunctionStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PostprocessGrantOnFunctionStmt(Node *node, const char *queryString); extern List * PostprocessGrantOnFunctionStmt(Node *node, const char *queryString);
@ -340,7 +340,7 @@ extern List * ExecuteFunctionOnEachTableIndex(Oid relationId, PGIndexProcessor
extern bool IsReindexWithParam_compat(ReindexStmt *stmt, char *paramName); extern bool IsReindexWithParam_compat(ReindexStmt *stmt, char *paramName);
/* objectaddress.c - forward declarations */ /* objectaddress.c - forward declarations */
extern ObjectAddress CreateExtensionStmtObjectAddress(Node *stmt, bool missing_ok); extern List * CreateExtensionStmtObjectAddress(Node *stmt, bool missing_ok);
/* policy.c - forward declarations */ /* policy.c - forward declarations */
@ -376,10 +376,10 @@ extern List * PostprocessAlterRoleStmt(Node *stmt, const char *queryString);
extern List * PreprocessAlterRoleSetStmt(Node *stmt, const char *queryString, extern List * PreprocessAlterRoleSetStmt(Node *stmt, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * GenerateAlterRoleSetCommandForRole(Oid roleid); extern List * GenerateAlterRoleSetCommandForRole(Oid roleid);
extern ObjectAddress AlterRoleStmtObjectAddress(Node *node, extern List * AlterRoleStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterRoleSetStmtObjectAddress(Node *node, extern List * AlterRoleSetStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern List * PreprocessCreateRoleStmt(Node *stmt, const char *queryString, extern List * PreprocessCreateRoleStmt(Node *stmt, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PreprocessDropRoleStmt(Node *stmt, const char *queryString, extern List * PreprocessDropRoleStmt(Node *stmt, const char *queryString,
@ -388,7 +388,7 @@ extern List * PreprocessGrantRoleStmt(Node *stmt, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PostprocessGrantRoleStmt(Node *stmt, const char *queryString); extern List * PostprocessGrantRoleStmt(Node *stmt, const char *queryString);
extern List * GenerateCreateOrAlterRoleCommand(Oid roleOid); extern List * GenerateCreateOrAlterRoleCommand(Oid roleOid);
ObjectAddress CreateRoleStmtObjectAddress(Node *stmt, bool missing_ok); extern List * CreateRoleStmtObjectAddress(Node *stmt, bool missing_ok);
extern void UnmarkRolesDistributed(List *roles); extern void UnmarkRolesDistributed(List *roles);
extern List * FilterDistributedRoles(List *roles); extern List * FilterDistributedRoles(List *roles);
@ -402,8 +402,8 @@ extern List * PreprocessAlterObjectSchemaStmt(Node *alterObjectSchemaStmt,
const char *alterObjectSchemaCommand); const char *alterObjectSchemaCommand);
extern List * PreprocessGrantOnSchemaStmt(Node *node, const char *queryString, extern List * PreprocessGrantOnSchemaStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern ObjectAddress CreateSchemaStmtObjectAddress(Node *node, bool missing_ok); extern List * CreateSchemaStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress AlterSchemaRenameStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterSchemaRenameStmtObjectAddress(Node *node, bool missing_ok);
/* sequence.c - forward declarations */ /* sequence.c - forward declarations */
extern List * PreprocessAlterSequenceStmt(Node *node, const char *queryString, extern List * PreprocessAlterSequenceStmt(Node *node, const char *queryString,
@ -422,10 +422,10 @@ extern List * PreprocessRenameSequenceStmt(Node *node, const char *queryString,
extern List * PreprocessGrantOnSequenceStmt(Node *node, const char *queryString, extern List * PreprocessGrantOnSequenceStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PostprocessGrantOnSequenceStmt(Node *node, const char *queryString); extern List * PostprocessGrantOnSequenceStmt(Node *node, const char *queryString);
extern ObjectAddress AlterSequenceStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterSequenceStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress AlterSequenceSchemaStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterSequenceSchemaStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress AlterSequenceOwnerStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterSequenceOwnerStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress RenameSequenceStmtObjectAddress(Node *node, bool missing_ok); extern List * RenameSequenceStmtObjectAddress(Node *node, bool missing_ok);
extern void ErrorIfUnsupportedSeqStmt(CreateSeqStmt *createSeqStmt); extern void ErrorIfUnsupportedSeqStmt(CreateSeqStmt *createSeqStmt);
extern void ErrorIfDistributedAlterSeqOwnedBy(AlterSeqStmt *alterSeqStmt); extern void ErrorIfDistributedAlterSeqOwnedBy(AlterSeqStmt *alterSeqStmt);
extern char * GenerateBackupNameForSequenceCollision(const ObjectAddress *address); extern char * GenerateBackupNameForSequenceCollision(const ObjectAddress *address);
@ -436,7 +436,7 @@ extern void RenameExistingSequenceWithDifferentTypeIfExists(RangeVar *sequence,
extern List * PreprocessCreateStatisticsStmt(Node *node, const char *queryString, extern List * PreprocessCreateStatisticsStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PostprocessCreateStatisticsStmt(Node *node, const char *queryString); extern List * PostprocessCreateStatisticsStmt(Node *node, const char *queryString);
extern ObjectAddress CreateStatisticsStmtObjectAddress(Node *node, bool missingOk); extern List * CreateStatisticsStmtObjectAddress(Node *node, bool missingOk);
extern List * PreprocessDropStatisticsStmt(Node *node, const char *queryString, extern List * PreprocessDropStatisticsStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PreprocessAlterStatisticsRenameStmt(Node *node, const char *queryString, extern List * PreprocessAlterStatisticsRenameStmt(Node *node, const char *queryString,
@ -446,7 +446,7 @@ extern List * PreprocessAlterStatisticsSchemaStmt(Node *node, const char *queryS
ProcessUtilityContext ProcessUtilityContext
processUtilityContext); processUtilityContext);
extern List * PostprocessAlterStatisticsSchemaStmt(Node *node, const char *queryString); extern List * PostprocessAlterStatisticsSchemaStmt(Node *node, const char *queryString);
extern ObjectAddress AlterStatisticsSchemaStmtObjectAddress(Node *node, bool missingOk); extern List * AlterStatisticsSchemaStmtObjectAddress(Node *node, bool missingOk);
extern List * PreprocessAlterStatisticsStmt(Node *node, const char *queryString, extern List * PreprocessAlterStatisticsStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PreprocessAlterStatisticsOwnerStmt(Node *node, const char *queryString, extern List * PreprocessAlterStatisticsOwnerStmt(Node *node, const char *queryString,
@ -487,8 +487,8 @@ extern void ErrorUnsupportedAlterTableAddColumn(Oid relationId, AlterTableCmd *c
extern void ErrorIfUnsupportedConstraint(Relation relation, char distributionMethod, extern void ErrorIfUnsupportedConstraint(Relation relation, char distributionMethod,
char referencingReplicationModel, char referencingReplicationModel,
Var *distributionColumn, uint32 colocationId); Var *distributionColumn, uint32 colocationId);
extern ObjectAddress AlterTableSchemaStmtObjectAddress(Node *stmt, extern List * AlterTableSchemaStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern List * MakeNameListFromRangeVar(const RangeVar *rel); extern List * MakeNameListFromRangeVar(const RangeVar *rel);
extern Oid GetSequenceOid(Oid relationId, AttrNumber attnum); extern Oid GetSequenceOid(Oid relationId, AttrNumber attnum);
extern bool ConstrTypeUsesIndex(ConstrType constrType); extern bool ConstrTypeUsesIndex(ConstrType constrType);
@ -499,30 +499,30 @@ extern List * GetCreateTextSearchConfigStatements(const ObjectAddress *address);
extern List * GetCreateTextSearchDictionaryStatements(const ObjectAddress *address); extern List * GetCreateTextSearchDictionaryStatements(const ObjectAddress *address);
extern List * CreateTextSearchConfigDDLCommandsIdempotent(const ObjectAddress *address); extern List * CreateTextSearchConfigDDLCommandsIdempotent(const ObjectAddress *address);
extern List * CreateTextSearchDictDDLCommandsIdempotent(const ObjectAddress *address); extern List * CreateTextSearchDictDDLCommandsIdempotent(const ObjectAddress *address);
extern ObjectAddress CreateTextSearchConfigurationObjectAddress(Node *node, extern List * CreateTextSearchConfigurationObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress CreateTextSearchDictObjectAddress(Node *node, extern List * CreateTextSearchDictObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress RenameTextSearchConfigurationStmtObjectAddress(Node *node, extern List * RenameTextSearchConfigurationStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress RenameTextSearchDictionaryStmtObjectAddress(Node *node, extern List * RenameTextSearchDictionaryStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterTextSearchConfigurationStmtObjectAddress(Node *node, extern List * AlterTextSearchConfigurationStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterTextSearchDictionaryStmtObjectAddress(Node *node, extern List * AlterTextSearchDictionaryStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterTextSearchConfigurationSchemaStmtObjectAddress(Node *node, extern List * AlterTextSearchConfigurationSchemaStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterTextSearchDictionarySchemaStmtObjectAddress(Node *node, extern List * AlterTextSearchDictionarySchemaStmtObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress TextSearchConfigurationCommentObjectAddress(Node *node, extern List * TextSearchConfigurationCommentObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress TextSearchDictCommentObjectAddress(Node *node, extern List * TextSearchDictCommentObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterTextSearchConfigurationOwnerObjectAddress(Node *node, extern List * AlterTextSearchConfigurationOwnerObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterTextSearchDictOwnerObjectAddress(Node *node, extern List * AlterTextSearchDictOwnerObjectAddress(Node *node,
bool missing_ok); bool missing_ok);
extern char * GenerateBackupNameForTextSearchConfiguration(const ObjectAddress *address); extern char * GenerateBackupNameForTextSearchConfiguration(const ObjectAddress *address);
extern char * GenerateBackupNameForTextSearchDict(const ObjectAddress *address); extern char * GenerateBackupNameForTextSearchDict(const ObjectAddress *address);
extern List * get_ts_config_namelist(Oid tsconfigOid); extern List * get_ts_config_namelist(Oid tsconfigOid);
@ -535,16 +535,16 @@ extern List * PreprocessRenameTypeAttributeStmt(Node *stmt, const char *queryStr
ProcessUtilityContext ProcessUtilityContext
processUtilityContext); processUtilityContext);
extern Node * CreateTypeStmtByObjectAddress(const ObjectAddress *address); extern Node * CreateTypeStmtByObjectAddress(const ObjectAddress *address);
extern ObjectAddress CompositeTypeStmtObjectAddress(Node *stmt, bool missing_ok); extern List * CompositeTypeStmtObjectAddress(Node *stmt, bool missing_ok);
extern ObjectAddress CreateEnumStmtObjectAddress(Node *stmt, bool missing_ok); extern List * CreateEnumStmtObjectAddress(Node *stmt, bool missing_ok);
extern ObjectAddress AlterTypeStmtObjectAddress(Node *stmt, bool missing_ok); extern List * AlterTypeStmtObjectAddress(Node *stmt, bool missing_ok);
extern ObjectAddress AlterEnumStmtObjectAddress(Node *stmt, bool missing_ok); extern List * AlterEnumStmtObjectAddress(Node *stmt, bool missing_ok);
extern ObjectAddress RenameTypeStmtObjectAddress(Node *stmt, bool missing_ok); extern List * RenameTypeStmtObjectAddress(Node *stmt, bool missing_ok);
extern ObjectAddress AlterTypeSchemaStmtObjectAddress(Node *stmt, extern List * AlterTypeSchemaStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern ObjectAddress RenameTypeAttributeStmtObjectAddress(Node *stmt, extern List * RenameTypeAttributeStmtObjectAddress(Node *stmt,
bool missing_ok); bool missing_ok);
extern ObjectAddress AlterTypeOwnerObjectAddress(Node *stmt, bool missing_ok); extern List * AlterTypeOwnerObjectAddress(Node *stmt, bool missing_ok);
extern List * CreateTypeDDLCommandsIdempotent(const ObjectAddress *typeAddress); extern List * CreateTypeDDLCommandsIdempotent(const ObjectAddress *typeAddress);
extern char * GenerateBackupNameForTypeCollision(const ObjectAddress *address); extern char * GenerateBackupNameForTypeCollision(const ObjectAddress *address);
@ -565,8 +565,8 @@ extern List * PostprocessVacuumStmt(Node *node, const char *vacuumCommand);
extern List * PreprocessViewStmt(Node *node, const char *queryString, extern List * PreprocessViewStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PostprocessViewStmt(Node *node, const char *queryString); extern List * PostprocessViewStmt(Node *node, const char *queryString);
extern ObjectAddress ViewStmtObjectAddress(Node *node, bool missing_ok); extern List * ViewStmtObjectAddress(Node *node, bool missing_ok);
extern ObjectAddress AlterViewStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterViewStmtObjectAddress(Node *node, bool missing_ok);
extern List * PreprocessDropViewStmt(Node *node, const char *queryString, extern List * PreprocessDropViewStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern char * CreateViewDDLCommand(Oid viewOid); extern char * CreateViewDDLCommand(Oid viewOid);
@ -582,11 +582,11 @@ extern List * PreprocessAlterViewStmt(Node *node, const char *queryString,
extern List * PostprocessAlterViewStmt(Node *node, const char *queryString); extern List * PostprocessAlterViewStmt(Node *node, const char *queryString);
extern List * PreprocessRenameViewStmt(Node *node, const char *queryString, extern List * PreprocessRenameViewStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern ObjectAddress RenameViewStmtObjectAddress(Node *node, bool missing_ok); extern List * RenameViewStmtObjectAddress(Node *node, bool missing_ok);
extern List * PreprocessAlterViewSchemaStmt(Node *node, const char *queryString, extern List * PreprocessAlterViewSchemaStmt(Node *node, const char *queryString,
ProcessUtilityContext processUtilityContext); ProcessUtilityContext processUtilityContext);
extern List * PostprocessAlterViewSchemaStmt(Node *node, const char *queryString); extern List * PostprocessAlterViewSchemaStmt(Node *node, const char *queryString);
extern ObjectAddress AlterViewSchemaStmtObjectAddress(Node *node, bool missing_ok); extern List * AlterViewSchemaStmtObjectAddress(Node *node, bool missing_ok);
extern bool IsViewRenameStmt(RenameStmt *renameStmt); extern bool IsViewRenameStmt(RenameStmt *renameStmt);
/* trigger.c - forward declarations */ /* trigger.c - forward declarations */
@ -594,7 +594,7 @@ extern List * GetExplicitTriggerCommandList(Oid relationId);
extern HeapTuple GetTriggerTupleById(Oid triggerId, bool missingOk); extern HeapTuple GetTriggerTupleById(Oid triggerId, bool missingOk);
extern List * GetExplicitTriggerIdList(Oid relationId); extern List * GetExplicitTriggerIdList(Oid relationId);
extern List * PostprocessCreateTriggerStmt(Node *node, const char *queryString); extern List * PostprocessCreateTriggerStmt(Node *node, const char *queryString);
extern ObjectAddress CreateTriggerStmtObjectAddress(Node *node, bool missingOk); extern List * CreateTriggerStmtObjectAddress(Node *node, bool missingOk);
extern void CreateTriggerEventExtendNames(CreateTrigStmt *createTriggerStmt, extern void CreateTriggerEventExtendNames(CreateTrigStmt *createTriggerStmt,
char *schemaName, uint64 shardId); char *schemaName, uint64 shardId);
extern List * PostprocessAlterTriggerRenameStmt(Node *node, const char *queryString); extern List * PostprocessAlterTriggerRenameStmt(Node *node, const char *queryString);

View File

@ -149,7 +149,7 @@ extern char * GetTypeNamespaceNameByNameList(List *names);
extern Oid TypeOidGetNamespaceOid(Oid typeOid); extern Oid TypeOidGetNamespaceOid(Oid typeOid);
extern ObjectAddress GetObjectAddressFromParseTree(Node *parseTree, bool missing_ok); extern ObjectAddress GetObjectAddressFromParseTree(Node *parseTree, bool missing_ok);
extern ObjectAddress RenameAttributeStmtObjectAddress(Node *stmt, bool missing_ok); extern List * RenameAttributeStmtObjectAddress(Node *stmt, bool missing_ok);
/* forward declarations for deparse_view_stmts.c */ /* forward declarations for deparse_view_stmts.c */
extern void QualifyDropViewStmt(Node *node); extern void QualifyDropViewStmt(Node *node);