[Python-modules-commits] r26195 - in packages/migrate/trunk/debian (5 files)
zigo at users.alioth.debian.org
zigo at users.alioth.debian.org
Fri Oct 18 14:54:26 UTC 2013
Date: Friday, October 18, 2013 @ 14:54:25
Author: zigo
Revision: 26195
* Adds new upstream patch: Fix dropping of indexed columns in sqlite/sa08
* Switched control Homepage: and copyright Source: fields to the new upstream homepage.
Added:
packages/migrate/trunk/debian/patches/Fix_dropping_of_indexed_columns_in_sqlite_sa08.patch
Modified:
packages/migrate/trunk/debian/changelog
packages/migrate/trunk/debian/control
packages/migrate/trunk/debian/copyright
packages/migrate/trunk/debian/patches/series
Modified: packages/migrate/trunk/debian/changelog
===================================================================
--- packages/migrate/trunk/debian/changelog 2013-10-18 14:41:25 UTC (rev 26194)
+++ packages/migrate/trunk/debian/changelog 2013-10-18 14:54:25 UTC (rev 26195)
@@ -1,3 +1,12 @@
+migrate (0.7.2-7) unstable; urgency=low
+
+ * Adds upstrema patch which fixes dropping of indexed columns in sqlite
+ with SQLAlchemy 08.
+ * Switched control Homepage: and copyright Source: fields to the new upstream
+ homepage.
+
+ -- Thomas Goirand <zigo at debian.org> Fri, 18 Oct 2013 14:32:30 +0000
+
migrate (0.7.2-6) unstable; urgency=low
* Version-Depends on python-sqlalchemy >= 0.8 (since lower versions
Modified: packages/migrate/trunk/debian/control
===================================================================
--- packages/migrate/trunk/debian/control 2013-10-18 14:41:25 UTC (rev 26194)
+++ packages/migrate/trunk/debian/control 2013-10-18 14:54:25 UTC (rev 26195)
@@ -7,7 +7,7 @@
python-setuptools (>= 0.6b3), python-sphinx (>= 1.0.7+dfsg) | python3-sphinx,
python-sqlalchemy (>= 0.8), python-decorator, python-tempita (>= 0.4)
Standards-Version: 3.9.4
-Homepage: http://code.google.com/p/sqlalchemy-migrate/
+Homepage: https://github.com/stackforge/sqlalchemy-migrate
Vcs-Svn: svn://anonscm.debian.org/python-modules/packages/migrate/trunk/
Vcs-Browser: http://anonscm.debian.org/viewvc/python-modules/packages/migrate/trunk/
Modified: packages/migrate/trunk/debian/copyright
===================================================================
--- packages/migrate/trunk/debian/copyright 2013-10-18 14:41:25 UTC (rev 26194)
+++ packages/migrate/trunk/debian/copyright 2013-10-18 14:54:25 UTC (rev 26195)
@@ -1,6 +1,6 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: sqlalchemy-migrate
-Source: http://code.google.com/p/sqlalchemy-migrate/downloads/list
+Source: https://github.com/stackforge/sqlalchemy-migrate
Files: debian/*
Copyright: (c) 2006-2009, Jan Dittberner <jandd at debian.org>
Added: packages/migrate/trunk/debian/patches/Fix_dropping_of_indexed_columns_in_sqlite_sa08.patch
===================================================================
--- packages/migrate/trunk/debian/patches/Fix_dropping_of_indexed_columns_in_sqlite_sa08.patch (rev 0)
+++ packages/migrate/trunk/debian/patches/Fix_dropping_of_indexed_columns_in_sqlite_sa08.patch 2013-10-18 14:54:25 UTC (rev 26195)
@@ -0,0 +1,118 @@
+Description: Fix dropping of indexed columns in sqlite/sa08
+ Version 0.8 of SQLAlchemy added support of indexes on expressions in addition
+ to plain table columns, which changed the way indexes are created.
+ .
+ This broke support of dropping columns of composite indexes for SQLite: due to
+ limitations of ALTER in SQLite every time a column is dropped, we recreate the
+ whole table without the given column; if a column is a part of a composite
+ index, we change the index definition to omit that column and then indexes are
+ recreated too.
+ .
+ SQLAlchemy versions starting from 0.8 no more pay attention to 'columns'
+ attribute of Index instances when generating DDL for indexes, so when one of
+ columns of a composite index is dropped, we try to create a new index on the
+ column that doesn't exist anymore, which of course fails.
+Author: Roman Podolyaka <rpodolyaka at mirantis.com>
+Origin: upstream, https://review.openstack.org/#/c/52634/
+X-Git-Url: https://review.openstack.org/gitweb?p=stackforge%2Fsqlalchemy-migrate.git;a=commitdiff_plain;h=2485118c24b2293747dfafb3be58a6bdc65f7d66
+Bug-Ubuntu: https://code.launchpad.net/bugs/1241038
+Date: Fri, 18 Oct 2013 11:23:11 +0000 (+0300)
+
+--- a/migrate/changeset/__init__.py
++++ b/migrate/changeset/__init__.py
+@@ -14,6 +14,7 @@ warnings.simplefilter('always', Deprecat
+
+ _sa_version = tuple(int(re.match("\d+", x).group(0)) for x in _sa_version.split("."))
+ SQLA_07 = _sa_version >= (0, 7)
++SQLA_08 = _sa_version >= (0, 8)
+
+ del re
+ del _sa_version
+--- a/migrate/changeset/schema.py
++++ b/migrate/changeset/schema.py
+@@ -11,7 +11,7 @@ from sqlalchemy.schema import ForeignKey
+ from sqlalchemy.schema import UniqueConstraint
+
+ from migrate.exceptions import *
+-from migrate.changeset import SQLA_07
++from migrate.changeset import SQLA_07, SQLA_08
+ from migrate.changeset.databases.visitor import (get_engine_visitor,
+ run_single_visitor)
+
+@@ -573,7 +573,9 @@ populated with defaults
+ if col.name!=self.name:
+ columns.append(col)
+ if columns:
+- index.columns=columns
++ index.columns = columns
++ if SQLA_08:
++ index.expressions = columns
+ else:
+ to_drop.add(index)
+ table.indexes = table.indexes - to_drop
+--- a/migrate/tests/changeset/test_changeset.py
++++ b/migrate/tests/changeset/test_changeset.py
+@@ -17,6 +17,7 @@ class TestAddDropColumn(fixture.DB):
+ """
+ level = fixture.DB.CONNECT
+ table_name = 'tmp_adddropcol'
++ table_name_idx = 'tmp_adddropcol_idx'
+ table_int = 0
+
+ def _setup(self, url):
+@@ -25,14 +26,27 @@ class TestAddDropColumn(fixture.DB):
+ self.table = Table(self.table_name, self.meta,
+ Column('id', Integer, unique=True),
+ )
++ self.table_idx = Table(
++ self.table_name_idx,
++ self.meta,
++ Column('id', Integer, primary_key=True),
++ Column('a', Integer),
++ Column('b', Integer),
++ Index('test_idx', 'a', 'b')
++ )
+ self.meta.bind = self.engine
+ if self.engine.has_table(self.table.name):
+ self.table.drop()
++ if self.engine.has_table(self.table_idx.name):
++ self.table_idx.drop()
+ self.table.create()
++ self.table_idx.create()
+
+ def _teardown(self):
+ if self.engine.has_table(self.table.name):
+ self.table.drop()
++ if self.engine.has_table(self.table_idx.name):
++ self.table_idx.drop()
+ self.meta.clear()
+ super(TestAddDropColumn,self)._teardown()
+
+@@ -251,7 +265,26 @@ class TestAddDropColumn(fixture.DB):
+
+ col.drop(self.table)
+
+-# TODO: remove already attached columns with indexes, uniques, pks, fks ..
++# TODO: remove already attached columns with uniques, pks, fks ..
++ @fixture.usedb(not_supported='postgresql')
++ def test_drop_column_of_composite_index(self):
++ # NOTE(rpodolyaka): postgresql automatically drops a composite index
++ # if one of its columns is dropped
++ self.table_idx.c.b.drop()
++
++ reflected = Table(self.table_idx.name, MetaData(), autoload=True,
++ autoload_with=self.engine)
++ index = next(iter(reflected.indexes))
++ self.assertEquals(['a'], [c.name for c in index.columns])
++
++ @fixture.usedb()
++ def test_drop_all_columns_of_composite_index(self):
++ self.table_idx.c.a.drop()
++ self.table_idx.c.b.drop()
++
++ reflected = Table(self.table_idx.name, MetaData(), autoload=True,
++ autoload_with=self.engine)
++ self.assertEquals(0, len(reflected.indexes))
+
+ def _check_index(self,expected):
+ if 'mysql' in self.engine.name or 'postgres' in self.engine.name:
Modified: packages/migrate/trunk/debian/patches/series
===================================================================
--- packages/migrate/trunk/debian/patches/series 2013-10-18 14:41:25 UTC (rev 26194)
+++ packages/migrate/trunk/debian/patches/series 2013-10-18 14:54:25 UTC (rev 26195)
@@ -2,3 +2,4 @@
keep_empty_modules.patch
disable_issuetracker.patch
Add_compatibility_with_sqlalchemy_0.8.patch
+Fix_dropping_of_indexed_columns_in_sqlite_sa08.patch
More information about the Python-modules-commits
mailing list