summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorSebastian Bank <sebastian.bank@uni-leipzig.de>2018-04-02 11:25:08 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2018-04-03 09:31:07 -0400
commit9f986ce10c6755af3f347a56f9ea03e0e2c5943e (patch)
tree071fbf196fa0a0bbd1af23630e737a35448a0fe4 /lib/sqlalchemy
parent55371f4cffa730f65f1b687e9f6287d2ac189227 (diff)
downloadsqlalchemy-9f986ce10c6755af3f347a56f9ea03e0e2c5943e.tar.gz
Add postgresl.REGCLASS type for casting table names to OIDs and vice versa
Fixes: #4160 Change-Id: Id0bdbad1be3a0950dc8f35895ee13d9264244722 Pull-request: https://github.com/zzzeek/sqlalchemy/pull/435
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/dialects/postgresql/__init__.py6
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py14
2 files changed, 17 insertions, 3 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/__init__.py b/lib/sqlalchemy/dialects/postgresql/__init__.py
index a985f06a9..d2f8057b6 100644
--- a/lib/sqlalchemy/dialects/postgresql/__init__.py
+++ b/lib/sqlalchemy/dialects/postgresql/__init__.py
@@ -10,7 +10,7 @@ from . import base, psycopg2, pg8000, pypostgresql, pygresql, \
from .base import \
INTEGER, BIGINT, SMALLINT, VARCHAR, CHAR, TEXT, NUMERIC, FLOAT, REAL, \
- INET, CIDR, UUID, BIT, MACADDR, MONEY, OID, DOUBLE_PRECISION, \
+ INET, CIDR, UUID, BIT, MACADDR, MONEY, OID, REGCLASS, DOUBLE_PRECISION, \
TIMESTAMP, TIME, DATE, BYTEA, BOOLEAN, INTERVAL, ENUM, TSVECTOR, \
DropEnumType, CreateEnumType
from .hstore import HSTORE, hstore
@@ -28,8 +28,8 @@ base.dialect = dialect = psycopg2.dialect
__all__ = (
'INTEGER', 'BIGINT', 'SMALLINT', 'VARCHAR', 'CHAR', 'TEXT', 'NUMERIC',
'FLOAT', 'REAL', 'INET', 'CIDR', 'UUID', 'BIT', 'MACADDR', 'MONEY', 'OID',
- 'DOUBLE_PRECISION', 'TIMESTAMP', 'TIME', 'DATE', 'BYTEA', 'BOOLEAN',
- 'INTERVAL', 'ARRAY', 'ENUM', 'dialect', 'array', 'HSTORE',
+ 'REGCLASS', 'DOUBLE_PRECISION', 'TIMESTAMP', 'TIME', 'DATE', 'BYTEA',
+ 'BOOLEAN', 'INTERVAL', 'ARRAY', 'ENUM', 'dialect', 'array', 'HSTORE',
'hstore', 'INT4RANGE', 'INT8RANGE', 'NUMRANGE', 'DATERANGE',
'TSRANGE', 'TSTZRANGE', 'json', 'JSON', 'JSONB', 'Any', 'All',
'DropEnumType', 'CreateEnumType', 'ExcludeConstraint',
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index 1dffe8db9..c5b0db6ce 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -1000,6 +1000,16 @@ class OID(sqltypes.TypeEngine):
__visit_name__ = "OID"
+class REGCLASS(sqltypes.TypeEngine):
+
+ """Provide the PostgreSQL REGCLASS type.
+
+ .. versionadded:: 1.2.7
+
+ """
+ __visit_name__ = "REGCLASS"
+
+
class TIMESTAMP(sqltypes.TIMESTAMP):
def __init__(self, timezone=False, precision=None):
@@ -1382,6 +1392,7 @@ ischema_names = {
'macaddr': MACADDR,
'money': MONEY,
'oid': OID,
+ 'regclass': REGCLASS,
'double precision': DOUBLE_PRECISION,
'timestamp': TIMESTAMP,
'timestamp with time zone': TIMESTAMP,
@@ -1876,6 +1887,9 @@ class PGTypeCompiler(compiler.GenericTypeCompiler):
def visit_OID(self, type_, **kw):
return "OID"
+ def visit_REGCLASS(self, type_, **kw):
+ return "REGCLASS"
+
def visit_FLOAT(self, type_, **kw):
if not type_.precision:
return "FLOAT"