[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