Apache Derby 10.1.3.1 Release
Use the links below to download a distribution of Apache Derby from the archives. You should always verify the integrity of distribution files downloaded from a mirror.
There are four different distributions:
- bin distribution - contains the documentation, javadoc, and jar files for Derby.
- lib distribution - contains only the jar files for Derby.
- lib-debug distribution - contains jar files for Derby with source line numbers.
- src distribution - contains the Derby source tree at the point which the binaries were built.
There are two separate Eclipse plugins for Derby:
- derby_core_plugin - provides the Derby jar files to other plugins in Eclipse.
- derby_ui_plugin - provides an Apache Derby Nature in Eclipse for easy database application development.
Please note: both plugins must be installed for full functionality. For information on installing and using the Derby plugins for Eclipse, please see the Using the 10.1 Core and 1.1 UI Derby plug-ins page.
Derby is a pure Java relational database engine using standard SQL and JDBC as its APIs. 10.1.3.1 is a bug fix release providing quality improvements for Derby 10.1
What's new in 10.1.3.1:
- Critical fixes for network client when used with a transaction manager (XA)
- A critical data integrity fix when running in IBM J2RE 1.5.0 SR2. See the description of DERBY-1327 below.
- Improved Network Server stability and reliability
- Improved memory usage for the Network Client
- Improved query performance for UNION queries and subqueries
- Better handling of text encoding on systems with non-ASCII native encoding
- More reliable behavior of scrollable insensitive result sets
- Updated documentation
- A new distribution that includes line number information, lib-debug, has been added to assist in filing and tracking down Derby issues
- Many important fixes to correct issues with data integrity, correct memory leaks and address other product defects
For a comprehensive list of changes, consult the list of fixed issues below.
10.1.3.1 functionality includes:
- Embedded engine with JDBC driver
- Network Server
- Network client JDBC driver
- Command line tools: ij (SQL scripting), dblook (schema dump) and sysinfo (system info)
- Schemas, tables, temporary tables, views, triggers, indexes, savepoints
- Java procedures and functions
- Standard datatypes including BLOB and CLOB
- Sub-queries and joins
- Primary key, foreign key, unique and check constraints
- Referential actions
- Full ACID transaction support with all four isolation levels
- Row and table level locking
- Configurable authentication including LDAP support
- On-line backup and recovery support
- Optional on-disk encryption
- Platform independent database format
- Full support for Java 2 Security Manager
- JDK 1.3, 1.4, 1.5, and J2ME J2ME/CDC/Foundation Profile
- JSR-169, JDBC 2.1, and JDBC 3.0 support
Derby version 10.1.3.1 is a bug fix release based on Apache Derby 10.1.2.1.
The following reported JIRA issues were fixed in the 10.1.3.1 release:
- [DERBY-7] - Bug in NULLIF Function
- [DERBY-76] - Stored procedure cannot be invoked with VALUES statement
- [DERBY-85] - NPE when creating a trigger on a table and default schema doesn't exist.
- [DERBY-125] - Network Server can send DSS greater than 32K to client, which breaks DRDA protocol.
- [DERBY-170] - Inserting large string value into non-existent table causes communication link failure over Network Server.
- [DERBY-298] - rollforward will not work correctly if the system happens to crash immediately after rollforward backup.
- [DERBY-324] - AES encryption test fails on Solaris 10
- [DERBY-331] - create table fails when a constraint defintion follows a column default
- [DERBY-387] - SimpleNetworkClientSample.java network server example has an error which causes it to fail
- [DERBY-395] - Server-side "trace on" and "trace off" commands do not appear to be working correctly.
- [DERBY-405] - SYNONYM should not be allowed in SESSION schema because that can confusion wih temporary tables
- [DERBY-437] - SYSCS_UTIL.SYSCS_COMPRESS_TABLE does not work on tables that are created with delimited identifier names.
- [DERBY-463] - Successive writes to a java.sql.Blob.setBinaryStream(long) seem to reset the file pointer
- [DERBY-466] - Distinct in subselect can return wrong results
- [DERBY-491] -Protocol exception when Network Server tries to return ~32K of data or greater in a result set for a Java stored procedure.
- [DERBY-575] - test blobclob4BLOB fails on OS 390
- [DERBY-583] - networkserver does not return error message strings in native encoding to ij on zseries
- [DERBY-614] - Execution failed because of a Distributed Protocol Error
- [DERBY-616] - create index can fail under the SecurityManager when trying to access files in the tmp folder of a database
- [DERBY-618] - Make the client driver connection URL work when spaces are in the URL.
- [DERBY-628] - setNull() using Types.VARCHAR for a CLOB parameter fails in embedded mode.
- [DERBY-649] - Useful indexes not used in UNION ALL
- [DERBY-650] - Hyperlinks in demo/demo.html are broken
- [DERBY-652] - Documentation and demos have incubator references
- [DERBY-657] - Release archives should have executable bits set for scripts and text files should have proper line endings.
- [DERBY-658] - test harness improvements required for running on non-ASCII systems
- [DERBY-678] - derby documentation does not reflect changes to update lock behavior
- [DERBY-679] - the lock compatibility table in developers guide needs to be updated
- [DERBY-683] - Use correct encoding for ClobOutputStream on client
- [DERBY-701] - Java 2 security policy file examples don't work -- are missing a needed line
- [DERBY-704] - Large page cache kills initial performance
- [DERBY-715] - lock deadlocks sometimes reported as lock timeouts
- [DERBY-736] - "" does not work as a userid for Derby client (SqlException: userid length, 0, is not allowed.)
- [DERBY-741] - row estimates from btree code can sometimes return more row than exist in table
- [DERBY-746] - NullPointerException when 'encryptionKey' length is an odd number, or it contains invalid chars
- [DERBY-757] - java.lang.NullPointerException can occur while scanning for global id in the transaction table under heavey load.
- [DERBY-758] - CachedPage.readPage() can loop forever on insane builds if the read from the container keep failing with IO Exceptions.
- [DERBY-777] - Hang in starting network server on Z/OS
- [DERBY-788] - 'store/encryptionKey.sql' fails on Solaris 10
- [DERBY-795] - After calling ResultSet.relative(0) the cursor loses its position
- [DERBY-798] - NullPointerException booting if loaded by the bootstrap class loader and JVM returns null for bootstrap loader.
- [DERBY-800] - derbylang/ConcurrentImplicitCreateSchema.java fails intermittently with a lock timeout
- [DERBY-805] -Push join predicates into union and other set operations. DERBY-649 implemented scalar (single table) predicate pushdown. Adding join predicate push down could improve performance significantly.
- [DERBY-808] - PreparedStatements can take longer to execute than equivalent Statements when there are multiple join conditions mixed with some search clauses.
- [DERBY-877] - zOS - with DerbyClient getDate(#) fails with IllegalArgumentException - unsupported date format - resultset.java
- [DERBY-882] - Increasing size of varchar type using ALTER TABLE can implicitly change the column from NOT NULL to NULLable.
- [DERBY-898] - setAutoCommit(false) is not working properly for local transaction with ClientXADataSource
- [DERBY-899] - Cannot rollback to savepoint when using ClientXADataSource
- [DERBY-900] - Remove use of String(byte) and String(byte, int, int) constructors in network client leading to non-portable behaviour
- [DERBY-901] - Remove use of String(byte) constructors in network server leading to non-portable behaviour
- [DERBY-902] - Remove use of String(byte) and String(byte, int, int) constructors in engine leading to non-portable behaviour
- [DERBY-903] - Remove use of String(byte) and String(byte, int, int) constructors in testing leading to non-portable behaviour
- [DERBY-960] - Client xa prepare returns XA_OK instead of XA_RDONLY for a read only transaction
- [DERBY-966] - creating a preparedStatement outside of a Global tran using a ClientXADatasource will result in an "SqlException: Cannot set holdability" if the statement is used in a Global transaction
- [DERBY-972] - tests derbynet/csPrepStmt and prepStmt use mechanisms that are not portable over encodings
- [DERBY-994] - SQL examples for LEFT OUTER JOIN and RIGHT OUTER JOIN in the Derby Reference manual are incorrect
- [DERBY-997] - ClassCastException when executing queries with aggregates in app servers
- [DERBY-1002] - Check that DRDAStatement and DRDAResultSet states are reset when they are re-used
- [DERBY-1004] - Client should not require user to rollback the active transaction before call to PooledConnection.getConnection()
- [DERBY-1005] - getHoldability does not return CLOSE_CURSORS_AT_COMMIT in a global transaction
- [DERBY-1006] - Client allows setHoldability to HOLD_CURSORS_OVER_COMMIT on both connection and statement in a global transaction
- [DERBY-1009] - Embedded ResultSet.getStatement() does not return the Statement object that created it for a connection returned from EmbeddedXADataSource
- [DERBY-1010] - setTransactionIsolation can cause ava.sql.SQLException: Invalid operation: statement closed in some contexts with xa
- [DERBY-1024] - Client's XAResource.start throws XAException with XAER_RMFAIL when local transaction is active
- [DERBY-1025] - <xa> client XAResource.start() does not commit an active local transaction when auto commit is true
- [DERBY-1035] - With client, Connection.getTransactionIsolation() return value is wrong after changing the isolation level with an SQL statement such as "set current isolation = RS"
- [DERBY-1044] - <xa> client XAConnection.getConnection() does not have the correct default isolation level if set by an earlier connection obtained from the same XAConnection
- [DERBY-1055] - Security.AccessControlException in client under SecurityManager when trying to connect using EUSRIDPWD security mechanism
- [DERBY-1058] - derby fails supporting holdable scrollable resultset: ERROR XSCB8: The btree conglomerate 1,141,037,436,752 is closed.
- [DERBY-1069] - Client should unwrap exceptions thrown in privilege blocks rather than throwing the java.security.PrivilegedActionException
- [DERBY-1073] - Reset optimizer timeout for subqueries on a per-round basis to allow consideration of plans that use pushed predicates.
- [DERBY-1085] - java.lang.NullPointerException with char for bit data column and subquery
- [DERBY-1103] - Change the client driver to allow statements to be garbage-collected once they are not referenced in an application
- [DERBY-1127] - client gives SqlException for test callable.java and parameterMapping.java on zOS
- [DERBY-1136] - JDBC driver on rs.getFloat() gives LossOfPrecisionConversionException for float fields containing Float.MAX_VALUE
- [DERBY-1144] - With client PooledConnection.getConnection() does not reset holdability and isolation state properly
- [DERBY-1148] - Client XA getTransactionIsolation() does not return the correct isolation level when rejoining a global transaction
- [DERBY-1159] - PreparedStatement.executeUpdate throws a XJ05C exception in a global transaction if the statement is HOLD_CURSORS_OVER_COMMIT
- [DERBY-1174] - NullPointerException in network server with LDAP authentication
- [DERBY-1187] - defragment of inplace compress pass for described dataset is not freeing up empty pages.
- [DERBY-1189] - latch self deadlock when running inplace compress
- [DERBY-1207] - Derby Server and Administration Guide - Network Server security
- [DERBY-1247] - test DerbyNetAutoStart uses non-portable mechanism to check on derby.log
- [DERBY-1262] - Like-predicates: % does not match tab character
- [DERBY-1293] - Derby Server and Administration Guide - derby.drda.startNetworkServer
- [DERBY-1299] - Derby Server and Administration Guide - derby.drda.timeslice
- [DERBY-1310] - Add apache notice to test file phaseTester.java
- [DERBY-1324] - Need to remove old copyright notice
- [DERBY-1325] - Isolation level of local connection does not get reset after exiting a global transaction if the isolation level was changed using SQL
- [DERBY-1327] - Identity column can be created with wrong and very large start with value with "J2RE 1.5.0 IBM Windows 32 build pwi32dev-20060412 (SR2)" with JIT on
- [DERBY-1329] - ASSERT failure/IndexOutOfBoundsException with correlated subquery for UPDATE ... SET ... WHERE CURRENT OF ... statement.
- [DERBY-1354] - Writer.write(int c) to writer from Clob.setCharacterStream(long pos) appends integer value, not character
- [DERBY-1359] - Developers guide: example showing shut down of Derby system should not contain a database name
- [DERBY-1365] - Address potential problems with optimizer logic in some rarely-exercised code.
- [DERBY-1386] - Wrong results with query using LIKE and ESCAPE clause that includes "%", "\", and "_"
- [DERBY-1392] - Corner case behaviour in RAFContainer#writePage() can cause invalid data to be written to data files
- [DERBY-1454] - DRDA Protocol Exception when DSS is exactly 32767 in length
- [DERBY-178] - Provide line number information in distribution's class files
- [DERBY-1039] - Database creation should fail if specified log device path already exists
- [DERBY-1158] - Allow use of Statements created in local transaction with default holdability to be used in global transactions.
- [DERBY-1230] - Remove the huge log files (TesterN.out) left from running 'stress/stress.multi'
- [DERBY-1287] - Derby Server and Administration Guide - Network client driver examples should show how to enable authentication
- [DERBY-1300] - Derby Server and Administration Guide - Managing the Derby Network Server remotely by using the servlet interface should clarify that Network Server is shutdown when Application Server is shutdown
- [DERBY-1305] - Derby Server and Administration Guide translated into Brazilian Portuguese
- [DERBY-1339] - messages_pt_BR.properties file should not translate Network Server "start" and "shutdown" commands
- [DERBY-1376] - File java/engine/org/apache/derby/loc/messages_en.properties - Message XSLAT.D
On IPv6/Ipv4 dual stack windows machines, the network server needs the following jvm properties to be prefixed while starting the server
UnknownHostException while trying to connect with NetworkClient on a Windows dual boot IPv4/IPv6 machine
The following exception will occur
ij> CONNECT 'jdbc:derby://hostname:1527/sample;create=true ' USER 'mkutty' PASSWORD 'admin';
ERROR (no SQLState): java.net.UnknownHostException : Error opening socket to server hostname on port 1527 with message : <hostname>
There may be an underlying windows bug causing this issue
There is no Derby fix available for this issue
Start the client and server running on the IPv6 machine with the following jvm properties.
Network Client URL cannot take the IP Address as host name for IPV6 addresses.
NumberFormatException while trying to get connection to a Ipv6 server using the ip address as the host name in the database URL
The symptom is you will get a java error like this:
ij> CONNECT 'jdbc:derby://2002:92a:8f7a:13:9:42:73:115:1527/sample;create=true' USER 'mkutty' PASSWORD 'admin';
JAVA ERROR: java.lang.NumberFormatException: For input string: "92a:8f7a:13:9:42 :73:115:1527"
Derby URL format cannot support an IP address with ":"
There is no Derby fix available for this issue
Use host name in the URL instead of the IP address or connect with a datasource instead of URL
Identity column can be created with wrong and very large start with value with "J2RE 1.5.0 IBM Windows 32 build pwi32dev-20060412 (SR2)" with JIT on
After creating a table, with JIT engaged, identity column start with values for any column in the database gets changed to an incorrect value.
The symptom is typically that an insert to the table will fail with the Exception:
SQLSTATE 22001: "A truncation error was encountered trying to shrink ... to length 12."
A JIT issue in IBM JDK 1.5 Service Release 2 can cause corruption of the start with value. The affected version is java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pwi32dev-20060511 (SR2))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20060504 (JIT enabled)
J9VM - 20060501_06428_lHdSMR
JIT - 20060428_1800_r8
GC - 20060501_AA)
JCL - 20060511a
This issue is fixed in Derby 10.1.3.1. A fix to resolve the issue is available in 10.1 builds after 10.1.2.5.413354.
Once corruption has occurred there is no way in 10.1 to correct the START WITH value. The only way to recover the data is to recreate the database and use export/import to transfer the data.
For users of previous releases, the following JIT options can be specified for the JVM to prevent corruption in identity columns. This does allow recovery after the problem has occured.
A Derby 10.0 database in a jar cannot be booted against a 10.1(.3) engine.
Attempting to connect to a database in a jar created with Derby 10.0 fails when trying to connect with Derby 10.1.3. The following error is thrown:
ERROR XJ040: Failed to start database 'jar:(pathtojarfile)pathinjar', see the next exception for details.
ERROR 40XD1: Container was opened in read-only mode.
The problem was discovered and fixed as a part of DERBY-514. The newer Derby engine would attempt to apply safe soft upgrade changes applicable to a read/write database when the database was opened in read-only mode. The inability to write to the database files leads to the error 40XD1 mentioned above when the engine attempts to apply safe soft upgrade changes to a read-only database.
This has been fixed in 10.2.0.0.376372. The Derby engine should not attempt to apply soft upgrade changes to a read-only database.
Users with 10.0 Derby databases-in-jars can upgrade their 10.0 database in their jar file to a 10.1 database-in-a-jar by unjarring it, then connecting to it with a 10.1 version of the Derby engine and the upgrade=true attribute. The resulting database can then be jarred up again and future connections to this database using the 10.1 Derby engine will succeed.
Users of Derby versions after 10.2.0.0.376372 should be able to connect to their 10.0 database with no extra effort.
Tests were run on the following platforms. Results are listed separately for each platform.
|Type test||platform, jvm version||by.:|
|derbyall suite||Ubuntu 5.10 (Linux 2.6.12), Sun 1.4.2_09||Bernt Johnsen|
|derbyall suite||HP-UX B.11.11 U, HP JDK 1.5.0||Sun DBTG|
|derbyall suite||RHEL 4 64-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||RHEL 4 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||RHEL 3 64-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||RHEL 3 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||RHEL 4 32-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||RHEL 4 32-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris 10 x86 64-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris 10 x86 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris 9 x86 32-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris 9 x86 32-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris 10 x86 32-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris 10 x86 32-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris 10 SPARC 64-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris 10 SPARC 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris Nevada 64-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris Nevada 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris 9 SPARC 64-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris 9 SPARC 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris 8 SPARC 64-bit, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris 8 SPARC 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Solaris 10 SPARC 64-bit w/3 zones, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Solaris 10 SPARC 64-bit w/3 zones, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Windows 2003 x86, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Windows 2003 x86, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Windows 2000 x86, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Windows 2000 x86, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite||Windows XP x86 w/Cygwin, Sun JDK 1.4.2||Sun DBTG|
|derbyall suite||Windows XP x86 w/Cygwin, Sun JDK 1.5.0||Sun DBTG|
|Large Data Volume tests||Solaris 10 x86 64-bit, Sun JDK 1.5.0||Sun DBTG|
|JDBC 3.0 CTS tests||Solaris 10 x86 64-bit, Sun JDK 1.5.0||Sun DBTG|
|JDBC 3.0 CTS tests||Linux 2.6 x86 64-bit, Sun JDK 1.5.0||Sun DBTG|
|derbyall suite (10.1.3.0 RC)||FreeBSD 6.1 (i386), Diablo 1.5.0_06||Knut Anders Hatlen|
|derbyall suite (10.1.3.0 RC)||OpenBSD 3.9 (i386), J2SE 1.4.2 (SCSL + BSD patchset 7)||Knut Anders Hatlen|
|derbyall suite (10.1.3.0 RC)||OpenBSD 3.9 (i386), J2SE 5.0 (SCSL + BSD patchset 2)||Knut Anders Hatlen|
|derbyall suite||FreeBSD 6.1 (i386), J2SE 5.0 (SCSL + BSD patchset 3)||Knut Anders Hatlen|
|derbyall suite||NetBSD 3.0 (i386), J2SE 5.0 (SCSL + BSD patchset 3)||Knut Anders Hatlen|
|derbyall suite||RHEL 4.0 (Linux 2.6.9), IBM JDK 1.5.0 (j9vmxi3223-20060504)||Rajesh Kartha|
|derbyall suite||RHEL 4.0 (Linux 2.6.9), Sun JRE 1.5.0_07-b03 (with and without -server option)||Rajesh Kartha|
|derbyall suite||Windows Server 2003, IBM JDK 1.4.2 (cn142-20060421)||Ramandeep Kaur|
|derbyall suite||Windows Server 2003 64-bit, IBM JDK 1.5.0 (pwa64dev-2006511)||Ramandeep Kaur|
|derbyall suite||Suse 9.2, IBM JDK 1.4.2 (cxia32142-20050929)||Ramandeep Kaur|
|derbyall suite||Suse 9.2, IBM JDK 1.5.0 (pxi32dev-20060511)||Ramandeep Kaur|
|J2EE CTS test suite, JDBC only, with JCC 2.6||Windows 2000, Sun JDK 1.4.2_07-b05||Myrna Van Lunteren|
|derbyall suite||RHEL 4.0 (Linux 2.6.9 x86-64), Sun SDK 1.5.0_04-b05)||Myrna Van Lunteren|
|derbyall suite||Windows 2000, IBM SDK 1.5.0||Myrna Van Lunteren|
|derbyall suite||AIX 5.2, IBM JDK 1.4.2 and JDK 1.5.0 (with and w/o JIT)||Manjula Kutty|
|system/stress tests (10.1.3.0)||Redhat Linux, IBM JDK 1.4.2 and IBM JDK 1.5.0 (w/o JIT)||Manjula Kutty|
|IPV6 tests||Release notes included for DERBY-283 and DERBY-526||Manjula Kutty|
|derbyall suite (10.1.3.0)||SLES 9 (SMP), Sun J2SE 5.0 and IBM 1.3.1 SP 10||Stan Bradbury|
|derbyall suite (10.1.3.1)||SLES 9 (SMP), Sun J2SE 5.0||Stan Bradbury|
|Code coverage||JDK 1.3.1, JDK 1.4.2, JDK 1.5.0||Ramandeep Kaur|
Several test issues were reported, such as DERBY-496, DERBY-937, DERBY-1221, DERBY-1351, but no specific code issues were noted.
Tests for a specific platform can be run using the derbyTesting.jar file that can be found in the lib directory of the -lib or -bin distributions.
Instructions on how to run the tests can be found in the testing README.
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 you verify your downloads with both PGP and MD5.