diff options
| author | Derek Anderson <public@kered.org> | 2007-08-03 20:49:19 +0000 |
|---|---|---|
| committer | Derek Anderson <public@kered.org> | 2007-08-03 20:49:19 +0000 |
| commit | c383135d2d686b4341b29d0a5ae7cd1c98d36212 (patch) | |
| tree | a23ec8ff8ff99dba3a9214a7371105371b5ba67e /django/db/backends/postgresql_psycopg2/base.py | |
| parent | ce1c58421a5cccfc92f2b5427b0c9a66af24a9f3 (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.py | 41 |
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', |
