Team Ai
Datasetpublic

codekingpro/portable-devtools

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