Changeset 7790
- Timestamp:
- 06/29/08 23:46:59 (2 months ago)
- Files:
-
- django/trunk/AUTHORS (modified) (1 diff)
- django/trunk/django/core/management/commands/createcachetable.py (modified) (1 diff)
- django/trunk/django/core/management/sql.py (modified) (4 diffs)
- django/trunk/django/db/backends/__init__.py (modified) (1 diff)
- django/trunk/django/db/backends/mysql/base.py (modified) (1 diff)
- django/trunk/django/db/backends/mysql_old/base.py (modified) (1 diff)
- django/trunk/django/db/backends/oracle/base.py (modified) (1 diff)
- django/trunk/django/db/models/fields/__init__.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/AUTHORS
r7762 r7790 193 193 jcrasta@gmail.com 194 194 Zak Johnson <zakj@nox.cx> 195 Nis Jørgensen <nis@superlativ.dk> 195 196 Michael Josephson <http://www.sdjournal.com/> 196 197 jpellerin@gmail.com django/trunk/django/core/management/commands/createcachetable.py
r7294 r7790 22 22 field_output = [qn(f.name), f.db_type()] 23 23 field_output.append("%sNULL" % (not f.null and "NOT " or "")) 24 if f.unique:25 field_output.append("UNIQUE")26 24 if f.primary_key: 27 25 field_output.append("PRIMARY KEY") 26 elif f.unique: 27 field_output.append("UNIQUE") 28 28 if f.db_index: 29 29 unique = f.unique and "UNIQUE " or "" django/trunk/django/core/management/sql.py
r7591 r7790 269 269 style.SQL_COLTYPE(col_type)] 270 270 field_output.append(style.SQL_KEYWORD('%sNULL' % (not f.null and 'NOT ' or ''))) 271 if f.unique and (not f.primary_key or connection.features.allows_unique_and_pk):272 field_output.append(style.SQL_KEYWORD('UNIQUE'))273 271 if f.primary_key: 274 272 field_output.append(style.SQL_KEYWORD('PRIMARY KEY')) 275 if tablespace and connection.features.supports_tablespaces and (f.unique or f.primary_key) and connection.features.autoindexes_primary_keys: 273 elif f.unique: 274 field_output.append(style.SQL_KEYWORD('UNIQUE')) 275 if tablespace and connection.features.supports_tablespaces and f.unique: 276 276 # We must specify the index tablespace inline, because we 277 277 # won't be generating a CREATE INDEX statement for this field. … … 356 356 if not isinstance(f.rel, generic.GenericRel): 357 357 tablespace = f.db_tablespace or opts.db_tablespace 358 if tablespace and connection.features.supports_tablespaces and connection.features.autoindexes_primary_keys:358 if tablespace and connection.features.supports_tablespaces: 359 359 tablespace_sql = ' ' + connection.ops.tablespace_sql(tablespace, inline=True) 360 360 else: … … 461 461 qn = connection.ops.quote_name 462 462 for f in model._meta.local_fields: 463 if f.db_index and not ((f.primary_key or f.unique) and connection.features.autoindexes_primary_keys): 464 unique = f.unique and 'UNIQUE ' or '' 463 if f.db_index and not f.unique: 465 464 tablespace = f.db_tablespace or model._meta.db_tablespace 466 465 if tablespace and connection.features.supports_tablespaces: … … 469 468 tablespace_sql = '' 470 469 output.append( 471 style.SQL_KEYWORD('CREATE %sINDEX' % unique) + ' ' + \470 style.SQL_KEYWORD('CREATE INDEX') + ' ' + \ 472 471 style.SQL_TABLE(qn('%s_%s' % (model._meta.db_table, f.column))) + ' ' + \ 473 472 style.SQL_KEYWORD('ON') + ' ' + \ django/trunk/django/db/backends/__init__.py
r7747 r7790 42 42 class BaseDatabaseFeatures(object): 43 43 allows_group_by_ordinal = True 44 allows_unique_and_pk = True45 autoindexes_primary_keys = True46 44 inline_fk_references = True 47 45 needs_datetime_string_cast = True django/trunk/django/db/backends/mysql/base.py
r7643 r7790 61 61 62 62 class DatabaseFeatures(BaseDatabaseFeatures): 63 autoindexes_primary_keys = False64 63 inline_fk_references = False 65 64 empty_fetchmany_value = () django/trunk/django/db/backends/mysql_old/base.py
r7643 r7790 65 65 66 66 class DatabaseFeatures(BaseDatabaseFeatures): 67 autoindexes_primary_keys = False68 67 inline_fk_references = False 69 68 empty_fetchmany_value = () django/trunk/django/db/backends/oracle/base.py
r7747 r7790 25 25 class DatabaseFeatures(BaseDatabaseFeatures): 26 26 allows_group_by_ordinal = False 27 allows_unique_and_pk = False # Suppress UNIQUE/PK for Oracle (ORA-02259)28 27 empty_fetchmany_value = () 29 28 needs_datetime_string_cast = False django/trunk/django/db/models/fields/__init__.py
r7743 r7790 92 92 self.verbose_name = verbose_name 93 93 self.primary_key = primary_key 94 self.max_length, self. unique = max_length, unique94 self.max_length, self._unique = max_length, unique 95 95 self.blank, self.null = blank, null 96 96 # Oracle treats the empty string ('') as null, so coerce the null … … 168 168 except KeyError: 169 169 return None 170 171 def unique(self): 172 return self._unique or self.primary_key 173 unique = property(unique) 170 174 171 175 def validate_full(self, field_data, all_data):
