3.9.2:
This release contains a fix for a test that was failing when 3.9.1 was tagged and released.
3.9.1:
Includes a bugfix for an AttributeError that occurs when using MySQL with the MySQLdb client.
3.9.0:
New and improved stuff
Added new document describing how to use peewee interactively.
Added convenience functions for generating model classes from a pre-existing database, printing model definitions and printing CREATE TABLE sql for a model. See the "use peewee interactively" section for details.
Added a __str__ implementation to all Query subclasses which converts the query to a string and interpolates the parameters.
Improvements to sqlite_ext.JSONField regarding the serialization of data, as well as the addition of options to override the JSON serialization and de-serialization functions.
Added index_type parameter to Field
Added DatabaseProxy, which allows one to use database-specific decorators with an uninitialized Proxy object.
Added support for INSERT ... ON CONFLICT when the conflict target is a partial index (e.g., contains a WHERE clause). The OnConflict and on_conflict() APIs now take an additional conflict_where parameter to represent the WHERE clause of the partial index in question.
Enhanced the playhouse.kv extension to use efficient upsert for all database engines. Previously upsert was only supported for sqlite and mysql.
Re-added the orwhere() query filtering method, which will append the given expressions using OR instead of AND.
Added some new examples to the examples/ directory
Added select_from() API for wrapping a query and selecting one or more columns from the wrapped subquery. Docs.
Added documentation on using row values.
Removed the (defunct) "speedups" C extension, which as of 3.8.2 only contained a barely-faster function for quoting entities.
Bugfixes
Fix bug in SQL generation when there was a subquery that used a common table expressions.
Enhanced prefetch() and fixed bug that could occur when mixing self-referential foreign-keys and model aliases.
MariaDB 10.3.3 introduces backwards-incompatible changes to the SQL used for upsert. Peewee now introspects the MySQL server version at connection time to ensure proper handling of version-specific features.
Fixed bug where TimestampField would treat zero values as None when reading from the database.
4.0.6:
Issues fixed:
SERVER-37778: Platform Support: Add Community & Enterprise Ubuntu 18.04 (zSeries)
SERVER-37777: Platform Support: Add Community SLES12 (zSeries)
SERVER-37775: Platform Support: Add Community RHEL7 (zSeries)
SERVER-39180: Wrong initial chunk owner shard can be selected when sharding non-empty collection with pre-created zones
SERVER-32146: Log slow oplog entry application
SERVER-38293: Make listDatabases understand collection privileges
SERVER-38887: Mongo.getDBs() does not correctly inspect privileges
4.0.5:
Issues fixed:
SERVER-36437: The dbstats command should lock the database in MODE_IS instead of MODE_S
SERVER-37182: Different values when referencing whole object vs. a field of that object after $arrayToObject
SERVER-37200: $match stage following $listSessions not working against mongos
SERVER-37557: Add startup warning about enableMajorityReadConcern and usage of arbiters
4.0.4:
Issues fixed:
SERVER-26854: LockStats for sub-operations should not include time for previous sub ops
SERVER-35323: sessionId matching ignores userId part of the lsid
SERVER-37058: Update with numeric field names inside an array can cause validation to fail
SERVER-37132: Negation of $in with regex can incorrectly plan from the cache, leading to missing query results
TOOLS-2069: mongoreplay does not support SCRAM-SHA-256
TOOLS-2131: mongorestore hang in replaying oplog with –archive and –oplogReplay option
4.0.3:
Issues fixed:
SERVER-19815: Make repair more robust with the WiredTiger storage engine
SERVER-35989: db.collection.countDocuments() and db.collection.estimatedDocumentCount() helpers
SERVER-36982: Reintroduce enableMajorityReadConcern:false server parameter
4.0.2:
Issues fixed:
SERVER-35720: Allow zones to be created on non-existent collection
SERVER-35441: drop/dropDatabase does not cleanup config.tags
SERVER-36102: Create initial chunks on appropriate shards for zoned sharding
SERVER-36070: Aggregation with $out results in error when Auditing is enabled
SERVER-34846: Covered index with collated field returns incorrect result when collation not involved in match or sort
SERVER-34664: Commands that are unsupported in a transaction should error
4.0.1:
Issues fixed:
SERVER-33000: Platform Support: add Ubuntu 18.04.
SERVER-34933: PCRE verb support.
SERVER-35101: Handle bindIp argument that contains whitespaces.
SERVER-36027: Enterprise build does not recognize the --redactClientLogData flag.
MongoDB PHP Driver 1.5.0:
It supports all new features for MongoDB 2.6, including:
Aggregate can now return a cursor
Aggregation pipelines can now be explained
Possible to set maxTimeMS for commands and queries
Transparent support for the new command-based MongoDB write API
New MongoWriteBatch classes (using the new MongoDB write API)
Support for MongoDB Enterprise features (e.g. Kerberos, LDAP, X509)
Option to tune acceptable server latency for secondary reads (secondaryAcceptableLatencyMS)
With this release, some driver functionality which was previously documented as deprecated will now formally raise deprecation notices. This includes:
Instantiating the Mongo class
Calling MongoCursor::slaveOkay()
"wtimeout" and "safe" options for MongoCollection write operations
Manipulating public properties on core classes (such as $collection->w)
MongoDB PHP Driver 1.4.0:
The 1.4 series introduced fundemental changes in how connections are created to the MongoDB servers. The driver now utilizes PHP native streams, so all normal PHP stream options apply. Furthermore, an experimental Stream Context Support was added.
The 1.4.x series also added support for MongoDB 2.4.x.
The most important improvements however deal with the handling of replica sets, especially nodes that timeout and nodes that are unreachable for various reasons. Besides the improvements to replica set handling, this release addresses issues with read preferences through mongos nodes. It also adds support for SSL enabled connections as well as journal and fsync connection string options.
mongo-c-driver 1.14.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.14.0.
Features:
* Support for OpenSSL 1.1.1 and its implementation of TLS v1.3.
* New function mongoc_stream_should_retry.
* New accessor mongoc_server_description_last_update_time.
* New method mongoc_client_reset to be called after forking.
Bug fixes:
* OP_MSG with unacknowledged writes (write concern of w:0) would serialize
incorrectly on big-endian platforms, causing writes to use the default
write concern of w:1.
* mongoc_collection_update_many and mongoc_collection_delete_many would fail
with the URI option retryWrites=true.
* In a transaction, the driver now properly ignores the readConcern configured
on a client, database, or collection: only the mongoc_transaction_opt_t's
readConcern is used.
* Remove timestamp from uninstall scripts to permit reproducible build.
* Setting mongoc_ssl_opt_t.pem_file or ca_file to a bad file path caused a
hang with Darwin SSL.
* Fix the ENABLE_SASL cmake option:
* Remove unnecessary GSSAPI value. It was equivalent to specifying ENABLE_SASL=CYRUS.
* ENABLE_SASL=AUTO now correctly chooses SSPI on Windows instead of CYRUS.
* The client pool failed to set proper apm callbacks for clients created
via try_pop().
mongo-c-driver 1.13.1
=====================
It is my pleasure to announce the MongoDB C Driver 1.13.1.
Bug fixes:
* mongoc_collection_update_many and mongoc_collection_delete_many would fail
with the URI option retryWrites=true.
* Remove timestamp from uninstall scripts to permit reproducible build.
* Add missing header files to the release tarball to fix compilation when
configuring with ENABLE_SASL=GSSAPI.
* Separate libmongoc and libbson uninstall scripts so they do not overwrite
each other.
* Fix running make install with DESTDIR.
mongo-c-driver 1.13.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.13.0.
Features:
* Report a new error code, MONGOC_ERROR_GRIDFS_CORRUPT, when a chunk larger
than chunkSize is detected. Before, the driver had crashed with an assert.
* Restructure of install directory. All mongoc headers are under mongoc/
and all bson headers are under bson/. The preferred way of including the
headers are mongoc/mongoc.h and bson/bson.h respectively.
Forwarding headers in the root are provided for backwards compatibility.
* The default CMake build type had been unspecified, now it is RelWithDebInfo.
* Support LibreSSL 2.7+.
Bug fixes:
* mongoc_collection_replace_one is now a correctly exported symbol.
* Fix multiple issues with readConcern and writeConcern inheritance.
* Fix rare crash with mongodb+srv URIs on Windows.
* mongoc_gridfs_create_file_from_stream ignored errors while writing chunks
to the server.
* The following functions should not have taken a "bypassDocumentValidation"
option in bson_t *opts, the option is now prohibited:
- mongoc_bulk_operation_insert_with_opts
- mongoc_bulk_operation_update_one_with_opts
- mongoc_bulk_operation_update_many_with_opts
- mongoc_bulk_operation_replace_one_with_opts
* The heartbeat-succeeded and heartbeat-failed events (part of SDAM
Monitoring) had uninitialized "duration" fields, they are now set correctly.
mongo-c-driver 1.12.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.12.0.
Features:
* New function mongoc_client_session_in_transaction to check if a multi-
document transaction is started.
* New examples for change streams and transactions, improved guide for
migrating from mongoc_collection_count to mongoc_collection_count_documents
Bug fixes:
* Fix occasional crash in sharded queries
* Retry all retryable write concern errors
* mongoc_client_session_commit_transaction sets the correct error label when
the primary is unavailable
* mongoc_collection_find_with_opts had prohibited read preference "primary"
in a transaction
* mongoc_collection_aggregate had not inherited its mongoc_collection_t's
read preference; only an explicitly provided read preference was used.
* Allow unencoded delimiters in username/password if unambiguous
mongo-c-driver 1.11.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.11.0. This release adds
support for MongoDB 4.0 features. It includes the following additions and
improvements:
* Multi-document transactions, see mongoc_client_session_start_transaction
* New function mongoc_error_has_label to check for specific error labels such
as "TransientTransactionError" or "UnknownTransactionCommitResult" in
error replies.
* New functions to subscribe to changes on an entire client or database:
- mongoc_client_watch
- mongoc_database_watch
* New option for change streams, "startAtOperationTime".
* mongoc_collection_count_with_opts is deprecated for two new functions:
- mongoc_collection_count_documents
- mongoc_collection_estimated_document_count
* Support for SCRAM-SHA-256 authentication, including support for non-ASCII
passwords using libicu is an optional dependency.
* Faster mongoc_database_get_collection_names_with_opts fetches only names,
not the entire collection metadata.
Additional changes not specific to MongoDB 4.0:
* All "destroy" functions such as mongoc_collection_destroy now ignore a NULL
argument.
* The driver now returns an error if you attempt to use "arrayFilters" in an
update with a MongoDB server older than 3.6.
* Update functions include a new "upsertedCount" field in the reply document.
* Replace MD5 with FNV-1a hash to generate ObjectIds (for FIPS compliance).
Bug fixes:
* Functions incorrectly marked with the "const" compiler attribute are now
marked as "pure", fixes build error when link-time optimization is enabled.
mongo-c-driver 1.10.3
=====================
No change since 1.10.2; released to keep pace with libbson's version.
mongo-c-driver 1.10.2
=====================
It is my pleasure to announce the MongoDB C Driver 1.10.2. This release fixes
the libbson and libmongoc installed library filenames and SONAMEs on Linux.
They had changed unintentionally with the switch to CMake in 1.10.0; they are
now consistent with 1.9.x and previous releases. Thanks to Roberto C. Sánchez
for the fix.
mongo-c-driver 1.10.1
=====================
It is my pleasure to announce the MongoDB C Driver 1.10.1. This release fixes
the following bugs introduced in version 1.10.0:
* Client sessions were not prohibited with unacknowledged write concern and
mongoc_bulk_operation_execute; now they are prohibited. Client sessions have
been prohibited with all other unacknowledged writes since 1.10.
* The "arrayFilters" update option, new in MongoDB 3.6 and supported since
libmongoc 1.9.0, was inadvertently prohibited by
mongoc_bulk_operation_update_one_with_opts and
mongoc_bulk_operation_update_many_with_opts in 1.10. The option is now
permitted again.
* The mongoc-stat tool for displaying shared counters was disabled on Linux
and not installed; it is now restored.
mongo-c-driver 1.10.0
=====================
It is my pleasure to announce MongoDB C Driver 1.10.0. This version drops
support for MongoDB 2.6 and adds the following features and bugfixes:
* libbson and libmongoc are now maintained in the mongo-c-driver repository,
although they are still built as separate libraries, and libbson can still
be used without libmongoc.
* Building libbson and libmongoc now requires CMake on all platforms. The
Autotools build scripts ("configure" and related scripts) have been deleted.
See the "installing" page for updated instructions, including the new
ENABLE_MONGOC option and changes to the ENABLE_BSON option.
* IPv6 is now fully supported and conforms to RFC-6555. If a hostname has both
IPv4 and IPv6 DNS records, the driver tries connecting with IPv6 first. If a
connection can't be established after 250ms then IPv4 is tried in parallel.
Whichever succeeds connection first cancels the other. The successful DNS
result is cached for 10 minutes.
* If CMake is configured with ENABLE_SSL=AUTO (the default), libmongoc now
uses native TLS libraries on Mac and Windows, and OpenSSL everywhere else.
Before, it would search for OpenSSL on all platforms and only use native
TLS on Mac and Windows as a fallback.
* The driver now handshakes SSL connections to multiple servers in a replica
set or sharded cluster in parallel, so long as it uses OpenSSL or Windows
SChannel. (SSL handshakes with Apple's Secure Transport are still serial.)
A larger receive buffer with SChannel increases performance over slow
connections.
* All functions that accept read concern now prohibit it, if MongoDB is too
old to support it (MongoDB 3.0).
* Client sessions are now prohibited with unacknowledged writes.
* mongoc_collection_find_and_modify_with_opts now prohibits write concern if
MongoDB is too old to support it (MongoDB 3.0).
* Other helper functions for commands that write, now prohibit write concern
if MongoDB is too old to support it (pre-3.4):
mongoc_client_read_write_command_with_opts
mongoc_client_write_command_with_opts
mongoc_collection_read_write_command_with_opts
mongoc_collection_write_command_with_opts
mongoc_database_read_write_command_with_opts
mongoc_database_write_command_with_opts
mongoc_collection_aggregate with $out
mongoc_collection_drop_index_with_opts
mongoc_collection_drop_with_opts
mongoc_collection_rename_with_opts
mongoc_database_drop_with_opts
Write concern behavior is unchanged for regular CRUD functions.
* Setting a negative writeConcern level of -2 or smaller, via the "opts"
parameter to functions that accept BSON options, is now prohibited. The
special "w" values -2 through -4 are only used internally. The deprecated
"w=-1" is still allowed, as a synonym for "w=0".
* The Kerberos URI option authMechanismProperties=CANONICALIZE_HOST_NAME:true
is now implemented with the Windows Kerberos provider, SSPI.
* This repository now includes GDB and LLDB customizations for pretty-printing
bson_t structs as JSON while debugging. See the "debugging" page.
* The internal preprocessor symbol HAVE_STRINGS_H has been renamed
BSON_HAVE_STRINGS_H. If you maintain a handwritten bson-config.h you must
rename this symbol.
* The following helper functions do not work with mongoc_client_session_t,
they are deprecated in favor of running MongoDB commands directly with a
function like mongoc_client_read_command_with_opts:
mongoc_client_get_server_status
mongoc_collection_stats
mongoc_collection_validate
* mongoc_cursor_is_alive is now deprecated for mongoc_cursor_more, which is
functionally equivalent.
=== 5.18.0 (2019-03-01)
* Use singleton .call methods on plain objects instead of procs/methods for faster type conversion (jeremyevans)
* Add Sequel::SQL::Blob.call to avoid indirection when converting values from the database (jeremyevans)
* Use while instead of each for inner loops in sqlite and jdbc adapters for better performance (jeremyevans)
* Make after_initialize plugin not make the argument to Model.call optional (jeremyevans)
* Allow Dataset#paged_each to be called without a block in the postgres and mysql2 adapters (jeremyevans)
* Remove flow-control exceptions in connection_expiration and connection_validator extensions (jeremyevans)
* Add throw_failures plugin for throwing ValidationFailed and HookFailed exceptions instead of raising them, up to 10x performance increase on JRuby (jeremyevans)
* Support tzinfo 2 in addition to tzinfo 1 in the named_timezones extension (jeremyevans) (#1596)
Add ruby-activerecord52 version 5.2.2 package.
= Active Record -- Object-relational mapping put on rails
Active Record connects classes to relational database tables to establish an
almost zero-configuration persistence layer for applications. The library
provides a base class that, when subclassed, sets up a mapping between the new
class and an existing table in the database. In context of an application,
these classes are commonly referred to as *models*. Models can also be
connected to other models; this is done by defining *associations*.
This is for Ruby on Rails 5.2.
SQLite Release 3.27.2:
Fix a bug in the IN operator that was introduced by an attempted optimization in version 3.27.0.
Fix a bug causing a crash when a window function is misused.
Fix various documentation typos
5.2.3: 2019-02-15
Improvements
* Changed to use add and delete for modify if it's needed.
[GitHub#156][Patch by David Klotz]
* Added support for timezone with munites offset such as @0530@.
[GitHub#160][GitHub#161][Patch by Neng Xu]
* Added support for Ruby 2.6.
Thanks
* David Klotz
* Neng Xu
0.12.0
* Change title in README.rst
* Don't use deprecated / non-functional "force" parameter
* Use legacy\_alter\_table ON in sqlite recreate\_table
* Remove py26 support
* Add .eggs in .gitignore
* Import MutableMapping from the correct Python module
* Update mailinglist from dev to discuss
* Get rid of psycopg2 warnings by disabling wheels
* Enforce that pbr used is >= 1.8
1.2.18:
orm
[orm] [bug] Fixed a regression in 1.2 where a wildcard/load_only loader option would not work correctly against a loader path where of_type() were used to limit to a particular subclass. The fix only works for of_type() of a simple subclass so far, not a with_polymorphic entity which will be addressed in a separate issue; it is unlikely this latter case was working previously.
[orm] [bug] Fixed fairly simple but critical issue where the SessionEvents.pending_to_persistent() event would be invoked for objects not just when they move from pending to persistent, but when they were also already persistent and just being updated, thus causing the event to be invoked for all objects on every update.
sql
[sql] [bug] Fixed issue where the JSON type had a read-only JSON.should_evaluate_none attribute, which would cause failures when making use of the TypeEngine.evaluates_none() method in conjunction with this type. Pull request courtesy Sanjana S.
mysql
[mysql] [bug] Fixed a second regression caused by 4344 (the first was 4361), which works around MySQL issue 88718, where the lower casing function used was not correct for Python 2 with OSX/Windows casing conventions, which would then raise TypeError. Full coverage has been added to this logic so that every codepath is exercised in a mock style for all three casing conventions on all versions of Python. MySQL 8.0 has meanwhile fixed issue 88718 so the workaround is only applies to a particular span of MySQL 8.0 versions.
sqlite
[sqlite] [bug] Fixed bug in SQLite DDL where using an expression as a server side default required that it be contained within parenthesis to be accepted by the sqlite parser. Pull request courtesy Bartlomiej Biernacki.
mssql
[mssql] [bug] Fixed bug where the SQL Server “IDENTITY_INSERT” logic that allows an INSERT to proceed with an explicit value on an IDENTITY column was not detecting the case where Insert.values() were used with a dictionary that contained a Column as key and a SQL expression as a value
3.2.0
* Added support for select.poll to test whether data can be read
on a socket. This should allow for significantly more connections to
be used with pubsub.
* Attempt to guarentee that the ConnectionPool hands out healthy
connections. Healthy connections are those that have an established
socket connection to the Redis server, are ready to accept a command
and have no data available to read.
* Use the socket.IPPROTO_TCP constant instead of socket.SOL_TCP.
IPPROTO_TCP is available on more interpreters (Jython for instance).
* Fixed a regression introduced in 3.0 that mishandles exceptions not
derived from the base Exception class. KeyboardInterrupt and
gevent.timeout notable.
* Significant improvements to handing connections with forked processes.
Parent and child processes no longer trample on each others' connections.
* PythonParser no longer closes the associated connection's socket. The
connection itself will close the socket.
PostgreSQL 11.2, 10.7, 9.6.12, 9.5.16, and 9.4.21 Released!
This release changes the behavior in how PostgreSQL interfaces with fsync() and includes fixes for partitioning and over 70 other bugs that were reported over the past three months.
Fix handling of unique indexes with INCLUDE columns on partitioned tables
Ensure that NOT NULL constraints of a partitioned table are honored within its partitions
Several fixes for constraints on partitioned tables
Fix problems with applying ON COMMIT DROP and ON COMMIT DELETE ROWS to partitioned tables and tables with inheritance children
Disallow COPY FREEZE on partitioned tables
Several fixes for the ALTER TABLE .. ADD COLUMN with a non-nullable default feature, including a possible index corruption case
Several fixes in GIN indexes, including avoiding a deadlock with vacuuming and concurrent index insertions (which partially reverts a performance improvement introduced in PostgreSQL 10)
Fix possible crashes in logical replication when index expressions or predicates are in use
Several fixes for the write-ahead log (WAL)
Fix possible crash in UPDATE with a multiple SET clause using a sub-SELECT
Fix crash when zero rows are provided to json[b]_populate_recordset() or json[b]_to_recordset()
Several fixes related to collation handling, including the parsing of collation-sensitive expressions in the arguments of a CALL statement
Several fixes for the query planner, including an improvement to planning speed for large inheritance or partitioning table groups
Several fixes for TRUNCATE
Ensure ALTER TABLE ONLY ADD COLUMN IF NOT EXISTS is processed correctly
Allow UNLISTEN in hot-standby (replica) mode
Fix parsing of space-separated lists of host names in the ldapserver parameter of LDAP authentication entries in pg_hba.conf
Several fixes for ecpg
Several fixes for psql, including having \g target work with COPY TO STDOUT
The random number generation for pgbench is now fully deterministic and platform-independent when --random-seed=N is specified
Fix pg_basebackup and pg_verify_checksums to appropriately ignore temporary files
Several fixes for pg_dump, including having ALTER INDEX SET STATISTICS commands present
Prevent false index-corruption reports from contrib/amcheck caused by inline-compressed data
Support new Makefile variables to help with building extensions
SQLite Release 3.27.1:
Fix a bug in the query optimizer: an adverse interaction between the OR optimization and the optimization that tries to use values read directly from an expression index instead of recomputing the expression.
Hashes:
Changes carried forward from version 3.27.0:
Added the VACUUM INTO command
Issue an SQLITE_WARNING message on the error log if a double-quoted string literal is used.
The sqlite3_normalized_sql() interface works on any prepared statement created using sqlite3_prepare_v2() or sqlite3_prepare_v3(). It is no longer necessary to use sqlite3_prepare_v3() with SQLITE_PREPARE_NORMALIZE in order to use sqlite3_normalized_sql().
Added the remove_diacritics=2 option to FTS3 and FTS5.
Added the SQLITE_PREPARE_NO_VTAB option to sqlite3_prepare_v3(). Use that option to prevent circular references to shadow tables from causing resource leaks.
Enhancements to the sqlite3_deserialize() interface:
Add the SQLITE_FCNTL_SIZE_LIMIT file-control for setting an upper bound on the size of the in-memory database created by sqlite3_deserialize. The default upper bound is 1GiB, or whatever alternative value is specified by sqlite3_config(SQLITE_CONFIG_MEMDB_MAXSIZE) and/or SQLITE_MEMDB_DEFAULT_MAXSIZE.
Honor the SQLITE_DESERIALIZE_READONLY flag, which was previously described in the documentation, but was previously a no-op.
Enhance the "deserialize" command of the TCL Interface to give it new "--maxsize N" and "--readonly BOOLEAN" options.
Enhancements to the CLI, mostly to support testing and debugging of the SQLite library itself:
Add support for ".open --hexdb". The "dbtotxt" utility program used to generate the text for the "hexdb" is added to the source tree.
Add support for the "--maxsize N" option on ".open --deserialize".
Add the "--memtrace" command-line option, to show all memory allocations and deallocations.
Add the ".eqp trace" option on builds with SQLITE_DEBUG, to enable bytecode program listing with indentation and PRAGMA vdbe_trace all in one step.
Add the ".progress" command for accessing the sqlite3_progress_handler() interface.
Add the "--async" option to the ".backup" command.
Add options "--expanded", "--normalized", "--plain", "--profile", "--row", "--stmt", and "--close" to the ".trace" command.
Increased robustness against malicious SQL that is run against a maliciously corrupted database.
Bug fixes:
Do not use a partial index to do a table scan on an IN operator.
Fix the query flattener so that it works on queries that contain subqueries that use window functions.
Ensure that ALTER TABLE modifies table and column names embedded in WITH clauses that are part of views and triggers.
Fix a parser bug that prevented the use of parentheses around table-valued functions.
Fix a problem with the OR optimization on indexes on expressions.
Fix a problem with the LEFT JOIN strength reduction optimization in which the optimization was being applied inappropriately due to an IS NOT NULL operator.
Fix the REPLACE command so that it is no longer able to sneak a NULL value into a NOT NULL column even if the NOT NULL column has a default value of NULL.
Fix a problem with the use of window functions used within correlated subqueries.
Fix the ALTER TABLE RENAME COLUMN command so that it works for tables that have redundant UNIQUE constraints.
Fix a bug that caused zeroblob values to be truncated when inserted into a table that uses an expression index.
RRDtool 1.7.1:
Bugfixes
* about 38949 assorted fixes for the windows build of rrdtool
* fix many compile time warnings
* Re-enable 0-width lines
* Include rrd_pdpcalc.pod in Makefile.am also
* Lots of spelling fixes for rrdtool source and documentation
* fix off by one issue in rrdtool xport output
* fix lua extension build
* fix python bindings
* fix multiple static variable issues in conflict with MT
* make translations actually work
* Fixed configure --enable / --disable options
* rrd_daemon stability fixes
* fix tcl bindings
* do not call umask ever (not MT safe)
Features
* Multiline Titles
* French translation
* Added support for --allow-shrink with --rigid flag
* Added SUSPEND/RESUME/SUSPENDALL/RESUMEALL commands for rrd_cached
* include the daemon name in the error messag
Upstream changes:
1.60 2018-10-31
[BUG FIXES]
Merged pull request 11 from audun which fixes some issues with the AutoCommit flag
on commit and rollback.
[MISCELLANEOUS]
Merged pull request 10 from vadz which fixed typo (affecting license) in README.md.
directory, which causes errors for several actions. But the caller's
working directory isn't needed for anything. cd into ${pgsql_home}
early, just after reading rc.conf. Bump PKGREVISION.
Changes in MySQL 5.7.25
Deprecation and Removal Notes
The resolveip and resolve_stack_dump utilities are now deprecated and will be removed in MySQL 8.0. nslookup, host, or dig can be used instead of resolveip. Stack traces from official MySQL builds are always symbolized, so there is no need to use resolve_stack_dump.
Pluggable Authentication
If the LDAP port number is configured as 636 or 3269, the plugin now uses LDAPS (LDAP over SSL) instead of LDAP. The port number is settable using the authentication_ldap_sasl_server_port or authentication_ldap_simple_server_port system variable. (LDAPS differs from startTLS.)
Previously, for LDAP authentication with proxying, LDAP authentication plugins used the first group name returned by the LDAP server as the MySQL proxy user account name. The authentication string for a MySQL account now can specify a list of groups to match, in preference order, and can optionally map the matching group name to a specified MySQL proxy user name. See LDAP Pluggable Authentication.
Security Notes
The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.2q. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html.
This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead.
Functionality Added or Changed
Microsoft Windows: The access control granted to clients on the named pipe created by the MySQL server now is set to the minimum necessary for successful communication on Windows. Newer MySQL client software can open named pipe connections without any additional configuration. If older client software cannot be upgraded immediately, the new named_pipe_full_access_group server system variable can be used to give a Windows group the necessary permissions to open a named pipe connection. Membership in the full-access group should be restricted and temporary.
Bugs Fixed
InnoDB: A dangling pointer caused a memory leak.
InnoDB: An ON DELETE CASCADE operation on table with a foreign key constraint and an indexed virtual column caused the server to exit.
InnoDB: An incorrectly written DML log involving a virtual column value raised an assertion.
InnoDB: Using the O_DIRECT_NO_FSYNC innodb_flush_method setting could cause the system to hang due to file system metadata becoming unsynchronized. To prevent this issue from occurring in O_DIRECT_NO_FSYNC mode, InnoDB now calls fsync() after creating a new file, after increasing file size, and after closing a file. The fsync() system call is still skipped after each write operation.
With the changes described above, O_DIRECT_NO_FSYNC mode can now be safely used on EXT4 and XFS file systems.
InnoDB: An assertion was raised when attempting to write to a tablespace file greater than 4GB in size on a 64-bit Windows system. The failure was due to a narrowing cast.
Partitioning: Repeated ALTER TABLE statements on partitioned tables containing BLOB or TEXT columns were not always handled correctly.
Partitioning: ALTER TABLE ... EXCHANGE PARTITION did not work when the partitioned table had one or more partition definitions using the DATA DIRECTORY option. This fix supports partitioned tables using the InnoDB storage engine only.
Replication: A patch to correct the handling of quotes for identifiers in ROLLBACK TO SAVEPOINT statements in the binary log was not correctly applied to subsequent MySQL versions.
Replication: Following a patch in MySQL 5.7.23, LOAD DATA statements stopped statement-based replication from a MySQL 5.7.22 master to a replication slave at a later release. The problem has now been fixed.
Replication: In some circumstances, the CHANGE MASTER TO statement could not be used on a replication slave if the master info log had been changed from a table (master_info_repository=TABLE) into a file (master_info_repository=FILE).
Replication: When the system variables binlog_transaction_dependency_tracking and binlog_transaction_dependency_history_size were set or read, the types of lock that were required could result in a deadlock scenario, because the same locks were also required for working with the active binary logs. A new lock type is now used instead for access to the transaction dependency tracking system variables, so that this deadlock cannot occur.
Replication: The PURGE BINARY LOGS TO 'log_name' statement failed for binary log files that had been moved to another location using mysqlbinlogmove. Such files are still listed in the binary log index file, but they are listed using an absolute path, rather than a path relative to the directory where the binary log files are normally stored. MySQL Server can now locate and purge moved binary log files successfully.
Replication: If autocommit was set to 0 for a replication slave or Group Replication group member where GTIDs were in use and super_read_only=ON was set, server shutdown was prevented by a transaction that did not complete. The transaction was attempting to save GTIDs to the mysql.gtid_executed table, but the update failed because super_read_only=ON was set. (With autocommit set to 1, the transaction would complete in this situation, and the mysql.gtid_executed table would instead be updated at server startup.) Now, the check for the super_read_only setting is skipped for this task, so the transaction is able to save the GTIDs to the mysql.gtid_executed table and complete regardless of the combination of super_read_only and autocommit settings.
Replication: An assertion was raised in debug builds if an XA ROLLBACK statement was issued for an unknown transaction identifier when the gtid_next value had been set manually. The server now does not attempt to update the GTID state if an XA ROLLBACK statement fails with an error.
Replication: The value returned by a SHOW SLAVE STATUS statement for the total combined size of all existing relay log files (Relay_Log_Space) could become much larger than the actual disk space used by the relay log files. The I/O thread did not lock the variable while it updated the value, so the SQL thread could automatically delete a relay log file and write a reduced value before the I/O thread finished updating the value. The I/O thread then wrote its original size calculation, ignoring the SQL thread's update and so adding back the space for the deleted file. The Relay_Log_Space value is now locked during updates to prevent concurrent updates and ensure an accurate calculation.
Replication: If the relay log index file was temporarily locked for viewing by a backup process for a replication slave, and MySQL Server also attempted to access the file at that time for rename or delete operations, the backup completed with warnings, but MySQL Server experienced an unexpected halt. MySQL Server now retries the file access operation a number of times in case this or a similar scenario is the explanation and the file becomes available again before long.
Replication: With sync_binlog=1 set, if the binary log was rotated during a commit before the binary log end position was updated, replication stopped on the slave because the server attempted to use the old binary log end position with the new binary log file. The server now compares the binary log file name with the active binary log file when updating the binary log end position, so that the issue does not occur.
Replication: When adding a new member to a group, if the certification information was too big to transmit, an event was generated that caused failures in all group members. To avoid this situation, now if the certification information is too large an error is generated which makes the joining member leave the group.
Replication: When stopping replication, any channels that had pending transactions could cause a deadlock in Group Replication.
The keyring_aws plugin was missing from Commercial packages for macOS.
The supported macOS versions for this plugin now are macOS 10.13 and 10.14.
MySQL Enterprise Firewall did not work well if the audit_log plugin was installed.
The server permitted creation of databases with the same name as redo log files, which could result in unexpected server behavior. Such names are no longer permitted as database names.
Removal of Sun RPC and XDR from glibc into a separate libtirpc library caused problems with libasan on some platforms.
In LDAP group search filter values, special characters were not escaped. Special characters in the user DN now are escaped with their hexadecimal equivalant as follows:
* => \2a
( => \28
) => \29
\ => \5c
\0 => \00
A memory leak was caused by GET_LOCK() calls with a zero timeout that failed due to concurrent connections holding the same user-level lock.
mysqlpump did not free all allocated resources when it encountered an error, resulting in memory leaks.
For debug builds, the server could exit when attempting to roll back CREATE USER statements.
Mishandling of deprecated system variables could cause output from queries on the Performance Schema variables_by_thread table to be incorrect.
When a subquery contained a UNION, the count of the number of subquery columns was calculated incorrectly.
On a GTID-enabled server, concurrent statements on the INFORMATION_SCHEMA.COLUMNS table could deadlock.
Comparing log file names as strings using the memcmp() function resulted in uninitialized memory read errors. The comparison now uses the strncmp() function. Thanks to Zsolt Parragi and Laurynas Biveinis for their contributions.
The optimizer skipped the second column in a composite index when executing an inner join with a LIKE clause against the second column.
CREATE TABLE ... SELECT could create date columns with “zero” date default values when it should have created them without a default value.
The transformation of IN subquery predicates into semijoins was not handled correctly for a very large number of tables.
Server mishandling of SIGHUP signals could result in a server exit.
When the character set of one string comparison operand was a superset of the character set of the other operand, some comparisons were disallowed that should be permitted by converting the operand with the “smaller” character set to the “larger” character set. utf8mb4 and utf32 are considered to be a superset of any other encoding.
Improper memory handling by account management statements could result in server misbehavior.
Executing a prepared statement to do a multiple-row insert with large number of placeholders consumed excessive memory and could execute slowly.
The parser accepted invalid SET statement syntax in trigger definitions that could result in a server exit.
The server failed to start if the keyring_encrypted_file plugin keyring file was invalid.
Keyring migration failed with source and destination keyring plugins of keyring_okv and keyring_encrypted_file, respectively.
When executing a prepared statement with a procedure call with the CURSOR_TYPE_READ_ONLY flag set, the client library hung if the procedure performed a SELECT that returned an empty result set.
The parser performed some out-of-memory checks incorrectly.
When binlog_format is ROW or MIXED, operations on temporary tables are not logged. Previously, the exception to this rule was that when the connection was terminated at the end of the session, the statement DROP TEMPORARY TABLE IF EXISTS was logged for any temporary tables that had been opened in the session. For row-based replication, this behavior caused an unnecessary write to the binary log, and added a transaction sequence number for the GTID where these were enabled.
Now, when a temporary table is created in a session, the binary logging format is tracked. The DROP TEMPORARY TABLE IF EXISTS statement is only logged at the end of the session if statement-based format was in effect when the temporary table was created, so the CREATE TEMPORARY TABLE statement was logged. If row-based or mixed-format binary logging was in use when the table was created, the DROP TEMPORARY TABLE IF EXISTS statement is not logged.
Thanks to Laurynas Biveinis for the patch.
DML statements using IGNORE were not always handled correctly on tables having generated columns.
A query employing a dynamic range and an index merge could use more memory than expected.
Changes in MySQL 5.6.43:
Functionality Added or Changed
Microsoft Windows: The access control granted to clients on the named pipe created by the MySQL server now is set to the minimum necessary for successful communication on Windows. Newer MySQL client software can open named pipe connections without any additional configuration. If older client software cannot be upgraded immediately, the new named_pipe_full_access_group server system variable can be used to give a Windows group the necessary permissions to open a named pipe connection. Membership in the full-access group should be restricted and temporary.
Bugs Fixed
Replication: A patch to correct the handling of quotes for identifiers in ROLLBACK TO SAVEPOINT statements in the binary log was not correctly applied to subsequent MySQL versions.
Replication: In some circumstances, the CHANGE MASTER TO statement could not be used on a replication slave if the master info log had been changed from a table (master_info_repository=TABLE) into a file (master_info_repository=FILE).
Replication: The value returned by a SHOW SLAVE STATUS statement for the total combined size of all existing relay log files (Relay_Log_Space) could become much larger than the actual disk space used by the relay log files. The I/O thread did not lock the variable while it updated the value, so the SQL thread could automatically delete a relay log file and write a reduced value before the I/O thread finished updating the value. The I/O thread then wrote its original size calculation, ignoring the SQL thread's update and so adding back the space for the deleted file. The Relay_Log_Space value is now locked during updates to prevent concurrent updates and ensure an accurate calculation.
Replication: If the relay log index file was temporarily locked for viewing by a backup process for a replication slave, and MySQL Server also attempted to access the file at that time for rename or delete operations, the backup completed with warnings, but MySQL Server experienced an unexpected halt. MySQL Server now retries the file access operation a number of times in case this or a similar scenario is the explanation and the file becomes available again before long.
The server permitted creation of databases with the same name as redo log files, which could result in unexpected server behavior. Such names are no longer permitted as database names.
When a subquery contained a UNION, the count of the number of subquery columns was calculated incorrectly.
Comparing log file names as strings using the memcmp() function resulted in uninitialized memory read errors. The comparison now uses the strncmp() function. Thanks to Zsolt Parragi and Laurynas Biveinis for their contributions.
The transformation of IN subquery predicates into semijoins was not handled correctly for a very large number of tables.
Executing a prepared statement to do a multiple-row insert with large number of placeholders consumed excessive memory and could execute slowly.
The parser accepted invalid SET statement syntax in trigger definitions that could result in a server exit.
MyISAM index corruption could occur for bulk-insert and table-repair operations that involve the repair-by-sorting algorithm and many (more than 450 million) rows.
A query employing a dynamic range and an index merge could use more memory than expected.
What's new in psycopg 2.7.7
- Cleanup of the cursor results assignment code, which might have solved
double free and inconsistencies in concurrent usage.
- Wheel package compiled against OpenSSL 1.0.2q.
=== 5.17.0 (2019-02-01)
* Support skip_auto_validations instance method in auto_validations plugin
(oldgreen, jeremyevans) (#1592)
* Support :preconnect_extensions Database option for loading extensions before
:preconnect option (jeremyevans)
* Avoid usage of Proc.new with implicit block as ruby 2.7+ deprecates this
behavior (jeremyevans)
* Allow Sequel[].as to be used for constructing aliases with eager_graph
(e.g. Model.eager_graph(Sequel[:a].as(:b))) (jeremyevans) (#1588)
[Bug Fixes]
- Fixed a test failure with the MySQL max limit value, mostly exhibited
on BSD platforms.
- Removed fallback in the PostgreSQL engine on the `$PGUSER` and
`$PGPASSWORD` environnement variables, as well as the system username,
since libpq does all that automatically, and collects data from other
sources that we did not (e.g., the password and connection service
files). Thanks to Tom Bloor for the report (issue #410).
- Changed dependency validation to prevent an error when a change required
from a different project has been reworked. Previously, when a when
requiring a change such as `foo:greeble`, Sqitch would raise an error if
`foo:greeble` was reworked, suggesting that the dependency be
tag-qualified to eliminate ambiguity. Now reworked dependencies may be
required without tag-qualification, though tag-qualification should still
be specified if functionality as of a particular tag is required.
- Added a workaround for the shell quoting issue on Windows. Applies to
IPC::System::Simple 1.29 and lower. See
[pjf/ipc-system-simple#29](https://github.com/pjf/ipc-system-simple/pull/29)
for details (#413).
- Fixed an issue with the MariaDB client where a deploy, revert, or
verify failure was not properly propagated to Sqitch. Sqitch now passes
`--abort-source-on-error` to the Maria `mysql` client to ensure that
SQL errors cause the client to abort with an error so that Sqitch can
properly handle it. Thanks to @mvgrimes for the original report and,
years later, the fix (#209).
- Fixed an issue with command argument parsing so that it truly never
returns a target without an engine specified, as documented.
- Removed documentation for methods that don't exist.
- Fixed test failures due to a change in Encode v2.99 that's stricter
about `undef` arguments that should be defined.
[Improvements]
- The Snowflake engine now consults the `connections.warehousename`,
`connections.dbname`, and `connections.rolename` variables in the
SnowSQL configuration file (`~/.snowsql/config`) before falling back on
the hard-coded warehouse name "sqitch" and using the system username as
the database name and no default for the role.
- Switched to using a constant internally to optimize windows-specific
code paths at compile time.
- When `deploy` detects undeployed dependencies, it now eliminates
duplicates before listing them in the error message.
- Now requiring IO::Pager v0.34 or later for its more consistent
interface.
- Added notes about creating databases to the tutorials. Thanks to Dave
Rolsky for the prompt (#315).
- Added a status message to tell the user when the registry is being
updated, rather than just show each individual update. Thanks to Ben
Hutton for the suggestion (#276).
- Added support for a `$SQITCH_TARGET` environment variable, which takes
precedence over all other target specifications except for command-line
options and arguments. Thanks to @mvgrimes for the suggestion (#203).
- Fixed target/engine/change argument parsing so it won't automatically
fail when `core.engine` isn't set unless no targets are found. This
lets engines be determined strictly from command-line arguments --
derived from targets, or just listed on their own -- whether or not
`core.engine` is set. This change eliminates the need for the
`no_default` parameter to the `parse_args()` method of App::Sqitch
Command. It also greatly reduces the need for the core `--engine`
option, which was previously required to work around this issue (see
below for its removal).
- Refactored config handling in tests to use a custom subclass of
App::Sqitch::Config instead of various mocks, temporary files, and the
like.
- Added advice to use the PL/pgSQL `ASSERT()` function for verify scripts
to the Postgres tutorial. Thanks to Sergii Tkachenko for the PR (#425).
[Target Variables]
- The `verify` command now reads `deploy.variables`, and individual
`verify.variables override `deploy.variables`, on the assumption that
the verify variables in general ought to be the same as the deploy
variables. This makes `verify` variable configuration consistent with
`revert` variable configuration.
- Variables set via the `--set-deploy` option on the `rebase` and
`checkout` commands no longer apply to both reverts and deploys, but
only deploys. Use the `--set` option to apply a variable to both
reverts and deploys.
- Added support for core, engine, and target variable configuration. The
simplest way to use them is via the `--set` option on the `init`,
`engine`, and `target` commands. These commands allow the configuration
of database client variables for specific engines and targets, as well
as defaults that apply to all change execution commands (`deploy`,
`revert`, `verify`, `rebase`, and `checkout`). The commands merge the
variables from each level in this priority order:
* `--set-deploy` and `--set-revert` options on `rebase` and `checkout`
* `--set` option
* `target.$target.variables`
* `engine.$engine.variables`
* `deploy.variables`, `revert.variables`, and `verify.variables`
* `core.variables`
See `sqitch-configuration` for general documentation of of the
hierarchy for merging variables and the documentation for each command
for specifics.
[Options Unification]
- Added the `--chdir`/`--cd`/`-C` option to specify a directory to change
to before executing any Sqitch commands. Thanks to Thomas Sibley for
the suggestion (#411).
- Added the `--no-pager` option to disable the pager (#414).
- Changed command-line parsing to allow core and command options to
appear anywhere on the line. Previously, core options had to come
before the command name, and command options after. No more. The caveat
is that command options that take arguments should either appear after
the command or use the `--opt=val` syntax instead of `--opt val`, so
that Sqitch doesn't think `val` is the command. Even in that case, it
will search the rest of the arguments to find a valid command.
However, to minimize this challenge, the documentation now suggests
and demonstrates putting all options after the command, like so:
`sqitch [command] [options]`.
- Simplified and clarified the distinction between core and command
options by removing all options from the core except those that affect
output and runtime context. The core options are:
* -C --chdir --cd <dir> Change to directory before performing any actions
* --etc-path Print the path to the etc directory and exit
* --no-pager Do not pipe output into a pager
* --quiet Quiet mode with non-error output suppressed
* -V --verbose Increment verbosity
* --version Print the version number and exit
* --help Show a list of commands and exit
* --man Print the introductory documentation and exit
- Relatedly, single-letter core options will now always be uppercase,
while single-letter command options will be lowercase. As such, `-V`
has been added as an alias for `--version`, although `-v` remains for
now, undocumented. It may be removed in the future should a compelling
use for `-v` in a command be discovered.
- All other options have been moved to the commands they affect. Their
use should remain mostly unchanged now that command options are parsed
from anywhere on the command-line, although we recommend that all
options come after commands. The options were moved as follows:
* `--registry`, `--client`, `--db-name`, `--db-user`, `--db-host`, and
`--db-port` (and their aliases) have been moved to the `checkout`,
`deploy`, `log`, `rebase`, `revert`, `status`, `upgrade`, and
`verify` commands.
* `--plan-file` and `--top-dir` (deprecated; see below) have been moved
to the `add`, `bundle`, `checkout`, `deploy`, `rebase`, `revert`,
`rework`, `show`, `status`, `tag`, and `verify` commands. They were
already supported by the `init`, `engine`, and `target` commands
(where `--top-dir` is not deprecated).
- Because some command options conflicted with core options, a few
options have been removed altogether, including:
* The `--verbose` option on the `--engine` and `--target` commands has
been removed, but no visible change should be apparent, since those
commands now read the core `--verbose` option.
* The undocumented `--dir` alias for `--top-dir` has been removed, as
it conflicted with the option of the same name but different meaning
in the `init`, `engine`, and `target` commands.
* The `-d` alias for `--set-deploy` in the `rebase` and `checkout`
commands has been changed to `-e` so as not to conflict with the `-d`
alias for `--db-name`.
* Added tests for all commands to ensure none of their options conflict
with core options. Will help prevent conflicts in the future.
[Deprecations & Removals]
- Deprecated the `--top-dir` option in favor of `--chdir` with a warning
except when used for configuration in the `init`, `engine`, and
`target` commands.
- Removed the core `--deploy-dir`, `--revert-dir`, and `--verify-dir`
options, which have been deprecated and triggering warnings since
v0.9993 (August 2015). The `--dir` option to the `init`, `engine`, and
`target` commands remains the favored interface for specifying script
directories.
- Removed the deprecated core `--engine` option. The `init` command still
supports it, while other commands are able to parse the engine name as
an argument — e.g., `sqitch deploy mysql` — or implicitly as part of a
target, as in `sqitch revert db:pg:tryme`. When Sqitch is unable to
determine the engine for a command, the error message no longer
mentions `--engine` and instead suggests specifying the engine via the
target. This option never triggered an error, but demonstration of its
use has been limited to `init` examples.
- Removed support for reading the `core.$engine` configuration, which has
been deprecated with warnings in favor of `engine.$engine` since 0.997
(November 2014). The `sqitch engine update-config` action remains
available to update old configurations, but may be removed in the
future.
- Removed the `--deploy`, `--revert`, and `--verify` options on the `add`
command, as well as their `--no-*` variants. They have been deprecated
with warnings in favor of the `--with` and `--without` options since
v0.990 (January 2014).
- Removed the `--deploy-template`, `--revert-template`, and
`--verify-template` options to the `add` command. They have been
deprecated with warnings in favor of the `--use` option since v0.990
(January 2014).
- Removed the `add.deploy_template`, `add.revert_template`, and
`add.verify_template` configuration settings. They have been deprecated
with warnings in favor of the `add.templates` configuration section
since v0.990 (January 2014).
- Removed the `@FIRST` and `@LAST` symbolic tags, which have been
deprecated with warnings in favor of `@ROOT` and `@HEAD`, respectively,
since 0.997 (November 2014).
- Removed the command-specific options with the string "target" in them,
such as `--to-target`, `--upto-target`, which have been deprecated with
warnings in in favor of options containing the string "change", such as
`--to-change` and `--upto-change`, since v0.997 (November 2014).
- Remove the `engine` and `target` command `set-*` actions and their
corresponding methods, which have been deprecated in favor of the
`alter` action since v0.9993 (August 2015).
- Removed the automatic updating of change and tag IDs in the Postgres
engine. This functionality was added in v0.940 (December 2012), when
Postgres was the only engine, and the SHA-1 hash for change and tag IDs
was changed. There were very few deployments at the time, and all
should long since have been updated.
[API Changes]
- Added the URI-overriding parameters `user`, `host`, `port`, and
`dbname` to App::Sqitch::Target so that command options can be used to
easily set them.
- Added support for passing attribute parameters to the `all_targets`
group constructor on App::Sqitch::Target, so that command-line options
can be used to assign attributes to all targets read from the
configuration.
- Aded the `target_params` method to App::Sqitch::Command and updated all
commands to use it when constructing targets. This allows commands to
define options for Target parameters, as required for moving options to
commands as described above.
- Added the `class_for` method to App::Sqitch::Command so that the new
options parser described above can load a command class without
instantiating an instance. Useful for searching command-line arguments
for a command name.
- Added the `create` constructor to App::Sqitch::Command to let Sqitch
instantiate an instance of a command once it finds one via `class_for`.
Previously, Sqitch used the `load` method, which handled the
functionality of both `class_for` and `create`. That method still
exists but is used only in tests.
- Added the ConnectingCommand role to define database connection options
for the commands that need them.
- Added the ContextCommand role to define command options for the
location of the plan file and top directory. This is also where use of
the deprecated form of `--top-dir` triggers a warning.
- Removed the `verbosity` attribute from App::Sqitch::Command::engine and
App::Sqitch::Command::target, since the `--verbose` option is no longer
needed. These commands now rely on the core `--verbose` option.
- Removed the copying of core options from the target class and
TargetConfigCommand role, since the attributes fetched from there are
no longer core options, but provided as attribute parameters to the
constructors by commands.
- Removed documentation for the optional `config` parameter to the
`all_targets` constructor of App::Sqitch::Target, since it was never
used by Sqitch. It always fetched the config from the required `sqitch`
parameter. Support for the `config` parameter has not been removed,
since third-parties might use it.
- Removed the `set_*` methods in the `engine` and `target` commands,
which have been deprecated in favor of the new `alter` method since
v0.9993 (August 2015).
- Removed the `old_id` and `old_info` methods from Change and Tag, which
date from v0.940 (December 2012), and were provided only to allow
existing Postgres databases to be updated from the old to new ID
format, now removed. There should be no other use case for these
methods.