/usr/lib/python2.7/dist-packages/maasserver/sequence.py is in python-django-maas 1.5.4+bzr2294-0ubuntu1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # Copyright 2012 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""SQL Sequence."""
from __future__ import (
absolute_import,
print_function,
unicode_literals,
)
str = None
__metaclass__ = type
__all__ = [
'Sequence',
'INT_MAX',
]
from django.db import (
connection,
transaction,
)
BIGINT_MAX = 2 ** 63 - 1
INT_MAX = 2 ** 32 - 1
class Sequence:
"""SQL sequence."""
def __init__(self, name, incr=1, minvalue=1, maxvalue=BIGINT_MAX):
self.name = name
self.incr = incr
self.minvalue = minvalue
self.maxvalue = maxvalue
def create(self):
"""Create this sequence in the database."""
cursor = connection.cursor()
query = "CREATE SEQUENCE %s" % self.name
cursor.execute(
query + " INCREMENT BY %s MINVALUE %s MAXVALUE %s CYCLE",
[self.incr, self.minvalue, self.maxvalue])
transaction.commit_unless_managed()
def nextval(self):
"""Return the next value of this sequence.
:return: The sequence value.
:rtype: int
"""
cursor = connection.cursor()
cursor.execute(
"SELECT nextval(%s)", [self.name])
return cursor.fetchone()[0]
def drop(self):
"""Drop this sequence from the database."""
cursor = connection.cursor()
cursor.execute(
"DROP SEQUENCE %s" % self.name)
transaction.commit_unless_managed()
|