1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-30 21:42:05 +03:00

add new list type simple_oid_string_list to fe-utils/simple_list

This type contains both an oid and a string.

This will be used in forthcoming changes to pg_restore.

Author: Andrew Dunstan <andrew@dunslane.net>
This commit is contained in:
Andrew Dunstan
2025-03-28 18:10:24 -04:00
parent c1da728106
commit 2b69afbe50
3 changed files with 59 additions and 0 deletions

View File

@ -192,3 +192,44 @@ simple_ptr_list_destroy(SimplePtrList *list)
cell = next;
}
}
/*
* Add to an oid_string list
*/
void
simple_oid_string_list_append(SimpleOidStringList *list, Oid oid, const char *str)
{
SimpleOidStringListCell *cell;
cell = (SimpleOidStringListCell *)
pg_malloc(offsetof(SimpleOidStringListCell, str) + strlen(str) + 1);
cell->next = NULL;
cell->oid = oid;
strcpy(cell->str, str);
if (list->tail)
list->tail->next = cell;
else
list->head = cell;
list->tail = cell;
}
/*
* Destroy an oid_string list
*/
void
simple_oid_string_list_destroy(SimpleOidStringList *list)
{
SimpleOidStringListCell *cell;
cell = list->head;
while (cell != NULL)
{
SimpleOidStringListCell *next;
next = cell->next;
pg_free(cell);
cell = next;
}
}

View File

@ -55,6 +55,19 @@ typedef struct SimplePtrList
SimplePtrListCell *tail;
} SimplePtrList;
typedef struct SimpleOidStringListCell
{
struct SimpleOidStringListCell *next;
Oid oid;
char str[FLEXIBLE_ARRAY_MEMBER]; /* null-terminated string here */
} SimpleOidStringListCell;
typedef struct SimpleOidStringList
{
SimpleOidStringListCell *head;
SimpleOidStringListCell *tail;
} SimpleOidStringList;
extern void simple_oid_list_append(SimpleOidList *list, Oid val);
extern bool simple_oid_list_member(SimpleOidList *list, Oid val);
extern void simple_oid_list_destroy(SimpleOidList *list);
@ -68,4 +81,7 @@ extern const char *simple_string_list_not_touched(SimpleStringList *list);
extern void simple_ptr_list_append(SimplePtrList *list, void *ptr);
extern void simple_ptr_list_destroy(SimplePtrList *list);
extern void simple_oid_string_list_append(SimpleOidStringList *list, Oid oid, const char *str);
extern void simple_oid_string_list_destroy(SimpleOidStringList *list);
#endif /* SIMPLE_LIST_H */

View File

@ -2747,6 +2747,8 @@ SimpleActionListCell
SimpleEcontextStackEntry
SimpleOidList
SimpleOidListCell
SimpleOidStringList
SimpleOidListStringCell
SimplePtrList
SimplePtrListCell
SimpleStats