diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-20 21:13:47 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-20 21:13:47 -0400 |
commit | 4cef009d0e3c303743ab16e91c354cf4607ed13c (patch) | |
tree | 5d93e727a64e8892e37443211607a2e424cf5b8e /CHANGES | |
parent | 4b9229b0f851d429f70d5ef7620a4302c493a89b (diff) | |
download | alembic-4cef009d0e3c303743ab16e91c354cf4607ed13c.tar.gz |
move the changelog to the new changelog extension
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 478 |
1 files changed, 7 insertions, 471 deletions
@@ -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 -===== -- [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 - -- [feature] Added "stdout" option to Config, provides - control over where the "print" output of commands like - "history", "init", "current" etc. are sent. #43 - -- [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 - -- [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 - -- [bug] Fixed MySQL rendering for server_default which - didn't work if the server_default was a generated - SQL expression. Courtesy Moriyoshi Koizumi. - -- [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 +MOVED ===== -- [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. +Please see: -- 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. + /docs/changelog.html -- 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. + /docs/build/changelog.rst - 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. +or -- 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. + https://alembic.readthedocs.org/en/latest/changelog.html -- 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. |