Hi Sergey,

  Is there a bug or a blueprint for this?  I did a quick search but
didn't see one.

Thanks,

Trevor

On Wed, 2014-02-05 at 16:06 +0400, Sergey Kolekonov wrote:
> I'm currently working on moving on the MySQL for savanna-ci
> 
> 
> On Wed, Feb 5, 2014 at 3:53 PM, Sergey Lukjanov
> <slukja...@mirantis.com> wrote:
>         Agreed, let's move on to the MySQL for savanna-ci to run
>         integration tests against production-like DB.
>         
>         
>         On Wed, Feb 5, 2014 at 1:54 AM, Andrew Lazarev
>         <alaza...@mirantis.com> wrote:
>                 Since sqlite is not in the list of "databases that
>                 would be used in production", CI should use other DB
>                 for testing.
>                 
>                 
>                 Andrew.
>                 
>                 
>                 On Tue, Feb 4, 2014 at 1:13 PM, Alexander Ignatov
>                 <aigna...@mirantis.com> wrote:
>                         Indeed. We should create a bug around that and
>                         move our savanna-ci to mysql.
>                         
>                         Regards,
>                         Alexander Ignatov
>                         
>                         
>                         
>                         On 05 Feb 2014, at 01:01, Trevor McKay
>                         <tmc...@redhat.com> wrote:
>                         
>                         > This brings up an interesting problem:
>                         >
>                         > In https://review.openstack.org/#/c/70420/
>                         I've added a migration that
>                         > uses a drop column for an upgrade.
>                         >
>                         > But savann-ci is apparently using a sqlite
>                         database to run.  So it can't
>                         > possibly pass.
>                         >
>                         > What do we do here?  Shift savanna-ci tests
>                         to non sqlite?
>                         >
>                         > Trevor
>                         >
>                         > On Sat, 2014-02-01 at 18:17 +0200, Roman
>                         Podoliaka wrote:
>                         >> Hi all,
>                         >>
>                         >> My two cents.
>                         >>
>                         >>> 2) Extend alembic so that op.drop_column()
>                         does the right thing
>                         >> We could, but should we?
>                         >>
>                         >> The only reason alembic doesn't support
>                         these operations for SQLite
>                         >> yet is that SQLite lacks proper support of
>                         ALTER statement. For
>                         >> sqlalchemy-migrate we've been providing a
>                         work-around in the form of
>                         >> recreating of a table and copying of all
>                         existing rows (which is a
>                         >> hack, really).
>                         >>
>                         >> But to be able to recreate a table, we
>                         first must have its definition.
>                         >> And we've been relying on SQLAlchemy schema
>                         reflection facilities for
>                         >> that. Unfortunately, this approach has a
>                         few drawbacks:
>                         >>
>                         >> 1) SQLAlchemy versions prior to 0.8.4 don't
>                         support reflection of
>                         >> unique constraints, which means the
>                         recreated table won't have them;
>                         >>
>                         >> 2) special care must be taken in 'edge'
>                         cases (e.g. when you want to
>                         >> drop a BOOLEAN column, you must also drop
>                         the corresponding CHECK (col
>                         >> in (0, 1)) constraint manually, or SQLite
>                         will raise an error when the
>                         >> table is recreated without the column being
>                         dropped)
>                         >>
>                         >> 3) special care must be taken for 'custom'
>                         type columns (it's got
>                         >> better with SQLAlchemy 0.8.x, but e.g. in
>                         0.7.x we had to override
>                         >> definitions of reflected BIGINT columns
>                         manually for each
>                         >> column.drop() call)
>                         >>
>                         >> 4) schema reflection can't be performed
>                         when alembic migrations are
>                         >> run in 'offline' mode (without connecting
>                         to a DB)
>                         >> ...
>                         >> (probably something else I've forgotten)
>                         >>
>                         >> So it's totally doable, but, IMO, there is
>                         no real benefit in
>                         >> supporting running of schema migrations for
>                         SQLite.
>                         >>
>                         >>> ...attempts to drop schema generation
>                         based on models in favor of migrations
>                         >>
>                         >> As long as we have a test that checks that
>                         the DB schema obtained by
>                         >> running of migration scripts is equal to
>                         the one obtained by calling
>                         >> metadata.create_all(), it's perfectly OK to
>                         use model definitions to
>                         >> generate the initial DB schema for running
>                         of unit-tests as well as
>                         >> for new installations of OpenStack (and
>                         this is actually faster than
>                         >> running of migration scripts). ... and if
>                         we have strong objections
>                         >> against doing metadata.create_all(), we can
>                         always use migration
>                         >> scripts for both new installations and
>                         upgrades for all DB backends,
>                         >> except SQLite.
>                         >>
>                         >> Thanks,
>                         >> Roman
>                         >>
>                         >> On Sat, Feb 1, 2014 at 12:09 PM, Eugene
>                         Nikanorov
>                         >> <enikano...@mirantis.com> wrote:
>                         >>> Boris,
>                         >>>
>                         >>> Sorry for the offtopic.
>                         >>> Is switching to model-based schema
>                         generation is something decided? I see
>                         >>> the opposite: attempts to drop schema
>                         generation based on models in favor of
>                         >>> migrations.
>                         >>> Can you point to some discussion threads?
>                         >>>
>                         >>> Thanks,
>                         >>> Eugene.
>                         >>>
>                         >>>
>                         >>>
>                         >>> On Sat, Feb 1, 2014 at 2:19 AM, Boris
>                         Pavlovic <bpavlo...@mirantis.com>
>                         >>> wrote:
>                         >>>>
>                         >>>> Jay,
>                         >>>>
>                         >>>> Yep we shouldn't use migrations for
>                         sqlite at all.
>                         >>>>
>                         >>>> The major issue that we have now is that
>                         we are not able to ensure that DB
>                         >>>> schema created by migration & models are
>                         same (actually they are not same).
>                         >>>>
>                         >>>> So before dropping support of migrations
>                         for sqlite & switching to model
>                         >>>> based created schema we should add tests
>                         that will check that model &
>                         >>>> migrations are synced.
>                         >>>> (we are working on this)
>                         >>>>
>                         >>>>
>                         >>>>
>                         >>>> Best regards,
>                         >>>> Boris Pavlovic
>                         >>>>
>                         >>>>
>                         >>>> On Fri, Jan 31, 2014 at 7:31 PM, Andrew
>                         Lazarev <alaza...@mirantis.com>
>                         >>>> wrote:
>                         >>>>>
>                         >>>>> Trevor,
>                         >>>>>
>                         >>>>> Such check could be useful on alembic
>                         side too. Good opportunity for
>                         >>>>> contribution.
>                         >>>>>
>                         >>>>> Andrew.
>                         >>>>>
>                         >>>>>
>                         >>>>> On Fri, Jan 31, 2014 at 6:12 AM, Trevor
>                         McKay <tmc...@redhat.com> wrote:
>                         >>>>>>
>                         >>>>>> Okay,  I can accept that migrations
>                         shouldn't be supported on sqlite.
>                         >>>>>>
>                         >>>>>> However, if that's the case then we
>                         need to fix up savanna-db-manage so
>                         >>>>>> that it checks the db connection info
>                         and throws a polite error to the
>                         >>>>>> user for attempted migrations on
>                         unsupported platforms. For example:
>                         >>>>>>
>                         >>>>>> "Database migrations are not supported
>                         for sqlite"
>                         >>>>>>
>                         >>>>>> Because, as a developer, when I see a
>                         sql error trace as the result of
>                         >>>>>> an operation I assume it's broken :)
>                         >>>>>>
>                         >>>>>> Best,
>                         >>>>>>
>                         >>>>>> Trevor
>                         >>>>>>
>                         >>>>>> On Thu, 2014-01-30 at 15:04 -0500, Jay
>                         Pipes wrote:
>                         >>>>>>> On Thu, 2014-01-30 at 14:51 -0500,
>                         Trevor McKay wrote:
>                         >>>>>>>> I was playing with alembic migration
>                         and discovered that
>                         >>>>>>>> op.drop_column() doesn't work with
>                         sqlite.  This is because sqlite
>                         >>>>>>>> doesn't support dropping a column
>                         (broken imho, but that's another
>                         >>>>>>>> discussion).  Sqlite throws a syntax
>                         error.
>                         >>>>>>>>
>                         >>>>>>>> To make this work with sqlite, you
>                         have to copy the table to a
>                         >>>>>>>> temporary
>                         >>>>>>>> excluding the column(s) you don't
>                         want and delete the old one,
>                         >>>>>>>> followed
>                         >>>>>>>> by a rename of the new table.
>                         >>>>>>>>
>                         >>>>>>>> The existing 002 migration uses
>                         op.drop_column(), so I'm assuming
>                         >>>>>>>> it's
>                         >>>>>>>> broken, too (I need to check what the
>                         migration test is doing).  I
>                         >>>>>>>> was
>                         >>>>>>>> working on an 003.
>                         >>>>>>>>
>                         >>>>>>>> How do we want to handle this?  Three
>                         good options I can think of:
>                         >>>>>>>>
>                         >>>>>>>> 1) don't support migrations for
>                         sqlite (I think "no", but maybe)
>                         >>>>>>>>
>                         >>>>>>>> 2) Extend alembic so that
>                         op.drop_column() does the right thing
>                         >>>>>>>> (more
>                         >>>>>>>> open-source contributions for us,
>                         yay :) )
>                         >>>>>>>>
>                         >>>>>>>> 3) Add our own wrapper in savanna so
>                         that we have a drop_column()
>                         >>>>>>>> method
>                         >>>>>>>> that wraps copy/rename.
>                         >>>>>>>>
>                         >>>>>>>> Ideas, comments?
>                         >>>>>>>
>                         >>>>>>> Migrations should really not be run
>                         against SQLite at all -- only on
>                         >>>>>>> the
>                         >>>>>>> databases that would be used in
>                         production. I believe the general
>                         >>>>>>> direction of the contributor community
>                         is to be consistent around
>                         >>>>>>> testing of migrations and to not run
>                         migrations at all in unit tests
>                         >>>>>>> (which use SQLite).
>                         >>>>>>>
>                         >>>>>>> Boris (cc'd) may have some more to say
>                         on this topic.
>                         >>>>>>>
>                         >>>>>>> Best,
>                         >>>>>>> -jay
>                         >>>>>>>
>                         >>>>>>>
>                         >>>>>>>
>                         _______________________________________________
>                         >>>>>>> OpenStack-dev mailing list
>                         >>>>>>> OpenStack-dev@lists.openstack.org
>                         >>>>>>>
>                         
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                         >>>>>>
>                         >>>>>>
>                         >>>>>>
>                         >>>>>>
>                         _______________________________________________
>                         >>>>>> OpenStack-dev mailing list
>                         >>>>>> OpenStack-dev@lists.openstack.org
>                         >>>>>>
>                         
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                         >>>>>
>                         >>>>>
>                         >>>>
>                         >>>>
>                         >>>>
>                         _______________________________________________
>                         >>>> OpenStack-dev mailing list
>                         >>>> OpenStack-dev@lists.openstack.org
>                         >>>>
>                         
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                         >>>>
>                         >>>
>                         >>>
>                         >>>
>                         _______________________________________________
>                         >>> OpenStack-dev mailing list
>                         >>> OpenStack-dev@lists.openstack.org
>                         >>>
>                         
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                         >>>
>                         >>
>                         >>
>                         _______________________________________________
>                         >> OpenStack-dev mailing list
>                         >> OpenStack-dev@lists.openstack.org
>                         >>
>                         
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                         >
>                         >
>                         >
>                         >
>                         _______________________________________________
>                         > OpenStack-dev mailing list
>                         > OpenStack-dev@lists.openstack.org
>                         >
>                         
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                         
>                         
>                         _______________________________________________
>                         OpenStack-dev mailing list
>                         OpenStack-dev@lists.openstack.org
>                         
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                 
>                 
>                 
>                 _______________________________________________
>                 OpenStack-dev mailing list
>                 OpenStack-dev@lists.openstack.org
>                 
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>                 
>         
>         
>         
>         
>         -- 
>         Sincerely yours,
>         Sergey Lukjanov
>         Savanna Technical Lead
>         Mirantis Inc.
>         
>         _______________________________________________
>         OpenStack-dev mailing list
>         OpenStack-dev@lists.openstack.org
>         http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>         
> 
> 
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to