extension_dependency_choice.patch
text/x-patch
Filename: extension_dependency_choice.patch
Type: text/x-patch
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/backend/commands/extension.c | 0 | 0 |
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
new file mode 100644
index 278bbcf..5bf7f8e
*** a/src/backend/commands/extension.c
--- b/src/backend/commands/extension.c
*************** static void ApplyExtensionUpdates(Oid ex
*** 114,145 ****
Oid
get_extension_oid(const char *extname, bool missing_ok)
{
! Oid result;
! Relation rel;
SysScanDesc scandesc;
HeapTuple tuple;
ScanKeyData entry[1];
rel = heap_open(ExtensionRelationId, AccessShareLock);
ScanKeyInit(&entry[0],
Anum_pg_extension_extname,
! BTEqualStrategyNumber, F_NAMEEQ,
CStringGetDatum(extname));
! scandesc = systable_beginscan(rel, ExtensionNameIndexId, true,
! SnapshotNow, 1, entry);
! tuple = systable_getnext(scandesc);
! /* We assume that there can be at most one matching tuple */
! if (HeapTupleIsValid(tuple))
! result = HeapTupleGetOid(tuple);
! else
! result = InvalidOid;
! systable_endscan(scandesc);
heap_close(rel, AccessShareLock);
if (!OidIsValid(result) && !missing_ok)
--- 114,152 ----
Oid
get_extension_oid(const char *extname, bool missing_ok)
{
! Oid result = InvalidOid;
! Relation rel, idx;
SysScanDesc scandesc;
HeapTuple tuple;
ScanKeyData entry[1];
+ int len = strlen(extname) - 1;
+ bool wildcard = (extname[len] == '*');
rel = heap_open(ExtensionRelationId, AccessShareLock);
+ idx = index_open(ExtensionNameIndexId, AccessShareLock);
ScanKeyInit(&entry[0],
Anum_pg_extension_extname,
! BTGreaterEqualStrategyNumber,
! F_NAMEGE,
CStringGetDatum(extname));
! scandesc = systable_beginscan_ordered(rel, idx,
! SnapshotNow, 1, entry);
! if (HeapTupleIsValid(tuple = systable_getnext_ordered(scandesc, ForwardScanDirection)))
! {
! Form_pg_extension form = (Form_pg_extension) GETSTRUCT(tuple);
! if (wildcard
! ? (strncmp(extname, NameStr(form->extname), len) == 0)
! : (strcmp(extname, NameStr(form->extname)) == 0))
! result = HeapTupleGetOid(tuple);
! }
! systable_endscan_ordered(scandesc);
+ index_close(idx, AccessShareLock);
heap_close(rel, AccessShareLock);
if (!OidIsValid(result) && !missing_ok)