Commits

Anonymous committed 1010aae

#74: Rename primary key index with table

Comments (0)

Files changed (1)

db/postgresql_psycopg2.py

         self.execute('ALTER TABLE %s RENAME COLUMN %s TO %s;' % params)
     
     def rename_table(self, old_table_name, table_name):
+        "will rename the table and an associated ID sequence and primary key index"
         # First, rename the table
         generic.DatabaseOperations.rename_table(self, old_table_name, table_name)
         # Then, try renaming the ID sequence
         try:
             generic.DatabaseOperations.rename_table(self, old_table_name+"_id_seq", table_name+"_id_seq")
         except:
-            print "   ~ No such sequence (ignoring error)"
+            if self.debug:
+                print "   ~ No such sequence (ignoring error)"
             self.rollback_transaction()
         else:
             self.commit_transaction()
-        self.start_transaction()
+        self.start_transaction()
+
+        # Rename primary key index, will not rename other indices on
+        # the table that are used by django (e.g. foreign keys). Until
+        # figure out how, you need to do this yourself.
+        try:
+            generic.DatabaseOperations.rename_table(self, old_table_name+"_pkey", table_name+ "_pkey")
+        except:
+            if self.debug:
+                print "   ~ No such primary key (ignoring error)"
+            self.rollback_transaction()
+        else:
+            self.commit_transaction()
+        self.start_transaction()
+
+
+    def rename_index(self, old_index_name, index_name):
+        "Rename an index individually"
+        generic.DatabaseOperations.rename_table(self, old_index_name, index_name)