# Release Notes for Apache Derby 10.13.1.1

These notes describe the difference between Apache Derby release 10.13.1.1 and the preceding release 10.12.1.1.

- Overview
- New Features
- Bug Fixes
- Issues
- Build Environment
- Verifying Releases

## Overview

The most up to date information about Derby releases can be found on the Derby download page.

Apache Derby is a pure Java relational database engine using standard SQL and JDBC as its APIs. More information about Derby can be found on the Apache web site. Derby functionality includes:

- Embedded engine with JDBC drivers
- Network Server
- Network client JDBC drivers
- Command line tools: ij (SQL scripting), dblook (schema dump) and sysinfo (system info)

The 10.13 release family supports the following Java and JDBC versions:

- Java SE 8 with JDBC 4.2

## New Features

This is a feature release. The following new features were added:

- DERBY-6136: tool for siphoning data out of corrupted databases
- DERBY-6725: system function which prints out the name of the current database
- DERBY-4555: system procedures to import CSV file with headers
- DERBY-6852: allow identity columns to cycle.

## Bug Fixes

The following issues are addressed by Derby release 10.13.1.1. These issues are not addressed in the preceding 10.12.1.1 release.

Issue Id | Description
--- | ---
DERBY-6914 | Incorrect example for new SYSCS_UTIL.SYSCS_IMPORT_TABLE_BULK procedure
DERBY-6913 | Document the new ability of identity columns to cycle
DERBY-6900 | docs build for ref.html gives errors about rrefjavstateautogen.dita -- possible typo?
DERBY-6895 | Add documentation for new SYSCS_IMPORT_TABLE_BULK, SYSCS_IMPORT_DATA_BULK procedures
DERBY-6894 | Enhance COLUMNINDEXES parsing for SYSCS_IMPORT_DATA_BULK to recognize columns by name
DERBY-6893 | Create new SYSCS_IMPORT_DATA_BULK procedure
DERBY-6892 | Create new SYSCS_IMPORT_TABLE_BULK procedure
DERBY-6890 | ALTER TABLE DROP COLUMN corrupts secondary index collation information
DERBY-6886 | Fix links to CI test results
DERBY-6885 | Remove ReuseFactory
DERBY-6884 | SYSCS_IMPORT_TABLE_LOBS_FROM_EXTFILE can't import more than Integer.MAX_VALUE bytes of blob data
DERBY-6883 | Document the new SET GENERATED clause of ALTER TABLE introduced by DERBY-6882
DERBY-6882 | Add functionality to ALTER TABLE: switch from GENERATED ALWAYS to GENERATED BY DEFAULT
DERBY-6881 | Test failures with JDK 9-ea b111
DERBY-6880 | Update failing with java.sql.SQLDataException
DERBY-6879 | Engine deadlock between XA timeout handling and cleanupOnError
DERBY-6875 | Partially broken download pages
DERBY-6870 | Google Summer of Code 2016: Derby bug fixing
DERBY-6869 | XMLXXETest fails in non-English locales
DERBY-6868 | Remove the dependency on Jakarta ORO
DERBY-6866 | Add URLs to Maven pom files
DERBY-6864 | RawDBReaderTest fails on Windows
DERBY-6860 | Automatic download of junit.jar broken
DERBY-6852 | Allow identity columns to cycle (as defined in SQL:2003)
DERBY-6847 | Document SYSCS_UTIL.SYSCS_GET_DATABASE_NAME()
DERBY-6845 | Document the rawDBReader optional tool
DERBY-6828 | Network Server don't start in czech localized enviroment due missing key DRDA_MissingNetworkJar.S
DERBY-6752 | AutoloadedDriver tries to load a non-existent class, AutoloadedDriver40
DERBY-6726 | NPE from trigger
DERBY-6725 | Add a system function which returns the name of the database.
DERBY-6391 | remove unneeded object creation in newException() calls in releases > 10.10
DERBY-6334 | Test harness security policy prevents running DatabaseClassLoadingTest twice
DERBY-6136 | Create a custom/optional tool for dumping the data in a corrupted database.
DERBY-5950 | PlanExporter and SignatureChecker don't appear in the list of tools supported by derbyrun.
DERBY-5944 | The hard-coded PlanExporter help message should be internationalized so that it can be translated
DERBY-5605 | Calling Blob/Clob free() explicitly after implicit free throws exception in client driver
DERBY-5585 | Improve error messages used when Derby can't find the class or method backing up a SQL routine or type
DERBY-4555 | Expand SYSCS_IMPORT_TABLE to accept CSV file with header lines
DERBY-4091 | Investigate "size_problem" column in MailJdbc terst
DERBY-3181 | isNullable on ResultSetMetaData from DatabaseMetaData.getBestRowIdentifier values are opposite when there is no rows in ResultSet vs. when there is a row.
DERBY-1773 | insertRow() and updateRow() fail with syntax error when column has an alias
DERBY-853 | ResultSetMetaData.getScale returns inconsistent values for DOUBLE type.

## Issues

Compared with the previous release (10.12.1.1), Derby release 10.13.1.1 introduces the following new features and incompatibilities. These merit your special attention.

- Note for DERBY-6852: When a Derby SEQUENCE cycles, it now cycles to its minimum/maximum value rather than to its start value.

### Note for DERBY-6852

#### Summary of Change

When a Derby SEQUENCE cycles, it now cycles to its minimum/maximum value rather than to its start value.

#### Symptoms Seen by Applications Affected by Change

In previous releases, when a Derby SEQUENCE cycled, it cycled to its start value. But now it cycles to its maximum or minimum value:

- If the SEQUENCE has a positive increment, it cycles to its minimum value.
- If the SEQUENCE has a negative increment, it cycles to its maximum value.

#### Rationale for Change

The new behaviour remains compliant with the SQL standard, but we believe it is more useful.

Note that the new behavior is also used for the new CYCLE behavior of IDENTITY columns.

## Build Environment

Derby release 10.13.1.1 was built using the following environment:

- Branch - Source code came from the 10.13 branch.
- Machine - Linux Fedora22 4.4.14.fc22.x86_64
- Ant - Apache Ant(TM) version 1.9.5 compiled on May 31 2015
- Compiler - All classes were compiled by OpenJDK Runtime Environment (build 1.8.0_91-b14)

## Verifying Releases

It is essential that you verify the integrity of the downloaded files using the PGP and MD5 signatures. MD5 verification ensures the file was not corrupted during the download process. PGP verification ensures that the file came from a certain person.

The PGP signatures can be verified using PGP or GPG. First download the Apache Derby KEYS as well as the `asc` signature file for the particular distribution. It is important that you get these files from the ultimate trusted source - the main ASF distribution site, rather than from a mirror. Then verify the signatures using ...

    % pgpk -a KEYS
    % pgpv db-derby-X.Y.tar.gz.asc

    or

    % pgp -ka KEYS
    % pgp db-derby-X.Y.tar.gz.asc

    or

    % gpg --import KEYS
    % gpg --verify db-derby-X.Y.tar.gz.asc

To verify the MD5 signature on the files, you need to use a program called `md5` or `md5sum`, which is included in many unix distributions. It is also available as part of GNU Textutils. Windows users can get binary md5 programs from here, here, or here.

We strongly recommend that you verify your downloads with both PGP and MD5.