/* Must be superuser */ if (!superuser())
ereport(ERROR,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("permission denied to create access method \"%s\"",
stmt->amname),
errhint("Must be superuser to create an access method.")));
/* Check if name is used */
amoid = GetSysCacheOid1(AMNAME, Anum_pg_am_oid,
CStringGetDatum(stmt->amname)); if (OidIsValid(amoid))
{
ereport(ERROR,
(errcode(ERRCODE_DUPLICATE_OBJECT),
errmsg("access method \"%s\" already exists",
stmt->amname)));
}
if (amtype != '\0' &&
amform->amtype != amtype)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("access method \"%s\" is not of type %s",
NameStr(amform->amname),
get_am_type_string(amtype))));
oid = amform->oid;
ReleaseSysCache(tup);
}
if (!OidIsValid(oid) && !missing_ok)
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("access method \"%s\" does not exist", amname))); return oid;
}
/* *ConvertahandlerfunctionnametoanOid.Ifthereturntypeofthe *functiondoesn'tmatchthegivenAMtype,anerrorisraised. * *ThisfunctioneitherreturnvalidfunctionOidorthrowanerror.
*/ static Oid
lookup_am_handler_func(List *handler_name, char amtype)
{
Oid handlerOid;
Oid funcargtypes[1] = {INTERNALOID};
Oid expectedType = InvalidOid;
if (handler_name == NIL)
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_FUNCTION),
errmsg("handler function is not specified")));
/* handlers have one argument of type internal */
handlerOid = LookupFuncName(handler_name, 1, funcargtypes, false);
/* check that handler has the correct return type */ switch (amtype)
{ case AMTYPE_INDEX:
expectedType = INDEX_AM_HANDLEROID; break; case AMTYPE_TABLE:
expectedType = TABLE_AM_HANDLEROID; break; default:
elog(ERROR, "unrecognized access method type \"%c\"", amtype);
}
if (get_func_rettype(handlerOid) != expectedType)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("function %s must return type %s",
get_func_name(handlerOid),
format_type_extended(expectedType, -1, 0))));
return handlerOid;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.