## 1.12 2016-12-12

Page Checksums, Configuration, and Bug Fixes

IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.

Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error.

Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.

Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not.

Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database.

Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster.

Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.

Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.

Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: `INFO: backup command end: completed successfully`.

For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.

Abstracted code to determine which database cluster is the primary and which are standbys.

Improved consistency and flexibility of the protocol layer by using JSON for all messages.

File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.

Improved `IO->bufferRead` to always return requested number of bytes until EOF.

Simplified the result hash of `File->manifest()`, `Db->tablespaceMapGet()`, and `Db->databaseMapGet()`.

Improved errors returned from child processes by removing redundant error level and code.

Code cleanup in preparation for improved stanza-create command.

Improved parameter/result logging in debug/trace functions.

Fixed an issue that suppressed exceptions in PDF builds.

Fixed regression in section links introduced in v1.10.

Added Retention to QuickStart section.

Allow a source to be included as a section so large documents can be broken up.

Added section link support to Markdown output.

Added list support to PDF output.

Added include option to explicitly build sources (complements the exclude option though both cannot be used in the same invocation).

Added keyword-add option to add keywords without overriding the default keyword.

Added debug option to doc.pl to easily add the debug keyword to documentation builds.

Added pre option to doc.pl to easily add the pre keyword to documentation builds.

Builds in release.pl now remove all docker containers to get consistent IP address assignments.

Improvements to markdown rendering.

Remove code dependency on project variable, instead use title param.

Removed erroneous --no-config option in help test module.

Update control and WAL test files to 9.4 with matching system identifiers.

Improved exception handling in file unit tests.

Changed the --no-fork test option to --fork with negation to match all other boolean parameters.

Various improvements to validation of backup and restore.

Add more realistic data files to synthetic backup and restore tests.