summaryrefslogtreecommitdiff
path: root/django/db/backends/postgresql_psycopg2/base.py
diff options
context:
space:
mode:
authorDerek Anderson <public@kered.org>2007-08-03 20:49:19 +0000
committerDerek Anderson <public@kered.org>2007-08-03 20:49:19 +0000
commitc383135d2d686b4341b29d0a5ae7cd1c98d36212 (patch)
treea23ec8ff8ff99dba3a9214a7371105371b5ba67e /django/db/backends/postgresql_psycopg2/base.py
parentce1c58421a5cccfc92f2b5427b0c9a66af24a9f3 (diff)
schema-evolution:
added the postgresql_psycopg2 backend added more unit tests git-svn-id: http://code.djangoproject.com/svn/django/branches/schema-evolution@5792 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/backends/postgresql_psycopg2/base.py')
-rw-r--r--django/db/backends/postgresql_psycopg2/base.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py
index e1687baae8..d86a5c6d49 100644
--- a/django/db/backends/postgresql_psycopg2/base.py
+++ b/django/db/backends/postgresql_psycopg2/base.py
@@ -225,6 +225,47 @@ def get_sql_sequence_reset(style, model_list):
style.SQL_TABLE(f.m2m_db_table())))
return output
+def get_change_table_name_sql( table_name, old_table_name ):
+ output = []
+ output.append('ALTER TABLE '+ quote_name(old_table_name) +' RENAME TO '+ quote_name(table_name) + ';')
+ return output
+
+def get_change_column_name_sql( table_name, indexes, old_col_name, new_col_name, col_def ):
+ # TODO: only supports a single primary key so far
+ pk_name = None
+ for key in indexes.keys():
+ if indexes[key]['primary_key']: pk_name = key
+ output = []
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' RENAME COLUMN '+ quote_name(old_col_name) +' TO '+ quote_name(new_col_name) +';' )
+ return output
+
+def get_change_column_def_sql( table_name, col_name, col_type, null, unique, primary_key ):
+ output = []
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' ADD COLUMN '+ quote_name(col_name+'_tmp') +' '+ col_type + ';' )
+ output.append( 'UPDATE '+ quote_name(table_name) +' SET '+ quote_name(col_name+'_tmp') +' = '+ quote_name(col_name) + ';' )
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' DROP COLUMN '+ quote_name(col_name) +';' )
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' RENAME COLUMN '+ quote_name(col_name+'_tmp') +' TO '+ quote_name(col_name) + ';' )
+ if not null:
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' ALTER COLUMN '+ quote_name(col_name) +' SET NOT NULL;' )
+ if unique:
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' ADD CONSTRAINT '+ table_name +'_'+ col_name +'_unique_constraint UNIQUE('+ col_name +');' )
+
+ return output
+
+def get_add_column_sql( table_name, col_name, col_type, null, unique, primary_key ):
+ output = []
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' ADD COLUMN '+ quote_name(col_name) +' '+ col_type + ';' )
+ if not null:
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' ALTER COLUMN '+ quote_name(col_name) +' SET NOT NULL;' )
+ if unique:
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' ADD CONSTRAINT '+ table_name +'_'+ col_name +'_unique_constraint UNIQUE('+ col_name +');' )
+ return output
+
+def get_drop_column_sql( table_name, col_name ):
+ output = []
+ output.append( 'ALTER TABLE '+ quote_name(table_name) +' DROP COLUMN '+ quote_name(col_name) + ';' )
+ return output
+
OPERATOR_MAPPING = {
'exact': '= %s',
'iexact': 'ILIKE %s',