Skip to content

1.4.0

Compare
Choose a tag to compare
@sqla-tester sqla-tester released this 04 Feb 21:07

1.4.0

Released: February 4, 2020

feature

  • [feature] [batch] Added new parameters BatchOperations.add_column.insert_before,
    BatchOperations.add_column.insert_after which provide for
    establishing the specific position in which a new column should be placed.
    Also added Operations.batch_alter_table.partial_reordering
    which allows the complete set of columns to be reordered when the new table
    is created. Both operations apply only to when batch mode is recreating
    the whole table using recreate="always". Thanks to Marcin Szymanski
    for assistance with the implementation.

    References: #640

bug

  • [bug] [autogenerate] Adjusted the unique constraint comparison logic in a similar manner as that
    of #421 did for indexes in order to take into account SQLAlchemy's
    own truncation of long constraint names when a naming convention is in use.
    Without this step, a name that is truncated by SQLAlchemy based on a unique
    constraint naming convention or hardcoded name will not compare properly.

    References: #647

  • [bug] [autogenerate] A major rework of the "type comparison" logic is in place which changes the
    entire approach by which column datatypes are compared. Types are now
    compared based on the DDL string generated by the metadata type vs. the
    datatype reflected from the database. This means we compare types based on
    what would actually render and additionally if elements of the types change
    like string length, those changes are detected as well. False positives
    like those generated between SQLAlchemy Boolean and MySQL TINYINT should
    also be resolved. Thanks very much to Paul Becotte for lots of hard work
    and patience on this one.

    References: #605

usecase

  • [usecase] [environment] Moved the use of the __file__ attribute at the base of the Alembic
    package into the one place that it is specifically needed, which is when
    the config attempts to locate the template directory. This helps to allow
    Alembic to be fully importable in environments that are using Python
    memory-only import schemes. Pull request courtesy layday.

    References: #648

misc

  • [change] The internal inspection routines no longer use SQLAlchemy's
    Inspector.from_engine() method, which is expected to be deprecated in
    1.4. The inspect() function is now used.