| 1 | diff -rduP -x .svn -x '*.pyc' django-trunk/django/db/backends/ado_mssql/base.py django-new/django/db/backends/ado_mssql/base.py
|
|---|
| 2 | --- django-trunk/django/db/backends/ado_mssql/base.py 2008-02-26 15:22:14.000000000 +0100
|
|---|
| 3 | +++ django-new/django/db/backends/ado_mssql/base.py 2008-02-26 15:04:52.000000000 +0100
|
|---|
| 4 | @@ -66,7 +66,9 @@
|
|---|
| 5 | def deferrable_sql(self):
|
|---|
| 6 | return " DEFERRABLE INITIALLY DEFERRED"
|
|---|
| 7 |
|
|---|
| 8 | - def last_insert_id(self, cursor, table_name, pk_name):
|
|---|
| 9 | + # FIXME: seq_name might be a useful thing to add to backends other
|
|---|
| 10 | + # than PostgreSQL
|
|---|
| 11 | + def last_insert_id(self, cursor, table_name, pk_name, seq_name):
|
|---|
| 12 | cursor.execute("SELECT %s FROM %s WHERE %s = @@IDENTITY" % (pk_name, table_name, pk_name))
|
|---|
| 13 | return cursor.fetchone()[0]
|
|---|
| 14 |
|
|---|
| 15 | diff -rduP -x .svn -x '*.pyc' django-trunk/django/db/backends/__init__.py django-new/django/db/backends/__init__.py
|
|---|
| 16 | --- django-trunk/django/db/backends/__init__.py 2008-02-26 15:22:14.000000000 +0100
|
|---|
| 17 | +++ django-new/django/db/backends/__init__.py 2008-02-26 15:11:26.000000000 +0100
|
|---|
| 18 | @@ -149,7 +149,9 @@
|
|---|
| 19 |
|
|---|
| 20 | return smart_unicode(sql) % u_params
|
|---|
| 21 |
|
|---|
| 22 | - def last_insert_id(self, cursor, table_name, pk_name):
|
|---|
| 23 | + # FIXME: seq_name might be a useful thing to add to backends other
|
|---|
| 24 | + # than PostgreSQL
|
|---|
| 25 | + def last_insert_id(self, cursor, table_name, pk_name, seq_name):
|
|---|
| 26 | """
|
|---|
| 27 | Given a cursor object that has just performed an INSERT statement into
|
|---|
| 28 | a table that has an auto-incrementing ID, returns the newly created ID.
|
|---|
| 29 | diff -rduP -x .svn -x '*.pyc' django-trunk/django/db/backends/postgresql/operations.py django-new/django/db/backends/postgresql/operations.py
|
|---|
| 30 | --- django-trunk/django/db/backends/postgresql/operations.py 2008-02-26 15:22:14.000000000 +0100
|
|---|
| 31 | +++ django-new/django/db/backends/postgresql/operations.py 2008-02-26 15:08:46.000000000 +0100
|
|---|
| 32 | @@ -32,8 +32,10 @@
|
|---|
| 33 | return 'CAST(%s AS TEXT)'
|
|---|
| 34 | return '%s'
|
|---|
| 35 |
|
|---|
| 36 | - def last_insert_id(self, cursor, table_name, pk_name):
|
|---|
| 37 | - cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name))
|
|---|
| 38 | + def last_insert_id(self, cursor, table_name, pk_name, seq_name):
|
|---|
| 39 | + if seq_name is None:
|
|---|
| 40 | + seq_name = "%s_%s_seq" % (table_name, pk_name)
|
|---|
| 41 | + cursor.execute("SELECT CURRVAL('\"%s\"')" % seq_name)
|
|---|
| 42 | return cursor.fetchone()[0]
|
|---|
| 43 |
|
|---|
| 44 | def quote_name(self, name):
|
|---|
| 45 | diff -rduP -x .svn -x '*.pyc' django-trunk/django/db/models/base.py django-new/django/db/models/base.py
|
|---|
| 46 | --- django-trunk/django/db/models/base.py 2008-02-26 15:22:14.000000000 +0100
|
|---|
| 47 | +++ django-new/django/db/models/base.py 2008-02-26 15:17:19.000000000 +0100
|
|---|
| 48 | @@ -268,7 +268,7 @@
|
|---|
| 49 | (qn(self._meta.db_table), qn(self._meta.pk.column),
|
|---|
| 50 | connection.ops.pk_default_value()))
|
|---|
| 51 | if self._meta.has_auto_field and not pk_set:
|
|---|
| 52 | - setattr(self, self._meta.pk.attname, connection.ops.last_insert_id(cursor, self._meta.db_table, self._meta.pk.column))
|
|---|
| 53 | + setattr(self, self._meta.pk.attname, connection.ops.last_insert_id(cursor, self._meta.db_table, self._meta.pk.column, self._meta.pk.seq_name))
|
|---|
| 54 | transaction.commit_unless_managed()
|
|---|
| 55 |
|
|---|
| 56 | # Run any post-save hooks.
|
|---|
| 57 | diff -rduP -x .svn -x '*.pyc' django-trunk/django/db/models/fields/__init__.py django-new/django/db/models/fields/__init__.py
|
|---|
| 58 | --- django-trunk/django/db/models/fields/__init__.py 2008-02-26 15:22:14.000000000 +0100
|
|---|
| 59 | +++ django-new/django/db/models/fields/__init__.py 2008-02-26 15:19:27.000000000 +0100
|
|---|
| 60 | @@ -83,7 +83,7 @@
|
|---|
| 61 | core=False, rel=None, default=NOT_PROVIDED, editable=True, serialize=True,
|
|---|
| 62 | prepopulate_from=None, unique_for_date=None, unique_for_month=None,
|
|---|
| 63 | unique_for_year=None, validator_list=None, choices=None, radio_admin=None,
|
|---|
| 64 | - help_text='', db_column=None, db_tablespace=None):
|
|---|
| 65 | + help_text='', db_column=None, db_tablespace=None, seq_name=None):
|
|---|
| 66 | self.name = name
|
|---|
| 67 | self.verbose_name = verbose_name
|
|---|
| 68 | self.primary_key = primary_key
|
|---|
| 69 | @@ -105,6 +105,7 @@
|
|---|
| 70 | self.help_text = help_text
|
|---|
| 71 | self.db_column = db_column
|
|---|
| 72 | self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
|
|---|
| 73 | + self.seq_name = seq_name
|
|---|
| 74 |
|
|---|
| 75 | # Set db_index to True if the field has a relationship and doesn't explicitly set db_index.
|
|---|
| 76 | self.db_index = db_index
|
|---|