move the changelog to the new changelog extension
This commit is contained in:
478
CHANGES
478
CHANGES
@@ -1,479 +1,15 @@
|
||||
0.4.1
|
||||
=====
|
||||
- [feature] Explicit error message describing the case
|
||||
when downgrade --sql is used without specifying
|
||||
specific start/end versions. #66
|
||||
|
||||
- [bug] Removed erroneous "emit_events" attribute
|
||||
from operations.create_table() documentation.
|
||||
#81
|
||||
|
||||
- [bug] Fixed the minute component in file_template
|
||||
which returned the month part of the create date.
|
||||
|
||||
0.4.0
|
||||
MOVED
|
||||
=====
|
||||
- [feature] Support for tables in alternate schemas
|
||||
has been added fully to all operations, as well as to
|
||||
the autogenerate feature. When using autogenerate,
|
||||
specifying the flag include_schemas=True to
|
||||
Environment.configure() will also cause autogenerate
|
||||
to scan all schemas located by Inspector.get_schema_names(),
|
||||
which is supported by *some* (but not all)
|
||||
SQLAlchemy dialects including Postgresql.
|
||||
*Enormous* thanks to Bruno Binet for a huge effort
|
||||
in implementing as well as writing tests. #33.
|
||||
|
||||
- [feature] The command line runner has been organized
|
||||
into a reusable CommandLine object, so that other
|
||||
front-ends can re-use the argument parsing built
|
||||
in. #70
|
||||
Please see:
|
||||
|
||||
- [feature] Added "stdout" option to Config, provides
|
||||
control over where the "print" output of commands like
|
||||
"history", "init", "current" etc. are sent. #43
|
||||
/docs/changelog.html
|
||||
|
||||
- [bug] Fixed the "multidb" template which was badly out
|
||||
of date. It now generates revision files using
|
||||
the configuration to determine the different
|
||||
upgrade_<xyz>() methods needed as well, instead of
|
||||
needing to hardcode these. Huge thanks to
|
||||
BryceLohr for doing the heavy lifting here. #71
|
||||
/docs/build/changelog.rst
|
||||
|
||||
- [bug] Fixed the regexp that was checking for .py files
|
||||
in the version directory to allow any .py file through.
|
||||
Previously it was doing some kind of defensive checking,
|
||||
probably from some early notions of how this directory
|
||||
works, that was prohibiting various filename patterns
|
||||
such as those which begin with numbers. #72
|
||||
or
|
||||
|
||||
- [bug] Fixed MySQL rendering for server_default which
|
||||
didn't work if the server_default was a generated
|
||||
SQL expression. Courtesy Moriyoshi Koizumi.
|
||||
https://alembic.readthedocs.org/en/latest/changelog.html
|
||||
|
||||
- [feature] Added support for alteration of MySQL
|
||||
columns that have AUTO_INCREMENT, as well as enabling
|
||||
this flag. Courtesy Moriyoshi Koizumi.
|
||||
|
||||
0.3.6
|
||||
=====
|
||||
- [feature] Added include_symbol option to
|
||||
EnvironmentContext.configure(),
|
||||
specifies a callable which will include/exclude tables
|
||||
in their entirety from the autogeneration process
|
||||
based on name. #27
|
||||
|
||||
- [feature] Added year, month, day, hour, minute, second
|
||||
variables to file_template. #59
|
||||
|
||||
- [feature] Added 'primary' to the list of constraint types
|
||||
recognized for MySQL drop_constraint().
|
||||
|
||||
- [feature] Added --sql argument to the "revision" command,
|
||||
for the use case where the "revision_environment"
|
||||
config option is being used but SQL access isn't
|
||||
desired.
|
||||
|
||||
- [bug] Repaired create_foreign_key() for
|
||||
self-referential foreign keys, which weren't working
|
||||
at all.
|
||||
|
||||
- [bug] 'alembic' command reports an informative
|
||||
error message when the configuration is missing
|
||||
the 'script_directory' key. #63
|
||||
|
||||
- [bug] Fixes made to the constraints created/dropped
|
||||
alongside so-called "schema" types such as
|
||||
Boolean and Enum. The create/drop constraint logic
|
||||
does not kick in when using a dialect that doesn't
|
||||
use constraints for these types, such as postgresql,
|
||||
even when existing_type is specified to
|
||||
alter_column(). Additionally, the constraints
|
||||
are not affected if existing_type is passed but
|
||||
type_ is not, i.e. there's no net change
|
||||
in type. #62
|
||||
|
||||
- [bug] Improved error message when specifiying
|
||||
non-ordered revision identifiers to cover
|
||||
the case when the "higher" rev is None,
|
||||
improved message overall. #66
|
||||
|
||||
0.3.5
|
||||
=====
|
||||
- [bug] Fixed issue whereby reflected server defaults
|
||||
wouldn't be quoted correctly; uses repr() now.
|
||||
#31
|
||||
|
||||
- [bug] Fixed issue whereby when autogenerate would
|
||||
render create_table() on the upgrade side for a
|
||||
table that has a Boolean type, an unnecessary
|
||||
CheckConstraint() would be generated. #58
|
||||
|
||||
- [feature] Implemented SQL rendering for
|
||||
CheckConstraint() within autogenerate upgrade,
|
||||
including for literal SQL as well as SQL Expression
|
||||
Language expressions.
|
||||
|
||||
0.3.4
|
||||
=====
|
||||
- [bug] Fixed command-line bug introduced by the
|
||||
"revision_environment" feature.
|
||||
|
||||
0.3.3
|
||||
=====
|
||||
NOTE: 0.3.3 was released with a command line bug,
|
||||
so please skip right to 0.3.4
|
||||
|
||||
- [feature] New config argument
|
||||
"revision_environment=true", causes env.py to
|
||||
be run unconditionally when the "revision" command
|
||||
is run, to support script.py.mako templates with
|
||||
dependencies on custom "template_args".
|
||||
|
||||
- [feature] Added "template_args" option to configure()
|
||||
so that an env.py can add additional arguments
|
||||
to the template context when running the
|
||||
"revision" command. This requires either --autogenerate
|
||||
or the configuration directive "revision_environment=true".
|
||||
|
||||
- [bug] Added "type" argument to op.drop_constraint(),
|
||||
and implemented full constraint drop support for
|
||||
MySQL. CHECK and undefined raise an error.
|
||||
MySQL needs the constraint type
|
||||
in order to emit a DROP CONSTRAINT. #44
|
||||
|
||||
- [feature] Added version_table argument to
|
||||
EnvironmentContext.configure(), allowing for the
|
||||
configuration of the version table name. #34
|
||||
|
||||
- [feature] Added support for "relative" migration
|
||||
identifiers, i.e. "alembic upgrade +2",
|
||||
"alembic downgrade -1". Courtesy
|
||||
Atsushi Odagiri for this feature.
|
||||
|
||||
- [bug] Fixed bug whereby directories inside of
|
||||
the template directories, such as __pycache__
|
||||
on Pypy, would mistakenly be interpreted as
|
||||
files which are part of the template. #49
|
||||
|
||||
0.3.2
|
||||
=====
|
||||
- [feature] Basic support for Oracle added,
|
||||
courtesy shgoh. #40
|
||||
|
||||
- [feature] Added support for UniqueConstraint
|
||||
in autogenerate, courtesy Atsushi Odagiri
|
||||
|
||||
- [bug] Fixed support of schema-qualified
|
||||
ForeignKey target in column alter operations,
|
||||
courtesy Alexander Kolov.
|
||||
|
||||
- [bug] Fixed bug whereby create_unique_constraint()
|
||||
would include in the constraint columns that
|
||||
are added to all Table objects using events,
|
||||
externally to the generation of the constraint.
|
||||
|
||||
0.3.1
|
||||
=====
|
||||
- [bug] bulk_insert() fixes:
|
||||
|
||||
1. bulk_insert() operation was
|
||||
not working most likely since the 0.2 series
|
||||
when used with an engine. #41
|
||||
2. Repaired bulk_insert() to complete when
|
||||
used against a lower-case-t table and executing
|
||||
with only one set of parameters, working
|
||||
around SQLAlchemy bug #2461 in this regard.
|
||||
3. bulk_insert() uses "inline=True" so that phrases
|
||||
like RETURNING and such don't get invoked for
|
||||
single-row bulk inserts.
|
||||
4. bulk_insert() will check that you're passing
|
||||
a list of dictionaries in, raises TypeError
|
||||
if not detected.
|
||||
|
||||
0.3.0
|
||||
=====
|
||||
- [general] The focus of 0.3 is to clean up
|
||||
and more fully document the public API of Alembic,
|
||||
including better accessors on the MigrationContext
|
||||
and ScriptDirectory objects. Methods that are
|
||||
not considered to be public on these objects have
|
||||
been underscored, and methods which should be public
|
||||
have been cleaned up and documented, including:
|
||||
|
||||
MigrationContext.get_current_revision()
|
||||
ScriptDirectory.iterate_revisions()
|
||||
ScriptDirectory.get_current_head()
|
||||
ScriptDirectory.get_heads()
|
||||
ScriptDirectory.get_base()
|
||||
ScriptDirectory.generate_revision()
|
||||
|
||||
- [feature] Added a bit of autogenerate to the
|
||||
public API in the form of the function
|
||||
alembic.autogenerate.compare_metadata.
|
||||
|
||||
0.2.2
|
||||
=====
|
||||
- [feature] Informative error message when op.XYZ
|
||||
directives are invoked at module import time.
|
||||
|
||||
- [bug] Fixed inappropriate direct call to
|
||||
util.err() and therefore sys.exit()
|
||||
when Config failed to locate the
|
||||
config file within library usage.
|
||||
[#35]
|
||||
|
||||
- [bug] Autogenerate will emit CREATE TABLE
|
||||
and DROP TABLE directives according to
|
||||
foreign key dependency order.
|
||||
|
||||
- [bug] implement 'tablename' parameter on
|
||||
drop_index() as this is needed by some
|
||||
backends.
|
||||
|
||||
- [feature] Added execution_options parameter
|
||||
to op.execute(), will call execution_options()
|
||||
on the Connection before executing.
|
||||
|
||||
The immediate use case here is to allow
|
||||
access to the new no_parameters option
|
||||
in SQLAlchemy 0.7.6, which allows
|
||||
some DBAPIs (psycopg2, MySQLdb) to allow
|
||||
percent signs straight through without
|
||||
escaping, thus providing cross-compatible
|
||||
operation with DBAPI execution and
|
||||
static script generation.
|
||||
|
||||
- [bug] setup.py won't install argparse if on
|
||||
Python 2.7/3.2
|
||||
|
||||
- [feature] script_location can be interpreted
|
||||
by pkg_resources.resource_filename(), if
|
||||
it is a non-absolute URI that contains
|
||||
colons. This scheme is the same
|
||||
one used by Pyramid. [#29]
|
||||
|
||||
- [feature] added missing support for
|
||||
onupdate/ondelete flags for
|
||||
ForeignKeyConstraint, courtesy Giacomo Bagnoli
|
||||
|
||||
- [bug] fixed a regression regarding an autogenerate
|
||||
error message, as well as various glitches
|
||||
in the Pylons sample template. The Pylons sample
|
||||
template requires that you tell it where to
|
||||
get the Engine from now. courtesy
|
||||
Marcin Kuzminski [#30]
|
||||
|
||||
- [bug] drop_index() ensures a dummy column
|
||||
is added when it calls "Index", as SQLAlchemy
|
||||
0.7.6 will warn on index with no column names.
|
||||
|
||||
0.2.1
|
||||
=====
|
||||
- [bug] Fixed the generation of CHECK constraint,
|
||||
regression from 0.2.0 [#26]
|
||||
|
||||
0.2.0
|
||||
=====
|
||||
- [feature] API rearrangement allows everything
|
||||
Alembic does to be represented by contextual
|
||||
objects, including EnvironmentContext,
|
||||
MigrationContext, and Operations. Other
|
||||
libraries and applications can now use
|
||||
things like "alembic.op" without relying
|
||||
upon global configuration variables.
|
||||
The rearrangement was done such that
|
||||
existing migrations should be OK,
|
||||
as long as they use the pattern
|
||||
of "from alembic import context" and
|
||||
"from alembic import op", as these
|
||||
are now contextual objects, not modules.
|
||||
[#19]
|
||||
|
||||
- [feature] The naming of revision files can
|
||||
now be customized to be some combination
|
||||
of "rev id" and "slug", the latter of which
|
||||
is based on the revision message.
|
||||
By default, the pattern "<rev>_<slug>"
|
||||
is used for new files. New script files
|
||||
should include the "revision" variable
|
||||
for this to work, which is part of
|
||||
the newer script.py.mako scripts.
|
||||
[#24]
|
||||
|
||||
- [bug] env.py templates call
|
||||
connection.close() to better support
|
||||
programmatic usage of commands; use
|
||||
NullPool in conjunction with create_engine()
|
||||
as well so that no connection resources
|
||||
remain afterwards. [#25]
|
||||
|
||||
- [bug] fix the config.main() function to honor
|
||||
the arguments passed, remove no longer used
|
||||
"scripts/alembic" as setuptools creates this
|
||||
for us. [#22]
|
||||
|
||||
- [bug] Fixed alteration of column type on
|
||||
MSSQL to not include the keyword "TYPE".
|
||||
|
||||
- [feature] Can create alembic.config.Config
|
||||
with no filename, use set_main_option()
|
||||
to add values. Also added set_section_option()
|
||||
which will add sections. [#23]
|
||||
|
||||
0.1.1
|
||||
=====
|
||||
- [bug] Clean up file write operations so that
|
||||
file handles are closed.
|
||||
|
||||
- [feature] PyPy is supported.
|
||||
|
||||
- [feature] Python 2.5 is supported, needs
|
||||
__future__.with_statement
|
||||
|
||||
- [bug] Fix autogenerate so that "pass" is
|
||||
generated between the two comments
|
||||
if no net migrations were present.
|
||||
|
||||
- [bug] Fix autogenerate bug that prevented
|
||||
correct reflection of a foreign-key
|
||||
referenced table in the list of "to remove".
|
||||
[#16]
|
||||
|
||||
- [bug] Fix bug where create_table() didn't
|
||||
handle self-referential foreign key
|
||||
correctly [#17]
|
||||
|
||||
- [bug] Default prefix for autogenerate
|
||||
directives is "op.", matching the
|
||||
mako templates. [#18]
|
||||
|
||||
- [feature] Add alembic_module_prefix argument
|
||||
to configure() to complement
|
||||
sqlalchemy_module_prefix. [#18]
|
||||
|
||||
- [bug] fix quotes not being rendered in
|
||||
ForeignKeConstraint during
|
||||
autogenerate [#14]
|
||||
|
||||
0.1.0
|
||||
=====
|
||||
- Initial release. Status of features:
|
||||
|
||||
- Alembic is used in at least one production
|
||||
environment, but should still be considered
|
||||
ALPHA LEVEL SOFTWARE as of this release,
|
||||
particularly in that many features are expected
|
||||
to be missing / unimplemented. Major API
|
||||
changes are not anticipated but for the moment
|
||||
nothing should be assumed.
|
||||
|
||||
The author asks that you *please* report all
|
||||
issues, missing features, workarounds etc.
|
||||
to the bugtracker, at
|
||||
https://bitbucket.org/zzzeek/alembic/issues/new .
|
||||
|
||||
- Python 3 is supported and has been tested.
|
||||
|
||||
- The "Pylons" and "MultiDB" environment templates
|
||||
have not been directly tested - these should be
|
||||
considered to be samples to be modified as
|
||||
needed. Multiple database support itself
|
||||
is well tested, however.
|
||||
|
||||
- Postgresql and MS SQL Server environments
|
||||
have been tested for several weeks in a production
|
||||
environment. In particular, some involved workarounds
|
||||
were implemented to allow fully-automated dropping
|
||||
of default- or constraint-holding columns with
|
||||
SQL Server.
|
||||
|
||||
- MySQL support has also been implemented to a
|
||||
basic degree, including MySQL's awkward style
|
||||
of modifying columns being accommodated.
|
||||
|
||||
- Other database environments not included among
|
||||
those three have *not* been tested, *at all*. This
|
||||
includes Firebird, Oracle, Sybase. Adding
|
||||
support for these backends should be
|
||||
straightforward. Please report all missing/
|
||||
incorrect behaviors to the bugtracker! Patches
|
||||
are welcome here but are optional - please just
|
||||
indicate the exact format expected by the target
|
||||
database.
|
||||
|
||||
- SQLite, as a backend, has almost no support for
|
||||
schema alterations to existing databases. The author
|
||||
would strongly recommend that SQLite not be used in
|
||||
a migration context - just dump your SQLite database
|
||||
into an intermediary format, then dump it back
|
||||
into a new schema. For dev environments, the
|
||||
dev installer should be building the whole DB from
|
||||
scratch. Or just use Postgresql, which is a much
|
||||
better database for non-trivial schemas.
|
||||
Requests for full ALTER support on SQLite should be
|
||||
reported to SQLite's bug tracker at
|
||||
http://www.sqlite.org/src/wiki?name=Bug+Reports,
|
||||
as Alembic will not be implementing the
|
||||
"rename the table to a temptable then copy the
|
||||
data into a new table" workaround.
|
||||
Note that Alembic will at some point offer an
|
||||
extensible API so that you can implement commands
|
||||
like this yourself.
|
||||
|
||||
- Well-tested directives include add/drop table, add/drop
|
||||
column, including support for SQLAlchemy "schema"
|
||||
types which generate additional CHECK
|
||||
constraints, i.e. Boolean, Enum. Other directives not
|
||||
included here have *not* been strongly tested
|
||||
in production, i.e. rename table, etc.
|
||||
|
||||
- Both "online" and "offline" migrations, the latter
|
||||
being generated SQL scripts to hand off to a DBA,
|
||||
have been strongly production tested against
|
||||
Postgresql and SQL Server.
|
||||
|
||||
- Modify column type, default status, nullable, is
|
||||
functional and tested across PG, MSSQL, MySQL,
|
||||
but not yet widely tested in production usage.
|
||||
|
||||
- Many migrations are still outright missing, i.e.
|
||||
create/add sequences, etc. As a workaround,
|
||||
execute() can be used for those which are missing,
|
||||
though posting of tickets for new features/missing
|
||||
behaviors is strongly encouraged.
|
||||
|
||||
- Autogenerate feature is implemented and has been
|
||||
tested, though only a little bit in a production setting.
|
||||
In particular, detection of type and server
|
||||
default changes are optional and are off by default;
|
||||
they can also be customized by a callable.
|
||||
Both features work but can have surprises particularly
|
||||
the disparity between BIT/TINYINT and boolean,
|
||||
which hasn't yet been worked around, as well as
|
||||
format changes performed by the database on defaults
|
||||
when it reports back. When enabled, the PG dialect
|
||||
will execute the two defaults to be compared to
|
||||
see if they are equivalent. Other backends may
|
||||
need to do the same thing.
|
||||
|
||||
The autogenerate feature only generates
|
||||
"candidate" commands which must be hand-tailored
|
||||
in any case, so is still a useful feature and
|
||||
is safe to use. Please report missing/broken features
|
||||
of autogenerate! This will be a great feature and
|
||||
will also improve SQLAlchemy's reflection services.
|
||||
|
||||
- Support for non-ASCII table, column and constraint
|
||||
names is mostly nonexistent. This is also a
|
||||
straightforward feature add as SQLAlchemy itself
|
||||
supports unicode identifiers; Alembic itself will
|
||||
likely need fixes to logging, column identification
|
||||
by key, etc. for full support here.
|
||||
|
||||
- Support for tables in remote schemas,
|
||||
i.e. "schemaname.tablename", is very poor.
|
||||
Missing "schema" behaviors should be
|
||||
reported as tickets, though in the author's
|
||||
experience, migrations typically proceed only
|
||||
within the default schema.
|
||||
for the current CHANGES.
|
||||
|
||||
Reference in New Issue
Block a user