charettes avatar charettes committed e2b02a8 Merge

Merged default branch in

Comments (0)

Files changed (1)

south/db/firebird.py

     alter_string_set_default =  'ALTER %(column)s SET DEFAULT %(default)s;'
     alter_string_drop_null = ''
     add_column_string = 'ALTER TABLE %s ADD %s;'
+    delete_column_string = 'ALTER TABLE %s DROP %s;'
     allows_combined_alters = False
 
     def _fill_constraint_cache(self, db_name, table_name):
 
 
     @generic.invalidate_table_constraints
-    def create_table(self, table_name, fields): 
+    def create_table(self, table_name, fields):
         qn = self.quote_name(table_name)
         columns = []
         autoinc_sql = ''
                 # Just use UNIQUE (no indexes any more, we have delete_unique)
                 field_output.append('UNIQUE')
 
-            tablespace = field.db_tablespace or tablespace
-            if tablespace and getattr(self._get_connection().features, "supports_tablespaces", False) and field.unique:
-                # We must specify the index tablespace inline, because we
-                # won't be generating a CREATE INDEX statement for this field.
-                field_output.append(self._get_connection().ops.tablespace_sql(tablespace, inline=True))
+            sql = ' '.join(field_output)
+            sqlparams = ()
 
-            sql = ' '.join(field_output)
-
-            sqlparams = ()
             # if the field is "NOT NULL" and a default value is provided, create the column with it
             # this allows the addition of a NOT NULL field to a table with existing rows
             if not getattr(field, '_suppress_default', False):
                     #    raise ValueError("Attempting to add a non null column that isn't character based without an explicit default value.")
 
             # Firebird need set not null after of default value keyword
-            if not field.null:
-                field_output.append('NOT NULL')
+            if not field.primary_key and not field.null:
+                sql += ' NOT NULL'
 
             if field.rel and self.supports_foreign_keys:
                 self.add_deferred_sql(
                         field.rel.to._meta.get_field(field.rel.field_name).column
                     )
                 )
+
+    @generic.copy_column_constraints
+    @generic.delete_column_constraints
+    def rename_column(self, table_name, old, new):
+        if old == new:
+            # Short-circuit out
+            return []
+
+        self.execute('ALTER TABLE %s ALTER %s TO %s;' % (
+            self.quote_name(table_name),
+            self.quote_name(old),
+            self.quote_name(new),
+        ))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.