PostgreSQL Source Code git master
pg_collation.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * pg_collation.h
4 * definition of the "collation" system catalog (pg_collation)
5 *
6 *
7 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/catalog/pg_collation.h
11 *
12 * NOTES
13 * The Catalog.pm module reads this file and derives schema
14 * information.
15 *
16 *-------------------------------------------------------------------------
17 */
18#ifndef PG_COLLATION_H
19#define PG_COLLATION_H
20
21#include "catalog/genbki.h"
22#include "catalog/pg_collation_d.h" /* IWYU pragma: export */
23
24/* ----------------
25 * pg_collation definition. cpp turns this into
26 * typedef struct FormData_pg_collation
27 * ----------------
28 */
29CATALOG(pg_collation,3456,CollationRelationId)
30{
31 Oid oid; /* oid */
32 NameData collname; /* collation name */
33
34 /* OID of namespace containing this collation */
35 Oid collnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
36
37 /* owner of collation */
38 Oid collowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
39 char collprovider; /* see constants below */
40 bool collisdeterministic BKI_DEFAULT(t);
41 int32 collencoding; /* encoding for this collation; -1 = "all" */
42#ifdef CATALOG_VARLEN /* variable-length fields start here */
43 text collcollate BKI_DEFAULT(_null_); /* LC_COLLATE setting */
44 text collctype BKI_DEFAULT(_null_); /* LC_CTYPE setting */
45 text colllocale BKI_DEFAULT(_null_); /* locale ID */
46 text collicurules BKI_DEFAULT(_null_); /* ICU collation rules */
47 text collversion BKI_DEFAULT(_null_); /* provider-dependent
48 * version of collation
49 * data */
50#endif
52
53/* ----------------
54 * Form_pg_collation corresponds to a pointer to a row with
55 * the format of pg_collation relation.
56 * ----------------
57 */
59
60DECLARE_TOAST(pg_collation, 6175, 6176);
61
62DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, CollationNameEncNspIndexId, pg_collation, btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
63DECLARE_UNIQUE_INDEX_PKEY(pg_collation_oid_index, 3085, CollationOidIndexId, pg_collation, btree(oid oid_ops));
64
65MAKE_SYSCACHE(COLLNAMEENCNSP, pg_collation_name_enc_nsp_index, 8);
66MAKE_SYSCACHE(COLLOID, pg_collation_oid_index, 8);
67
68#ifdef EXPOSE_TO_CLIENT_CODE
69
70#define COLLPROVIDER_DEFAULT 'd'
71#define COLLPROVIDER_BUILTIN 'b'
72#define COLLPROVIDER_ICU 'i'
73#define COLLPROVIDER_LIBC 'c'
74
75static inline const char *
76collprovider_name(char c)
77{
78 switch (c)
79 {
80 case COLLPROVIDER_BUILTIN:
81 return "builtin";
82 case COLLPROVIDER_ICU:
83 return "icu";
84 case COLLPROVIDER_LIBC:
85 return "libc";
86 default:
87 return "???";
88 }
89}
90
91#endif /* EXPOSE_TO_CLIENT_CODE */
92
93
94extern Oid CollationCreate(const char *collname, Oid collnamespace,
95 Oid collowner,
96 char collprovider,
97 bool collisdeterministic,
98 int32 collencoding,
99 const char *collcollate, const char *collctype,
100 const char *colllocale,
101 const char *collicurules,
102 const char *collversion,
103 bool if_not_exists,
104 bool quiet);
105
106#endif /* PG_COLLATION_H */
int32_t int32
Definition: c.h:498
#define BKI_LOOKUP(catalog)
Definition: genbki.h:46
#define BKI_DEFAULT(value)
Definition: genbki.h:35
DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, CollationNameEncNspIndexId, pg_collation, btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops))
FormData_pg_collation * Form_pg_collation
Definition: pg_collation.h:58
CATALOG(pg_collation, 3456, CollationRelationId)
Definition: pg_collation.h:29
DECLARE_TOAST(pg_collation, 6175, 6176)
MAKE_SYSCACHE(COLLNAMEENCNSP, pg_collation_name_enc_nsp_index, 8)
DECLARE_UNIQUE_INDEX_PKEY(pg_collation_oid_index, 3085, CollationOidIndexId, pg_collation, btree(oid oid_ops))
FormData_pg_collation
Definition: pg_collation.h:51
Oid CollationCreate(const char *collname, Oid collnamespace, Oid collowner, char collprovider, bool collisdeterministic, int32 collencoding, const char *collcollate, const char *collctype, const char *colllocale, const char *collicurules, const char *collversion, bool if_not_exists, bool quiet)
Definition: pg_collation.c:42
unsigned int Oid
Definition: postgres_ext.h:32
char * c
Definition: c.h:712
Definition: c.h:658