#include "catalog/heap.h"
#include "catalog/pg_am.h"
#include "catalog/pg_attribute.h"
+#include "catalog/pg_authid.h"
#include "catalog/pg_class.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_tablespace.h"
PG_CATALOG_NAMESPACE,
$3 ? GLOBALTABLESPACE_OID : 0,
$6,
+ BOOTSTRAP_SUPERUSERID,
tupdesc,
RELKIND_RELATION,
$3,
static void AddNewRelationTuple(Relation pg_class_desc,
Relation new_rel_desc,
Oid new_rel_oid, Oid new_type_oid,
+ Oid relowner,
char relkind);
static Oid AddNewRelationType(const char *typeName,
Oid typeNamespace,
Relation new_rel_desc,
Oid new_rel_oid,
Oid new_type_oid,
+ Oid relowner,
char relkind)
{
Form_pg_class new_rel_reltup;
break;
}
- new_rel_reltup->relowner = GetUserId();
+ new_rel_reltup->relowner = relowner;
new_rel_reltup->reltype = new_type_oid;
new_rel_reltup->relkind = relkind;
Oid relnamespace,
Oid reltablespace,
Oid relid,
+ Oid ownerid,
TupleDesc tupdesc,
char relkind,
bool shared_relation,
new_rel_desc,
relid,
new_type_oid,
+ ownerid,
relkind);
/*
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
- recordDependencyOnOwner(RelationRelationId, relid, GetUserId());
+ recordDependencyOnOwner(RelationRelationId, relid, ownerid);
}
/*
*
* XXX should have a cleaner way to create cataloged indexes
*/
- indexRelation->rd_rel->relowner = GetUserId();
+ indexRelation->rd_rel->relowner = heapRelation->rd_rel->relowner;
indexRelation->rd_rel->relam = accessMethodObjectId;
indexRelation->rd_rel->relkind = RELKIND_INDEX;
indexRelation->rd_rel->relhasoids = false;
RelationGetNamespace(OldHeap),
NewTableSpace,
InvalidOid,
+ OldHeap->rd_rel->relowner,
tupdesc,
OldHeap->rd_rel->relkind,
OldHeap->rd_rel->relisshared,
namespaceId,
tablespaceId,
InvalidOid,
+ GetUserId(),
descriptor,
relkind,
false,
PG_TOAST_NAMESPACE,
rel->rd_rel->reltablespace,
InvalidOid,
+ rel->rd_rel->relowner,
tupdesc,
RELKIND_TOASTVALUE,
shared_relation,
namespaceId,
InvalidOid,
InvalidOid,
+ GetUserId(),
tupdesc,
RELKIND_RELATION,
false,
#include "catalog/pg_amproc.h"
#include "catalog/pg_attrdef.h"
#include "catalog/pg_attribute.h"
+#include "catalog/pg_authid.h"
#include "catalog/pg_constraint.h"
#include "catalog/pg_index.h"
#include "catalog/pg_namespace.h"
rel->rd_rel->relhasoids = rel->rd_att->tdhasoid;
rel->rd_rel->relnatts = natts;
rel->rd_rel->reltype = InvalidOid;
+ /* needed when bootstrapping: */
+ rel->rd_rel->relowner = BOOTSTRAP_SUPERUSERID;
/*
* Insert relation physical and logical identifiers (OIDs) into the
Oid relnamespace,
Oid reltablespace,
Oid relid,
+ Oid ownerid,
TupleDesc tupdesc,
char relkind,
bool shared_relation,