summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/selectable.py
diff options
context:
space:
mode:
authorDobes Vandermeer <dvandermeer@roovy.com>2014-04-24 15:20:57 -0700
committerDobes Vandermeer <dvandermeer@roovy.com>2014-04-24 15:20:57 -0700
commit338ca8e48827840ad5db4ee4f677e4d3fcd315c9 (patch)
tree483e7092969c364fff255b6ed24d1845c2e45c5f /lib/sqlalchemy/sql/selectable.py
parent5016b581b6a0099b5d4babf885ae1f2c05a9589f (diff)
downloadsqlalchemy-338ca8e48827840ad5db4ee4f677e4d3fcd315c9.tar.gz
Proof-of-concept implementation of supporting bindparam for offset and limit on a query.
Diffstat (limited to 'lib/sqlalchemy/sql/selectable.py')
-rw-r--r--lib/sqlalchemy/sql/selectable.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py
index afcf437e9..5995c1f8a 100644
--- a/lib/sqlalchemy/sql/selectable.py
+++ b/lib/sqlalchemy/sql/selectable.py
@@ -1562,9 +1562,9 @@ class GenerativeSelect(SelectBase):
self._execution_options.union(
{'autocommit': autocommit})
if limit is not None:
- self._limit = util.asint(limit)
+ self._limit = limit
if offset is not None:
- self._offset = util.asint(offset)
+ self._offset = offset
self._bind = bind
if order_by is not None:
@@ -1644,14 +1644,14 @@ class GenerativeSelect(SelectBase):
"""return a new selectable with the given LIMIT criterion
applied."""
- self._limit = util.asint(limit)
+ self._limit = limit
@_generative
def offset(self, offset):
"""return a new selectable with the given OFFSET criterion
applied."""
- self._offset = util.asint(offset)
+ self._offset = offset
@_generative
def order_by(self, *clauses):
@@ -1712,6 +1712,12 @@ class GenerativeSelect(SelectBase):
self._group_by_clause = ClauseList(*clauses)
+ def _copy_internals(self, clone=_clone, **kw):
+ if isinstance(self._limit, ClauseElement):
+ self._limit = clone(self._limit)
+ if isinstance(self._offset, ClauseElement):
+ self._offset = clone(self._offset)
+
class CompoundSelect(GenerativeSelect):
"""Forms the basis of ``UNION``, ``UNION ALL``, and other
SELECT-based set operations.
@@ -1930,6 +1936,7 @@ class CompoundSelect(GenerativeSelect):
"addition of columns to underlying selectables")
def _copy_internals(self, clone=_clone, **kw):
+ super(CompoundSelect, self)._copy_internals(clone, **kw)
self._reset_exported()
self.selects = [clone(s, **kw) for s in self.selects]
if hasattr(self, '_col_map'):
@@ -2380,6 +2387,7 @@ class Select(HasPrefixes, GenerativeSelect):
return False
def _copy_internals(self, clone=_clone, **kw):
+ super(Select, self)._copy_internals(clone, **kw)
# Select() object has been cloned and probably adapted by the
# given clone function. Apply the cloning function to internal