Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
pg_catalog.py327 linesDownload Raw Back to postgresql
1# dialects/postgresql/pg_catalog.py
2# Copyright (C) 2005-2026 the SQLAlchemy authors and contributors
3# <see AUTHORS file>
4#
5# This module is part of SQLAlchemy and is released under
6# the MIT License: https://www.opensource.org/licenses/mit-license.php
7
8from __future__ import annotations
9
10from typing import Any
11from typing import Optional
12from typing import Sequence
13from typing import TYPE_CHECKING
14
15from .array import ARRAY
16from .types import OID
17from .types import REGCLASS
18from ... import Column
19from ... import func
20from ... import MetaData
21from ... import Table
22from ...types import BigInteger
23from ...types import Boolean
24from ...types import CHAR
25from ...types import Float
26from ...types import Integer
27from ...types import SmallInteger
28from ...types import String
29from ...types import Text
30from ...types import TypeDecorator
31
32if TYPE_CHECKING:
33    from ...engine.interfaces import Dialect
34    from ...sql.type_api import _ResultProcessorType
35
36
37# types
38class NAME(TypeDecorator[str]):
39    impl = String(64, collation="C")
40    cache_ok = True
41
42
43class PG_NODE_TREE(TypeDecorator[str]):
44    impl = Text(collation="C")
45    cache_ok = True
46
47
48class INT2VECTOR(TypeDecorator[Sequence[int]]):
49    impl = ARRAY(SmallInteger)
50    cache_ok = True
51
52
53class OIDVECTOR(TypeDecorator[Sequence[int]]):
54    impl = ARRAY(OID)
55    cache_ok = True
56
57
58class _SpaceVector:
59    def result_processor(
60        self, dialect: Dialect, coltype: object
61    ) -> _ResultProcessorType[list[int]]:
62        def process(value: Any) -> Optional[list[int]]:
63            if value is None:
64                return value
65            return [int(p) for p in value.split(" ")]
66
67        return process
68
69
70REGPROC = REGCLASS  # seems an alias
71
72# functions
73_pg_cat = func.pg_catalog
74quote_ident = _pg_cat.quote_ident
75pg_table_is_visible = _pg_cat.pg_table_is_visible
76pg_type_is_visible = _pg_cat.pg_type_is_visible
77pg_get_viewdef = _pg_cat.pg_get_viewdef
78pg_get_serial_sequence = _pg_cat.pg_get_serial_sequence
79format_type = _pg_cat.format_type
80pg_get_expr = _pg_cat.pg_get_expr
81pg_get_constraintdef = _pg_cat.pg_get_constraintdef
82pg_get_indexdef = _pg_cat.pg_get_indexdef
83
84# constants
85RELKINDS_TABLE_NO_FOREIGN = ("r", "p")
86RELKINDS_TABLE = RELKINDS_TABLE_NO_FOREIGN + ("f",)
87RELKINDS_VIEW = ("v",)
88RELKINDS_MAT_VIEW = ("m",)
89RELKINDS_ALL_TABLE_LIKE = RELKINDS_TABLE + RELKINDS_VIEW + RELKINDS_MAT_VIEW
90
91# tables
92pg_catalog_meta = MetaData(schema="pg_catalog")
93
94pg_namespace = Table(
95    "pg_namespace",
96    pg_catalog_meta,
97    Column("oid", OID),
98    Column("nspname", NAME),
99    Column("nspowner", OID),
100)
101
102pg_class = Table(
103    "pg_class",
104    pg_catalog_meta,
105    Column("oid", OID, info={"server_version": (9, 3)}),
106    Column("relname", NAME),
107    Column("relnamespace", OID),
108    Column("reltype", OID),
109    Column("reloftype", OID),
110    Column("relowner", OID),
111    Column("relam", OID),
112    Column("relfilenode", OID),
113    Column("reltablespace", OID),
114    Column("relpages", Integer),
115    Column("reltuples", Float),
116    Column("relallvisible", Integer, info={"server_version": (9, 2)}),
117    Column("reltoastrelid", OID),
118    Column("relhasindex", Boolean),
119    Column("relisshared", Boolean),
120    Column("relpersistence", CHAR, info={"server_version": (9, 1)}),
121    Column("relkind", CHAR),
122    Column("relnatts", SmallInteger),
123    Column("relchecks", SmallInteger),
124    Column("relhasrules", Boolean),
125    Column("relhastriggers", Boolean),
126    Column("relhassubclass", Boolean),
127    Column("relrowsecurity", Boolean),
128    Column("relforcerowsecurity", Boolean, info={"server_version": (9, 5)}),
129    Column("relispopulated", Boolean, info={"server_version": (9, 3)}),
130    Column("relreplident", CHAR, info={"server_version": (9, 4)}),
131    Column("relispartition", Boolean, info={"server_version": (10,)}),
132    Column("relrewrite", OID, info={"server_version": (11,)}),
133    Column("reloptions", ARRAY(Text)),
134)
135
136pg_type = Table(
137    "pg_type",
138    pg_catalog_meta,
139    Column("oid", OID, info={"server_version": (9, 3)}),
140    Column("typname", NAME),
141    Column("typnamespace", OID),
142    Column("typowner", OID),
143    Column("typlen", SmallInteger),
144    Column("typbyval", Boolean),
145    Column("typtype", CHAR),
146    Column("typcategory", CHAR),
147    Column("typispreferred", Boolean),
148    Column("typisdefined", Boolean),
149    Column("typdelim", CHAR),
150    Column("typrelid", OID),
151    Column("typelem", OID),
152    Column("typarray", OID),
153    Column("typinput", REGPROC),
154    Column("typoutput", REGPROC),
155    Column("typreceive", REGPROC),
156    Column("typsend", REGPROC),
157    Column("typmodin", REGPROC),
158    Column("typmodout", REGPROC),
159    Column("typanalyze", REGPROC),
160    Column("typalign", CHAR),
161    Column("typstorage", CHAR),
162    Column("typnotnull", Boolean),
163    Column("typbasetype", OID),
164    Column("typtypmod", Integer),
165    Column("typndims", Integer),
166    Column("typcollation", OID, info={"server_version": (9, 1)}),
167    Column("typdefault", Text),
168)
169
170pg_index = Table(
171    "pg_index",
172    pg_catalog_meta,
173    Column("indexrelid", OID),
174    Column("indrelid", OID),
175    Column("indnatts", SmallInteger),
176    Column("indnkeyatts", SmallInteger, info={"server_version": (11,)}),
177    Column("indisunique", Boolean),
178    Column("indnullsnotdistinct", Boolean, info={"server_version": (15,)}),
179    Column("indisprimary", Boolean),
180    Column("indisexclusion", Boolean, info={"server_version": (9, 1)}),
181    Column("indimmediate", Boolean),
182    Column("indisclustered", Boolean),
183    Column("indisvalid", Boolean),
184    Column("indcheckxmin", Boolean),
185    Column("indisready", Boolean),
186    Column("indislive", Boolean, info={"server_version": (9, 3)}),  # 9.3
187    Column("indisreplident", Boolean),
188    Column("indkey", INT2VECTOR),
189    Column("indcollation", OIDVECTOR, info={"server_version": (9, 1)}),  # 9.1
190    Column("indclass", OIDVECTOR),
191    Column("indoption", INT2VECTOR),
192    Column("indexprs", PG_NODE_TREE),
193    Column("indpred", PG_NODE_TREE),
194)
195
196pg_attribute = Table(
197    "pg_attribute",
198    pg_catalog_meta,
199    Column("attrelid", OID),
200    Column("attname", NAME),
201    Column("atttypid", OID),
202    Column("attstattarget", Integer),
203    Column("attlen", SmallInteger),
204    Column("attnum", SmallInteger),
205    Column("attndims", Integer),
206    Column("attcacheoff", Integer),
207    Column("atttypmod", Integer),
208    Column("attbyval", Boolean),
209    Column("attstorage", CHAR),
210    Column("attalign", CHAR),
211    Column("attnotnull", Boolean),
212    Column("atthasdef", Boolean),
213    Column("atthasmissing", Boolean, info={"server_version": (11,)}),
214    Column("attidentity", CHAR, info={"server_version": (10,)}),
215    Column("attgenerated", CHAR, info={"server_version": (12,)}),
216    Column("attisdropped", Boolean),
217    Column("attislocal", Boolean),
218    Column("attinhcount", Integer),
219    Column("attcollation", OID, info={"server_version": (9, 1)}),
220)
221
222pg_constraint = Table(
223    "pg_constraint",
224    pg_catalog_meta,
225    Column("oid", OID),  # 9.3
226    Column("conname", NAME),
227    Column("connamespace", OID),
228    Column("contype", CHAR),
229    Column("condeferrable", Boolean),
230    Column("condeferred", Boolean),
231    Column("convalidated", Boolean, info={"server_version": (9, 1)}),
232    Column("conrelid", OID),
233    Column("contypid", OID),
234    Column("conindid", OID),
235    Column("conparentid", OID, info={"server_version": (11,)}),
236    Column("confrelid", OID),
237    Column("confupdtype", CHAR),
238    Column("confdeltype", CHAR),
239    Column("confmatchtype", CHAR),
240    Column("conislocal", Boolean),
241    Column("coninhcount", Integer),
242    Column("connoinherit", Boolean, info={"server_version": (9, 2)}),
243    Column("conkey", ARRAY(SmallInteger)),
244    Column("confkey", ARRAY(SmallInteger)),
245)
246
247pg_sequence = Table(
248    "pg_sequence",
249    pg_catalog_meta,
250    Column("seqrelid", OID),
251    Column("seqtypid", OID),
252    Column("seqstart", BigInteger),
253    Column("seqincrement", BigInteger),
254    Column("seqmax", BigInteger),
255    Column("seqmin", BigInteger),
256    Column("seqcache", BigInteger),
257    Column("seqcycle", Boolean),
258    info={"server_version": (10,)},
259)
260
261pg_attrdef = Table(
262    "pg_attrdef",
263    pg_catalog_meta,
264    Column("oid", OID, info={"server_version": (9, 3)}),
265    Column("adrelid", OID),
266    Column("adnum", SmallInteger),
267    Column("adbin", PG_NODE_TREE),
268)
269
270pg_description = Table(
271    "pg_description",
272    pg_catalog_meta,
273    Column("objoid", OID),
274    Column("classoid", OID),
275    Column("objsubid", Integer),
276    Column("description", Text(collation="C")),
277)
278
279pg_enum = Table(
280    "pg_enum",
281    pg_catalog_meta,
282    Column("oid", OID, info={"server_version": (9, 3)}),
283    Column("enumtypid", OID),
284    Column("enumsortorder", Float(), info={"server_version": (9, 1)}),
285    Column("enumlabel", NAME),
286)
287
288pg_am = Table(
289    "pg_am",
290    pg_catalog_meta,
291    Column("oid", OID, info={"server_version": (9, 3)}),
292    Column("amname", NAME),
293    Column("amhandler", REGPROC, info={"server_version": (9, 6)}),
294    Column("amtype", CHAR, info={"server_version": (9, 6)}),
295)
296
297pg_collation = Table(
298    "pg_collation",
299    pg_catalog_meta,
300    Column("oid", OID, info={"server_version": (9, 3)}),
301    Column("collname", NAME),
302    Column("collnamespace", OID),
303    Column("collowner", OID),
304    Column("collprovider", CHAR, info={"server_version": (10,)}),
305    Column("collisdeterministic", Boolean, info={"server_version": (12,)}),
306    Column("collencoding", Integer),
307    Column("collcollate", Text),
308    Column("collctype", Text),
309    Column("colliculocale", Text),
310    Column("collicurules", Text, info={"server_version": (16,)}),
311    Column("collversion", Text, info={"server_version": (10,)}),
312)
313
314pg_opclass = Table(
315    "pg_opclass",
316    pg_catalog_meta,
317    Column("oid", OID, info={"server_version": (9, 3)}),
318    Column("opcmethod", NAME),
319    Column("opcname", NAME),
320    Column("opsnamespace", OID),
321    Column("opsowner", OID),
322    Column("opcfamily", OID),
323    Column("opcintype", OID),
324    Column("opcdefault", Boolean),
325    Column("opckeytype", OID),
326)
327 
codekingpro/portable-devtools · Team Ai