Thanks for your quick responses.  We have never downgraded our prod 
database, but I feel it's still nice to have that option.

I was just thinking.... While I'm thinking there needs to be one migration 
that merges 2 versions, and in my mind it has to work on both 
repositories.... That's not true.  When merging migrations from one repo 1 
into repo 2... the repo 2 migrations will already be out there on prod.  So 
the order is determined.  Likewise for merging migrations from repo 2 into 
repo 1 if that's needed.

I look forward to 1.6.  I was just watching Selena Deckelmann's video on 
Alembic when it didn't have merging.  The progress here is great.  Thanks.

On Tuesday, March 9, 2021 at 10:36:02 PM UTC-5 mik...@zzzcomputing.com 
wrote:

> just so you know, surgical-precision downgrades will be more reliable once 
> we get the 1.6 series of Alembic out, where we have a total rewrite of how 
> the internal traversal works in order to make upgrade/downgrades across 
> complex trees more reliable.      downgrades are not *too* common in 
> production systems.
>
> On Tue, Mar 9, 2021, at 10:15 PM, 'br...@derocher.org' via 
> sqlalchemy-alembic wrote:
>
> c787 did not fail, nor did 60e8 on upgrade.  According to alembic history, 
> alembic ran 1efb before c787.  So the result is I have a view in my 
> database that will never get used because the query is now embedded in 
> code.  The solution is clear.  60e8 should drop a view if there is one.
>
> For downgrade we get lucky.
>
> I feel the situation could be more diabolic for downgrade.  Unlike code 
> version control, it seems the precondition does not need to exist, at least 
> for views when you change only the body, not the "view signature".  If for 
> example the c787 upgrade as "create or replace view v1 as select 2, 2" then 
> it gets messy.  I don't even know what downgrade would look like.  I assume 
> alembic would undo the last upgrade applied based on history.
>
> For a single repository, only one branch gets into master first.  So that 
> defines the order.  When there's a fork, it gets more complicated.
>
> On Tuesday, March 9, 2021 at 6:12:06 PM UTC-5 mik...@zzzcomputing.com 
> wrote:
>
>
>
>
> On Tue, Mar 9, 2021, at 5:06 PM, 'br...@derocher.org' via 
> sqlalchemy-alembic wrote:
>
> I'm wondering how to solve an issue.
>
> One developer created migration 1efb
>
> upgrade:
>   drop view v1 -- moved to query in the code
>
> downgrade:
>    create view v1 as select 1
>
> Another developer created a migration c787
>
> upgrade:
>    create or replace view v1 as select 2
>
> downgrade
>    create or replace view v1 as select 1
>
> Now I'm merging them with alembic merge heads.  
>
> I get revision = 60e8, down_revision = (c787, 1efb).
>
> My question is which migration runs first.  If 1efb goes first, c787 will 
> fail.  If 1efb goes first upgrade is smooth.
>
> My concern is some databases are at 1efb and some are at c787.  For the 
> database at 1efb, how to I prevent a failure?  Can I put some logic in 
> upgrade() (and downgrade()) to prevent this?
>
>
> seems tricky but does c787 actually fail?  it says "create or replace", so 
> if "v1" was already dropped it would just create a new view.     in the 
> other direction, the view is still named "v1" so 1efb will just drop "v1".
>
> if this is not exactly accurate and the name is different or something you 
> can always modify 1efb to read "drop view if exists" and "create or replace 
> view ".    if there's no "drop view if exists" on your target DB then I'd 
> stick a quick reflection query in the migration to check if it exists, 
> inspect(engine).get_view_definition() should have that.
>
>
>
>
> Thanks,
> Brian
>
> PS: It's actually a bit more complicated than this because I'm merging git 
> forks.
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy-alembic" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy-alem...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy-alembic/e1fe03f2-bc06-4c76-a75b-e8d0efcf4473n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy-alembic/e1fe03f2-bc06-4c76-a75b-e8d0efcf4473n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy-alembic" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy-alem...@googlegroups.com.
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy-alembic/3873492a-b421-4fe1-b736-9a0d462961a1n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy-alembic/3873492a-b421-4fe1-b736-9a0d462961a1n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy-alembic+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy-alembic/118d70fb-57e2-43be-aeb4-341691589e0dn%40googlegroups.com.

Reply via email to