Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/pg_catalog.py: 89%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

73 statements  

1# dialects/postgresql/pg_catalog.py 

2# Copyright (C) 2005-2025 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)