summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjakeogh <github.com@v6y.net>2015-06-27 18:37:09 +0000
committerjakeogh <github.com@v6y.net>2015-06-27 18:37:09 +0000
commitad7caa69884bddf6f35da2facc516ab08904c71e (patch)
tree75b3af57694a2a773b105f179fb5e45deaf3bd42
parentf31c288b65281511338c518bdf7fbe78c985af58 (diff)
downloadsqlalchemy-ad7caa69884bddf6f35da2facc516ab08904c71e.tar.gz
add MAXVALUE support to Sequence()
-rw-r--r--lib/sqlalchemy/engine/interfaces.py2
-rw-r--r--lib/sqlalchemy/sql/compiler.py2
-rw-r--r--lib/sqlalchemy/sql/schema.py13
-rw-r--r--test/sql/test_defaults.py9
4 files changed, 21 insertions, 5 deletions
diff --git a/lib/sqlalchemy/engine/interfaces.py b/lib/sqlalchemy/engine/interfaces.py
index a58144867..1779f6d48 100644
--- a/lib/sqlalchemy/engine/interfaces.py
+++ b/lib/sqlalchemy/engine/interfaces.py
@@ -252,7 +252,7 @@ class Dialect(object):
sequence
a dictionary of the form
- {'name' : str, 'start' :int, 'increment': int, 'minvalue': int}
+ {'name' : str, 'start' :int, 'increment': int, 'minvalue': int, 'maxvalue': int}
Additional column attributes may be present.
"""
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py
index b8cf32dff..b3fee60ec 100644
--- a/lib/sqlalchemy/sql/compiler.py
+++ b/lib/sqlalchemy/sql/compiler.py
@@ -2301,6 +2301,8 @@ class DDLCompiler(Compiled):
text += " START WITH %d" % create.element.start
if create.element.minvalue is not None:
text += " MINVALUE %d" % create.element.minvalue
+ if create.element.maxvalue is not None:
+ text += " MAXVALUE %d" % create.element.maxvalue
return text
def visit_drop_sequence(self, drop):
diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py
index d49bc2e17..ef84d2680 100644
--- a/lib/sqlalchemy/sql/schema.py
+++ b/lib/sqlalchemy/sql/schema.py
@@ -2041,8 +2041,8 @@ class Sequence(DefaultGenerator):
is_sequence = True
def __init__(self, name, start=None, increment=None, minvalue=None,
- schema=None, optional=False, quote=None, metadata=None,
- quote_schema=None,
+ maxvalue=None, schema=None, optional=False, quote=None,
+ metadata=None, quote_schema=None,
for_update=False):
"""Construct a :class:`.Sequence` object.
@@ -2061,7 +2061,14 @@ class Sequence(DefaultGenerator):
value is used when the CREATE SEQUENCE command is emitted to
the database as the value of the "MINVALUE" clause. If ``None``,
the clause is omitted, which on most platforms indicates a
- minvalue of 1.
+ minvalue of 1 and -2^63-1 for ascending and descending sequences,
+ respectively.
+ :param maxvalue: the maximum value of the sequence. This
+ value is used when the CREATE SEQUENCE command is emitted to
+ the database as the value of the "MAXVALUE" clause. If ``None``,
+ the clause is omitted, which on most platforms indicates a
+ maxvalue of 2^63-1 and -1 for ascending and descending sequences,
+ respectively.
:param schema: Optional schema name for the sequence, if located
in a schema other than the default.
:param optional: boolean value, when ``True``, indicates that this
diff --git a/test/sql/test_defaults.py b/test/sql/test_defaults.py
index 9aebfc010..b218aa53f 100644
--- a/test/sql/test_defaults.py
+++ b/test/sql/test_defaults.py
@@ -793,11 +793,18 @@ class SequenceDDLTest(fixtures.TestBase, testing.AssertsCompiledSQL):
)
self.assert_compile(
- CreateSequence(Sequence('foo_seq', increment=2, start=0, minvalue=0)),
+ CreateSequence(Sequence(
+ 'foo_seq', increment=2, start=0, minvalue=0)),
"CREATE SEQUENCE foo_seq INCREMENT BY 2 START WITH 0 MINVALUE 0",
)
self.assert_compile(
+ CreateSequence(Sequence(
+ 'foo_seq', increment=2, start=1, maxvalue=5)),
+ "CREATE SEQUENCE foo_seq INCREMENT BY 2 START WITH 0 MAXVALUE 5",
+ )
+
+ self.assert_compile(
DropSequence(Sequence('foo_seq')),
"DROP SEQUENCE foo_seq",
)