mirror of https://github.com/citusdata/citus.git
Add citus.copy_format OIDs to metadata cache
parent
66f9f1d6cd
commit
cbbd418af2
|
@ -122,6 +122,8 @@ typedef struct MetadataCacheData
|
||||||
Oid extraDataContainerFuncId;
|
Oid extraDataContainerFuncId;
|
||||||
Oid workerHashFunctionId;
|
Oid workerHashFunctionId;
|
||||||
Oid extensionOwner;
|
Oid extensionOwner;
|
||||||
|
Oid binaryCopyFormatId;
|
||||||
|
Oid textCopyFormatId;
|
||||||
Oid primaryNodeRoleId;
|
Oid primaryNodeRoleId;
|
||||||
Oid secondaryNodeRoleId;
|
Oid secondaryNodeRoleId;
|
||||||
Oid unavailableNodeRoleId;
|
Oid unavailableNodeRoleId;
|
||||||
|
@ -197,6 +199,7 @@ static void CachedRelationLookup(const char *relationName, Oid *cachedOid);
|
||||||
static ShardPlacement * ResolveGroupShardPlacement(
|
static ShardPlacement * ResolveGroupShardPlacement(
|
||||||
GroupShardPlacement *groupShardPlacement, ShardCacheEntry *shardEntry);
|
GroupShardPlacement *groupShardPlacement, ShardCacheEntry *shardEntry);
|
||||||
static WorkerNode * LookupNodeForGroup(uint32 groupid);
|
static WorkerNode * LookupNodeForGroup(uint32 groupid);
|
||||||
|
static Oid LookupEnumValueId(Oid typeId, char *valueName);
|
||||||
|
|
||||||
|
|
||||||
/* exports for SQL callable functions */
|
/* exports for SQL callable functions */
|
||||||
|
@ -1872,6 +1875,34 @@ CitusCopyFormatTypeId(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* return oid of the 'binary' citus_copy_format enum value */
|
||||||
|
Oid
|
||||||
|
BinaryCopyFormatId(void)
|
||||||
|
{
|
||||||
|
if (MetadataCache.binaryCopyFormatId == InvalidOid)
|
||||||
|
{
|
||||||
|
Oid copyFormatTypeId = CitusCopyFormatTypeId();
|
||||||
|
MetadataCache.binaryCopyFormatId = LookupEnumValueId(copyFormatTypeId, "binary");
|
||||||
|
}
|
||||||
|
|
||||||
|
return MetadataCache.binaryCopyFormatId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* return oid of the 'text' citus_copy_format enum value */
|
||||||
|
Oid
|
||||||
|
TextCopyFormatId(void)
|
||||||
|
{
|
||||||
|
if (MetadataCache.textCopyFormatId == InvalidOid)
|
||||||
|
{
|
||||||
|
Oid copyFormatTypeId = CitusCopyFormatTypeId();
|
||||||
|
MetadataCache.textCopyFormatId = LookupEnumValueId(copyFormatTypeId, "text");
|
||||||
|
}
|
||||||
|
|
||||||
|
return MetadataCache.textCopyFormatId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* return oid of the citus_extradata_container(internal) function */
|
/* return oid of the citus_extradata_container(internal) function */
|
||||||
Oid
|
Oid
|
||||||
CitusExtraDataContainerFuncId(void)
|
CitusExtraDataContainerFuncId(void)
|
||||||
|
@ -2040,17 +2071,27 @@ LookupNodeRoleValueId(char *valueName)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Datum nodeRoleIdDatum = ObjectIdGetDatum(nodeRoleTypId);
|
Oid valueId = LookupEnumValueId(nodeRoleTypId, valueName);
|
||||||
Datum valueDatum = CStringGetDatum(valueName);
|
|
||||||
|
|
||||||
Datum valueIdDatum = DirectFunctionCall2(enum_in, valueDatum, nodeRoleIdDatum);
|
|
||||||
|
|
||||||
Oid valueId = DatumGetObjectId(valueIdDatum);
|
|
||||||
return valueId;
|
return valueId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LookupEnumValueId looks up the OID of an enum value.
|
||||||
|
*/
|
||||||
|
static Oid
|
||||||
|
LookupEnumValueId(Oid typeId, char *valueName)
|
||||||
|
{
|
||||||
|
Datum typeIdDatum = ObjectIdGetDatum(typeId);
|
||||||
|
Datum valueDatum = CStringGetDatum(valueName);
|
||||||
|
Datum valueIdDatum = DirectFunctionCall2(enum_in, valueDatum, typeIdDatum);
|
||||||
|
Oid valueId = DatumGetObjectId(valueIdDatum);
|
||||||
|
|
||||||
|
return valueId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* return the Oid of the 'primary' nodeRole enum value */
|
/* return the Oid of the 'primary' nodeRole enum value */
|
||||||
Oid
|
Oid
|
||||||
PrimaryNodeRoleId(void)
|
PrimaryNodeRoleId(void)
|
||||||
|
|
|
@ -131,10 +131,13 @@ extern Oid CitusReadIntermediateResultFuncId(void);
|
||||||
extern Oid CitusExtraDataContainerFuncId(void);
|
extern Oid CitusExtraDataContainerFuncId(void);
|
||||||
extern Oid CitusWorkerHashFunctionId(void);
|
extern Oid CitusWorkerHashFunctionId(void);
|
||||||
|
|
||||||
/* nodeRole enum oids */
|
/* enum oids */
|
||||||
extern Oid PrimaryNodeRoleId(void);
|
extern Oid PrimaryNodeRoleId(void);
|
||||||
extern Oid SecondaryNodeRoleId(void);
|
extern Oid SecondaryNodeRoleId(void);
|
||||||
extern Oid UnavailableNodeRoleId(void);
|
extern Oid UnavailableNodeRoleId(void);
|
||||||
|
extern Oid CitusCopyFormatTypeId(void);
|
||||||
|
extern Oid TextCopyFormatId(void);
|
||||||
|
extern Oid BinaryCopyFormatId(void);
|
||||||
|
|
||||||
/* user related functions */
|
/* user related functions */
|
||||||
extern Oid CitusExtensionOwner(void);
|
extern Oid CitusExtensionOwner(void);
|
||||||
|
|
Loading…
Reference in New Issue