view ChangeLog-Archive @ 969:0fce9f209457 default tip

Correcting typo
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 20 Mar 2025 19:41:27 +0100 (12 days ago)
parents 52a23aaa8580
children
line wrap: on
line source
# ChangeLog-Archive file for monetdb-java
# This file contains all past monetdb-java ChangeLog entries
# For every new release the ChangeLog is prepended to this file.

* Thu Jan 16 2025 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- The release version number has been bumped to 12.0 to avoid confusion
  with historic 11.x versions.
- Compiled and released new jar files: monetdb-jdbc-12.0.jre8.jar and
  jdbcclient.jre8.jar

* Wed Jan  8 2025 Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
- The JDBC jar now includes JdbcClient. For backward compatibility the jar
  is still also available as jdbcclient.jreX.jar.

* Thu Nov  7 2024 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- In JdbcClient when running the \vsci or \vdbi or \vsi commands, we now
  suppress "42000 SELECT: insufficient privileges for ..." and
  "42000 SELECT: access denied for ..." error messages when the connected user
  does not have 'monetdb' or 'sysadmin' privileges, needed for some validations.

* Wed Jun 19 2024 Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
- Implemented Connection#set/getClientInfo, and send sensible default info
  at connect time. This can be controlled with the properties 'client_info=on/off',
  'client_application=ApplicationName' and 'client_remark=Other Useful Info'.
  Note setting client info requires MonetDB server 11.51 (Aug2024) or higher.

* Thu Apr  4 2024 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected ResultSetMetaData methods getColumnTypeName(), getPrecision(),
  getColumnDisplaySize() and ParameterMetaData methods getParameterTypeName()
  and getPrecision() for the interval data types. They now return
  more precise information for the 13 possible interval data types.

* Thu Mar  7 2024 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved DatabaseMetaData.getTypeInfo(). It now also returns the serial
  and bigserial data types and all 13 possible interval data types.

* Fri Jan  5 2024 Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
- Network connections can now be encrypted with TLS by using jdbc:monetdbs://..
  instead of jdbc:monetdb://. The server is authenticated using the JVM's root
  certificate pool unless cert= or certhash= properties are given.
- The syntax of the JDBC URL's has been updated to match the monetdb:// and
  monetdbs:// URL syntax introduced in MonetDB 11.51 (Aug2024), see
  https://www.monetdb.org/documentation/user-guide/client-interfaces/monetdb-urls/.
  This adds a number of properties that can be set in the URL but is otherwise
  backward compatible except that percent sign are now used to escape other characters.
  For example, the password '100%milk&cookies' can be passed as
  password=100%25milk%26cookies.

* Thu Dec 28 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- In ResultSet.getObject(column, Class<T> type) and
  ResultSet.getObject(column, Map<String,Class<?>>) methods added support
  to return objects for classes: java.time.LocalDate, java.time.LocalDateTime
  and java.time.LocalTime.

* Wed Dec 20 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Enhanced DatabaseMetaData.getTables() method by adding support for SQL
  table type names: 'BASE TABLE', 'GLOBAL TEMPORARY' and 'LOCAL TEMPORARY'
  in parameter types[].  These are SQL synonyms of MonetDB table type names:
  'TABLE', 'GLOBAL TEMPORARY TABLE' and 'LOCAL TEMPORARY TABLE'.

* Thu Dec 14 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- In ResultSet.getObject() method added support for retrieving
  TIMESTAMP WITH TIME ZONE data as java.time.OffsetDateTime object
  and TIME WITH TIME ZONE as java.time.OffsetTime object.
  Also methods ResultSetMetaData.getColumnClassName() and
  ParameterMetaData.getParameterClassName() now return
  java.time.OffsetDateTime.class for columns of type TIMESTAMP WITH TIME ZONE
  and java.time.OffsetTime.class for columns of type TIME WITH TIME ZONE.

* Thu Oct 12 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved DatabaseMetaData.getSystemFunctions(). It now also returns
  functions: current_sessionid, greatest, ifnull, least, sql_max, sql_min.
  Function ifnull will only be returned for servers Jun2023 (11.47 or higher).

* Wed Aug  9 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Implemented ResultSet methods:
   <T> T getObject(int columnIndex, Class<T> type)
   <T> T getObject(String columnLabel, Class<T> type)
  They used to throw an SQLFeatureNotSupportedException.

* Thu Jul  6 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Removed deprecated nl.cwi.monetdb.*.* classes and package.
  Those classes were marked deprecated on 12 Nov 2020 from
  release 3.0 (released on 17 Feb 2021) onwards. It includes:
   nl.cwi.monetdb.client.JdbcClient.class
   nl.cwi.monetdb.jdbc.MonetDriver.class
   nl.cwi.monetdb.jdbc.types.INET.class
   nl.cwi.monetdb.jdbc.types.URL.class
   nl.cwi.monetdb.mcl.net.MapiSocket.class
  These classes are now removed permanently.
  Use the  org.monetdb.*  equivalents instead.

* Thu Jul  6 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Removed code to support old MonetDB servers Oct2014 or older. Those
  old servers did not yet have the system tables: sys.keywords and
  sys.table_types which are introduced in Jul2015 release. Those system
  tables are used by MonetDatabaseMetaData methods: getSQLKeywords(),
  getTableTypes() and getTables(). These 3 methods will now fail when
  used with those very old MonetDB servers.

* Wed Jul  5 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected implementation of Connection methods getClientInfo() and
  setClientInfo(). They used to get/set Connection properties instead of
  Client Info properties, which was incorrect.

* Thu Jun 22 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected DatabaseMetaData method getClientProperties().
  It used to return connection properties instead of client info properties.

* Thu May  4 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected DatabaseMetaData method getStringFunctions() when connected
  to Jun2023 server. It now includes the string functions from the new
  txtsim module.

* Thu Feb 23 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Compiled and released new jar files: monetdb-jdbc-3.3.jre8.jar and
  jdbcclient.jre8.jar

* Thu Feb  9 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected DatabaseMetaData.getSQLKeywords() output. It used to return
  all MonetDB SQL keywords, but now it excludes the SQL:2003 keywords
  as defined by the Java JDBC API specification.

* Thu Jan 19 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected DatabaseMetaData.getUDTs() output. It used to return rows
  for system types: inet, json, url and uuid. However those are not User
  Defined Types. Now they are no longer returned by this method.

* Thu Dec  8 2022 Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
- Internal method waitForPrompt() of class BufferedMCLReader has been
  renamed to discardRemainder(). The example program SQLcopyinto.java
  which uses this method, has been updated.

* Thu Nov 17 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Fixed an invalid error issue when a PreparedStatement had more than 250
  parameters. See also  https://github.com/MonetDB/MonetDB/issues/7337

* Thu Nov  3 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected returned SQL TypeName values for the MonetDB interval types:
  'day_interval', 'month_interval' and 'sec_interval'.  Those MonetDB
  type names can not be used in CREATE TABLE statements. Instead
  one has to use SQL type names: 'interval day', 'interval month' or
  'interval second'. The JDBC driver now returns those SQL type names.
  This applies to methods: DatabaseMetaData.getTypeInfo() for the output
  column TYPE_NAME (the output column LOCAL_TYPE_NAME now returns
  the original type name), ResultSetMetaData.getColumnTypeName() and
  ParameterMetaData.getParameterTypeName().

* Thu Oct 27 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected PreparedStatement methods getMetaData().getColumnDisplaySize(),
  getMetaData().getPrecision() and getParameterMetaData().getPrecision().

* Thu Oct 20 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved implementation of method ResultSetMetaData.getPrecision(). It
  now returns more accurate values for columns of type DECIMAL, NUMERIC,
  CHAR, VARCHAR, CLOB, JSON, URL and BLOB.
- Improved implementation of method ResultSetMetaData.getScale(). It now
  returns more accurate values for columns of type DECIMAL and NUMERIC.

* Thu Sep 29 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Removed creation and distribution of monetdb-mcl-1.##.jre8.jar file.
  Programmers who used this jar file should use monetdb-jdbc-3.#.jre8.jar file.

* Fri Sep 09 2022 Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
- Add autocommit=true/false option to the JDBC URL. The default remains 'true'.

* Wed Aug 24 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved DatabaseMetaData.getBestRowIdentifier(). When there are multiple
  unique constraints and no pkey for a table it used to return the columns
  of all the table unique constraints. Now it only returns the columns of
  the first table unique constraint.
  Also optimized the performance of getBestRowIdentifier(). It used to
  send a separate query first to find out if the table had a pkey or not.
  This extra query is now integrated so less queries are send to the server.

* Wed Mar 30 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected DatabaseMetaData methods getPrimaryKeys(), getBestRowIdentifier()
  and getIndexInfo() for local temporary tables located in schema tmp. They
  did not return any rows when the temp table had a primary or unique key or
  index. Now they do return rows as expected.

* Thu Feb 10 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Added recognition of 'xml' type. Use default mapping to Types.VARCHAR for
  easy and fast (as java.lang.String) retrieval, display and setting data of
  columns of type 'xml'.

* Thu Jan 27 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Compiled and released new jar files: monetdb-jdbc-3.2.jre8.jar,
  monetdb-mcl-1.21.jre8.jar and jdbcclient.jre8.jar

* Wed Jan 19 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Fixed an SQL query problem in DatabaseMetaData.getBestRowIdentifier()
  method when used with MonetDB Jan2022 (or newer) releases. It
  returned java.sql.SQLException:
   SELECT: with DISTINCT ORDER BY expressions must appear in select list
  As of MonetDB Jan2022 (11.43.5) such queries are no longer allowed.
  The internally used SQL query has been improved.

* Thu Jan 13 2022 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Extended JdbcClient application with support for following \d commands:
    \dt  \dv  \dSt  \dSv  \df  \dp  \dSf  \dSp  \dn  \dSn  and  \ds
  for showing list of: user tables, user views, system tables, system views,
  user functions, user procedures, system functions, system procedures,
  user schemas, system schemas and user sequences.
  For more information, see the built-in help (\?) on available commands.

* Thu Nov 25 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Extended FileTransferHandler utility class by adding support for reading from
  and writing to gzip compressed files when using file name extension .gz
  Also improve error handling by testing on empty file name and provide more
  information when invalid file name is given or other compression formats are
  requested. As the FileTransferHandler utility class is used by JdbcClient
  application, it will now also support this functionality.

* Fri Nov 05 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- The JdbcClient application has been extended to support the new
    COPY ... ON CLIENT functionality.
  However for security reasons you must provide an explicit new startup argument
    --csvdir "/absolute/path/to/csvdatafiles"
  or on MS Windows
    --csvdir "C:\\path\\to\\csvdatafiles"
  in order to activate the JdbcClient application to down/up load data to/from
  the local file system.

* Fri Nov 05 2021 Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
- Extended the MonetDB JDBC driver with support for the ON CLIENT clause of
  the COPY statements. To make use of this functionality you must first
  register handlers for upload and download of data.
  The MonetConnection class has been extended with 2 methods:
    public void setUploadHandler(UploadHandler uploadHandler)
    public void setDownloadHandler(DownloadHandler downloadHandler)
  The MonetDB JDBC driver API has been extended with interfaces:
    public interface org.monetdb.jdbc.MonetConnection.UploadHandler
    public interface org.monetdb.jdbc.MonetConnection.DownloadHandler
  See onclient.txt for more information on how to use these from Java.
  We also provide a utility class:
    public class org.monetdb.util.FileTransferHandler
  which provides an example implementation of the MonetConnection.UploadHandler
  and MonetConnection.DownloadHandler interfaces usable for reading files
  from or writing files to a local file system.

* Mon Jun 14 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Compiled and released new jar files: monetdb-jdbc-3.1.jre8.jar,
  monetdb-mcl-1.20.jre8.jar and jdbcclient.jre8.jar

* Thu Apr 29 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved performance of ResultSetMetaData methods getPrecision(),
  getScale(), isNullable() and isAutoIncrement(). The data is fetched
  from the server by sending a query. This used to be one query for
  each column of the ResultSet. Now these metadata queries are combined
  into one query fetching this meta data for up to 50 columns in one query.
  This reduces the number of queries sent to the server significantly.
  This is noticeable for instance when using generic JDBC query tools
  such as SQuirreL, DBeaver, which now respond much faster.

* Wed Mar  3 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Implemented PreparedStatement.toString() as requested by
  https://github.com/MonetDB/monetdb-java/issues/8

* Wed Mar  3 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Implemented fix for released monetdb-jdbc-3.0.jre8.jar and
  monetdb-mcl-1.19.jre8.jar when it is was run using java build 1.8.0_###.
  It would throw:
  java.lang.NoSuchMethodError: java.nio.CharBuffer.mark()Ljava/nio/CharBuffer;
  at org.monetdb.mcl.parser.StartOfHeaderParser.getNextAsString(Unknown Source)
  at org.monetdb.jdbc.MonetConnection$ResponseList.executeQuery(Unknown Source)
  at org.monetdb.jdbc.MonetConnection$ResponseList.processQuery(Unknown Source)
  at org.monetdb.jdbc.MonetStatement.internalExecute(Unknown Source)
  at org.monetdb.jdbc.MonetStatement.execute(Unknown Source)
  The problem is caused by a change in java.nio.CharBuffer API (return
  types of methods mark() and reset() have changed from Buffer to
  CharBuffer) from Java 8 to Java 9+.

* Wed Feb 17 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Compiled and released new jar files: monetdb-jdbc-3.0.jre8.jar,
  monetdb-mcl-1.19.jre8.jar and jdbcclient.jre8.jar

  monetdb-jdbc-3.0.jre8.jar is a new major release of the MonetDB JDBC driver.
  The MonetDB JDBC Driver is now compliant with the Java??? Database
  Connectivity (JDBC) 4.2 specification as defined in Java 8 and requires
  Java 8 runtime (profile compact2) as minimum version.

  Important: the MonetDB JDBC driver class name has also been changed in
  this release to: org.monetdb.jdbc.MonetDriver.  The old driver class
  (nl.cwi.monetdb.jdbc.MonetDriver) is also included in the jar file, but
  only to ease the transition for existing deployments. It will be removed
  in a future release of this JDBC driver. Please use the new driver
  class name if this is used in your configuration files or Java code.

  The JdbcClient program (jdbcclient.jre8.jar) has been extended with
  functionality to validate the integrity of the system tables (\vsci) or
  to validate the integrity of data in tables of a specific schema (\vsi xyz)
  based on defined declarative constraints (pkey, fkey, not null, etc.).
  This will be useful to find and report inconsistencies in your database.
  This functionality is a beta release. Please let us know if you
  encounter any issues running it. See below for more information.

  Besides a few bug fixes also performance has been improved in multiple areas.

* Wed Feb  3 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Added support for escaped wildcards (\% en \_) in String arguments of
  DatabaseMetaData methods which return a ResultSet, such as getTables(),
  getColumns(), etc.  When you do not want the characters % or _ to be
  interpreted as wildcards but as normal characters you can prefix them
  with a backslash (so \% and \_). Note: be sure all wildcards characters
  in the String argument are escaped else the search must still use a
  LIKE operator instead of an = comparison operator.
  This fixes: https://github.com/MonetDB/monetdb-java/issues/3

* Thu Jan 28 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected the ordering of the output of DatabaseMetaData methods
  getImportedKeys(), getExportedKeys() and getCrossReference(). In cases
  where a table would have multiple fks to the same external table,
  the output was not as expected. This has been corrected, so the columns
  now appear in the order as defined in the creation of the fks.

* Thu Jan 28 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- The dumping of table definitions from JdbcClient program has been
  improved. It now includes the ON UPDATE and ON DELETE rules for foreign
  key constraints. Also it no longer generates CREATE INDEX statements
  for foreign key constraints whose name is not system generated but
  user specified.

* Thu Jan 14 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved DatabaseMetaData.getTypeInfo() output for temporal data
  types: sec_interval, day_interval, month_interval, date, time, timetz,
  timestamp and timestamptz.

* Wed Jan  6 2021 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected output of resultset columns UPDATE_RULE and DELETE_RULE
  when calling DatabaseMetaData API methods getImportedKeys() or
  getExportedKeys() or getCrossReference(). These columns used to
  always return DatabaseMetaData.importedKeyNoAction but now they
  can also report the other values when set:
     DatabaseMetaData.importedKeyCascade
  or DatabaseMetaData.importedKeyRestrict
  or DatabaseMetaData.importedKeySetNull
  or DatabaseMetaData.importedKeySetDefault.

* Thu Nov 12 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Moved Java classes from packages starting with nl.cwi.monetdb.*
  to package org.monetdb.* This naming complies to the Java Package
  Naming convention as MonetDB's main website is www.monetdb.org.
  To prevent problems with existing Java programs and JDBC driver
  configurations we still support usage of the following classes:
   nl.cwi.monetdb.jdbc.MonetDriver
   nl.cwi.monetdb.jdbc.types.INET
   nl.cwi.monetdb.jdbc.types.URL
   nl.cwi.monetdb.mcl.net.MapiSocket
   nl.cwi.monetdb.client.JdbcClient
  They are implemented as simple wrappers of their org.monetdb.* equivalents.
  Note: These nl.cwi.monetdb.* classes are now marked as deprecated and may
  be removed in a future release. If you still use them in your Java code or
  configuration files, update them to use the new package names.

* Thu Oct 29 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Extended JdbcClient program with 3 new commands to quickly validate
  data integrity:
  \vsci          validate sql system catalog integrity
  \vsi <schema>  validate integrity of data in the given schema
  \vdbi          validate integrity of data in all user schemas in the database
  The current validations include:
  - Primary Key uniqueness
  - Primary Key column(s) being NOT NULL (currently only for \vsci)
  - Unique constraint uniqueness
  - Foreign Key referential integrity
  - Column NOT NULL constraint
  - Varchar(n) max length constraint
  - Idem for char(n), clob(n), blob(n), json(n) and url(n).
  It can be useful to run \vsci before and after an upgrade of MonetDB server.
  Use \vsi my_schema  to validate data in all tables of a specific schema.
  Use \vdbi  to validate integrity of data in all user schemas in
  the database. Note: this can take a while, depending on your number
  of user schemas, tables, columns and rows. Despite being tested on several
  internal dbs the functionality is still beta, so you can get false
  errors reported. If you encounter any let us know asap.

* Thu Oct  8 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved performance of ResultSetMetaData methods isAutoIncrement(),
  getPrecision() and getScale() significantly for columns of specific data
  types as in some cases no costly meta data query is executed anymore.

* Thu Oct  8 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- The connection properties  treat_clob_as_varchar  and  treat_blob_as_binary
  are now set to true by default within the JDBC driver.  This is done
  as it results by default in less memory usage, (much) faster response
  and better user experience for many generic JDBC applications (like
  SQuirreL SQL, DBeaver, etc) when fetching data from CLOB or BLOB result
  columns.  See release.txt for more information and how you can turn
  it off to get the old JDBC driver behavior if you require it.

* Wed Oct  7 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Added support for new Java 8 java.sql.Types: Types.TIME_WITH_TIMEZONE and
  Types.TIMESTAMP_WITH_TIMEZONE.

* Wed Sep 23 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Updated JDBC driver to comply with JDBC 4.2 interface now we compile
  for Java 8. This includes:
  - adding 8 methods to MonetCallableStatement
  - adding 2 methods to MonetDatabaseMetaData
  - adding 3 methods to MonetPreparedStatement
  - adding 4 methods to MonetResultSet
  - adding 8 methods to MonetStatement

* Wed Sep 23 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected MonetDatabaseMetaData.getTypeInfo()
  - The LITERAL_PREFIX column now includes the required casting name for
    types: clob, inet, json, url, uuid and blob.
  - The SEARCHABLE column now returns typePredBasic instead of typeSearchable
    for type: blob.
  - The AUTO_INCREMENT column now returns false for types: hugeint, decimal,
    oid and wrd.

* Thu Sep 10 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Removed support for deprecated MD5 encryption algorithm in MapiSocket.

* Wed Sep 9 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected Statement.executeBatch() method. It now implicitly clears the
  batch buffer, ready to accept new addBatch() calls without the need for
  an explicit clearBatch() call.
  See also https://github.com/MonetDB/MonetDB/issues/6953

* Wed Feb 19 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected the return value of getCatalogTerm() to "cat".

* Wed Feb 12 2020 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- As Java 7 is no longer supported we now compile for Java 8 as the
  minimum required JVM version (profile compact2).

* Thu Sep 26 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Compiled and released new jar files: monetdb-jdbc-2.29.jre7.jar,
  monetdb-mcl-1.18.jre7.jar and jdbcclient.jre7.jar
- Following issues are resolved with this new MonetDB JDBC driver release:
  - JDBC: Support for Connection.prepareCall()
    See https://github.com/MonetDB/MonetDB/issues/6402
    We implemented the java.sql.CallableStatement interface.
  - Jdbc connection hangs
    See https://github.com/MonetDB/MonetDB/issues/6571
  - Mix of long and short queries make JDBC-driver hang
    See https://github.com/MonetDB/MonetDB/issues/6693
  - Example SQLcopyinto.java does not work
    See https://github.com/MonetDB/MonetDB/issues/6646
  Also improvements are made in:
  - reducing the number of objects created (and thereby heap memory size)
  - reducing number of methods called
  - robustness, more checks on invalid parameter values
  - performance

* Wed Sep 25 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- The jar files are now named according to Java version compatibility.
  For example, the monetdb-jdbc-2.29.jre7.jar file should be used with
  Java 7 or higher.

* Wed Sep 18 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected method DatabaseMetaData.getBestRowIdentifier(). It used to
  return columns of both primary key and unique constraints. Now it only
  returns the columns of the primary key if it has one, else columns of
  a unique constraint.

* Wed Sep 11 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Optimized parse() method of TupleLineParser by creating less helper objects
  and replacing method calls by direct operations on variables.

* Wed Sep  4 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected JdbcClient program: the dumping of a view DDL was incorrect when
  the view creation statement was not starting with "create view ", such as
  when it was created using "create or replace view". It now shows the
  value as stored in sys.tables.query field, similar to mclient program.

* Thu Aug 22 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved JdbcClient program by including the schema prefix when dumping
  schema objects. It now behaves more similar to: mclient -D -N.
- Improved JdbcClient program. It now also dumps definitions of MERGE TABLE,
  REMOTE TABLE, REPLICA TABLE and STREAM TABLE when dumping (all) tables.

* Wed Aug 14 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved MonetDatabaseMetaData methods:
  - getNumericFunctions(): it now includes function: sys.alpha
  - getNumericFunctions(): it no longer lists functions: not_uniques and rotate_xor_hash
  - getStringFunctions(): it now includes functions: json.isarray, json.isobject,
      json.isvalid, sys.reverse which accept a string value as argument
  - getStringFunctions(): it no longer lists functions: copyfrom, get_value_for, next_value_for, restart.
  - getSystemFunctions(): it now includes system functions: get_value_for, hash,
      next_value_for, sys.columnsize, sys.debug, sys.hashsize, sys.heapsize,
      sys.imprintsize, sys.isauuid, sys.md5, sys.newurl, sys.password_hash, isaurl
  - getSystemFunctions(): it no longer lists function: getlimit.
  Also some functions require the prefix "sys." or "json." when used
  from another schema. This is now included in the names returned by
  methods getNumericFunctions(), getStringFunctions(), getSystemFunctions()
  and getTimeDateFunctions().

* Wed Jul 31 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected MonetDatabaseMetaData methods:
  - getNumericFunctions(): it now includes function: pi.
  - getSystemFunctions(): it no longer lists numeric functions: pi and rand.
  - supportsSchemasInIndexDefinitions(): changed from true to false
- Optimised MonetStatement memory resource usage by only creating an ArrayList
  and ReentrantLock object when the batch methods addBatch() or executeBatch()
  are called. In most Statement usages those methods are never called.
- Implemented method MonetClob.getAsciiStream().

* Thu Mar 21 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Added implementation of java.sql.CallableStatement interface. Some standard
  Java applications require this JDBC interface for executing SQL stored procedures.
  This implementation resolves request: https://github.com/MonetDB/MonetDB/issues/6402

* Thu Mar  7 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved MonetDatabaseMetaData methods:
  - getNumericFunctions(): it now includes functions: degrees, fuse, ms_round, ms_str, ms_trunc and radians.
  - getStringFunctions(): it now includes function: position.
  - supportsIntegrityEnhancementFacility() now returns false, as we do not enforce CHECK constraints yet.

* Thu Feb  7 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved MonetDatabaseMetaData methods:
  - getNumericFunctions(): it no longer lists aggregate functions: avg, prod and sum
  - getSystemFunctions(): it no longer lists timedate function: extract
  - getTimeDateFunctions(): it now also lists functions: date_trunc, epoch
- Corrected MonetDatabaseMetaData method getTypeInfo() for result column
  SEARCHABLE. It now returns DatabaseMetaData.typeSearchable for all
  string data types including 'inet','json','url','uuid' and 'blob'.

* Thu Sep 20 2018 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved example program SQLcopyinto.java and moved it to tests directory
  for automatic testing.

* Thu Jun 28 2018 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected return values of DatabaseMetaData methods
  allTablesAreSelectable() and allProceduresAreCallable().
  They used to return true but now return false.

* Wed May 23 2018 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new jars: monetdb-jdbc-2.28.jar, monetdb-mcl-1.17.jar
  and updated jdbcclient.jar

* Thu Apr 26 2018 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected and extended output of DatabaseMetaData methods
  getTimeDateFunctions() and getSystemFunctions().  The Date/Time functions
  (curdate, current_date, current_time, current_timestamp, curtime,
  local_timezone, localtime, localtimestamp) were returned by
  getSystemFunctions() but are now returned by getTimeDateFunctions().
  getTimeDateFunctions() now also lists functions: date_to_str, extract, now,
  str_to_date, str_to_time, str_to_timestamp, time_to_str and timestamp_to_str.
- Improved DatabaseMetaData methods getTablePrivileges() and
  getColumnPrivileges() by returning also any combination of privileges
  for the table or column in the PRIVILEGE result column. Previously only
  single privileges (SELECT or UPDATE or INSERT or DELETE or EXECUTE or
  GRANT) would be returned.

* Thu Apr 19 2018 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected method DatabaseMetaData.getFunctions() for result column
  FUNCTION_TYPE.  It used to return DatabaseMetaData.functionResultUnknown
  value for Analytic (functions.type 6) and Loader function (functions type 7).
  It now returns DatabaseMetaData.functionNoTable for Analytic functions and
  DatabaseMetaData.functionReturnsTable for Loader functions.
- DatabaseMetaData methods getTables(), getColumns(), getProcedures() and
  getFunctions() now return the comment in the REMARKS result column when a
  comment has been set for the table / view / column / procedure / function
  via the SQL command COMMENT ON <db-object type> <qname> IS 'comment-text'.

* Thu Dec 14 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Fixed a problem with retrieving Dates and Timestamps which contained a
  year value less than 1000. It would throw an SQLDataException with message:
   Could not convert value to a Date. Expected JDBC date escape format
   yyyy-[m]m-[d]d.
  See also: https://github.com/MonetDB/MonetDB/issues/6468

* Mon Oct 23 2017 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new jars: monetdb-jdbc-2.27.jar, monetdb-mcl-1.16.jar
  and updated jdbcclient.jar

* Thu Oct  5 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected method Connection.prepareCall(). It used to return null.
  Now it throws an SQLFeatureNotSupportedException to comply with the
  JDBC specification.

* Thu Sep 28 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Added possibility to let the JDBC driver return columnType value
  Types.VARCHAR instead of Types.CLOB in case the result column of a
  ResultSet or parameter in a PreparedStatement is of data type 'clob'.
  To enable this behavior provide it as JDBC connection URL property:
     treat_clob_as_varchar=true
  For example: jdbc:monetdb://localhost:50000/demo?treat_clob_as_varchar=true
  See also:
  https://www.monetdb.org/Documentation/Manuals/SQLreference/Programming/JDBC
  This custom clob mapping informs generic JDBC programs to fetch clob
  column values via method ResultSet.getString() instead of getClob()
  and Clob.getCharacterStream() and next fetching from the stream.
  As MonetDB server MAPI communication protocol does not support
  streaming of parts of a CLOB value, the current implementation is to
  send over the whole CLOB value as a string. Therefore there is no
  performance gain when fetching those Clob values via getClob() and
  getCharacterStream(). In fact it creates a lot of overhead (additional
  objects and method calls) and triples the amount of needed Java Heap memory
  for each Clob value!
  With this connection property set, you can reduce this overhead when
  working with clob column data from generic JDBC programs.

* Thu Sep  7 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Implemented PreparedStatement methods setNCharacterStream(int, Reader)
  and setNCharacterStream(int, Reader, long).

* Thu Aug 31 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected PreparedStatement methods setString(int, String)
  and setObject(int, Object, ...) in case the target parameter
  data type was json or inet or url or uuid.  See also
  https://github.com/MonetDB/MonetDB/issues/6382

* Thu Aug 24 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Implemented PreparedStatement method setURL(int, URL).
- Implemented PreparedStatement method setNString(int, String).
- The MonetDB JDBC driver code and jdbcclient program are now compiled
  without debug info and with optimise flag enabled.
  The new jar files are now some 20% smaller in size.

* Thu Aug 17 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Implemented ResultSet method getNCharacterStream().
- In class MonetClob implemented methods getCharacterStream()
  and getCharacterStream(long pos, long length).  Method
  getCharacterStream() is called by DBeaver to fetch the Clob value.
  It used to throw a SQLFeatureNotSupportedException with message:
   "Operation getCharacterStream() currently not supported". This caused
  DBeaver to log the exception and show NULL as the value on screen,
  which is incorrect.  This has been fixed.

* Fri Jul 28 2017 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new jars: monetdb-jdbc-2.26.jar and updated jdbcclient.jar

* Thu Jul 13 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected implementation of PreparedStatement method
   setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength)
  for the case the targetSqlType is Types.CLOB.
  See also: https://github.com/MonetDB/MonetDB/issues/6349

* Thu Mar 30 2017 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new jars: monetdb-jdbc-2.25.jar, monetdb-mcl-1.15.jar
  and updated jdbcclient.jar

* Thu Mar  9 2017 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected ResultSetMetaData methods getColumnLabel(int), getColomnName(int),
  getTableName(int) and getSchemaName(int) for names which contain special
  characters such as a space, a tab, a comma, a double quote, etc.
  See also: https://github.com/MonetDB/MonetDB/issues/6183

* Wed Dec 21 2016 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new jars: monetdb-jdbc-2.24.jar, monetdb-mcl-1.14.jar
  and updated jdbcclient.jar

* Thu Nov 17 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- The MapiSocket object now supports getting and setting the
  socket timeout, even before the TCP socket is created.  To set
  the socket timeout specify it in the JDBC URL, for example:
    jdbc:monetdb://localhost:50000/demo?so_timeout=8000
  This enables the timeout and sets it to 8000 milliseconds (= 8 seconds).
  By default the timeout is not set, so wait infinitely.

* Thu Nov 10 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Implemented Connection methods: getClientInfo(name) and getClientInfo().
  They used to return null and empty Properties object.
  Corrected implementation of Connection methods: setClientInfo(name, value)
  and setClientInfo(properties). They are now processed as expected.
  Corrected implementation of Connection.setHoldability(holdability). It now
  throws an SQLFeatureNotSupportedException when holdability is not
  ResultSet.HOLD_CURSORS_OVER_COMMIT (which is the only supported holdability).

* Thu Oct 13 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected implementation of java.sql.Wrapper methods isWrapperFor()
  and unwrap().  They now properly return expected results instead of
  always return false or throw an SQLException.

* Thu Oct  6 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected return values of DatabaseMetaData methods nullsAreSortedHigh(),
  nullsAreSortedLow(), getMaxCursorNameLength(), getMaxProcedureNameLength(),
  getMaxStatementLength() and getMaxUserNameLength().
  Improved return values of DatabaseMetaData methods getMaxBinaryLiteralLength(),
  getMaxCharLiteralLength() and getMaxColumnsInTable().
- Implemented Statement methods: getQueryTimeout() and setQueryTimeout(int
  seconds).  getQueryTimeout() used to always return 0, now it returns the
  query timeout retrieved from the server.  setQueryTimeout(int seconds)
  used to always throw SQLException: query time outs not supported.
  Now it sets the query timeout for the current connection/session on
  the server.

* Thu Sep 29 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Corrected ResultSet methods: getByte(), getBigDecimal(), getShort(),
  getInt(), getLong(), getFloat() and getDouble() in case the conversion
  to the native type failed due to a Number Format conversion error.
  It used to silently ignore the conversion error and return 0 instead,
  which is not correct.  Now it throws an SQLException with message
  "Could not convert value to a number." and SQLstate "22003" meaning:
  Numeric value out of range.

* Thu Sep 22 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved JdbcClient program when doing dump of table definition.  It now
  outputs CREATE TABLE definition more similar to mclient program.

* Thu Sep 15 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved performance of following JDBC ResultSet and ResultSetMetaData
  methods:
  - ResultSet.getBoolean(column)
  - ResultSet.getBinaryStream(column)
  - ResultSet.getBytes(column)
  - ResultSet.getObject(column)
  - ResultSet.getObject(column, map)
  - ResultSet.getDate(column)
  - ResultSet.getTime(column)
  - ResultSet.getTimestamp(column)
  - ResultSet.getDate(column, calendar)
  - ResultSet.getTime(column, calendar)
  - ResultSet.getTimestamp(column, calendar)
  - ResultSetMetaData.getColumnClassName(column)
  - ResultSetMetaData.getColumnType(column)
  - ResultSetMetaData.isCaseSensitive(column)
  - ResultSetMetaData.isSigned(column)
  - ResultSetMetaData.getPrecision(column)

* Thu Sep  8 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved JdbcClient program by fixing some resource leaks.
- Extended JdbcClient program by showing elapsed time information for each
  query or command when started in interactive mode (no -f was used at startup).

* Thu Sep  1 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved fetching and output speed of JdbcClient program for query results.

* Thu Aug 11 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
- Improved performance of method ResultSet.getObject(column_ID) significantly.

* Wed Jul 13 2016 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new JDBC driver jar: monetdb-jdbc-2.23.jar

* Thu Jul  7 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.7-20160713
- Corrected PROCEDURE_TYPE output value of method DatabaseMetaData.getProcedures().
  It used to return procedureReturnsResult. Now it returns procedureNoResult.
  Corrected ORDINAL_POSITION output value of method DatabaseMetaData.getProcedureColumns().
  It used to start with 0, but as procedures do not return a result value it now
  starts with 1 for all the procedure arguments, as defined by the JDBC API.
- Improved output of method DatabaseMetaData.getProcedures(). The REMARKS
  column now contains the procedure definition as stored in sys.functions.func.
  The SPECIFIC_NAME column now contains the procedure unique identifier as
  stored in sys.functions.id. This allows the caller to retrieve the specific
  overloaded procedure which has the same name, but different arguments.
  Also improved output of method DatabaseMetaData.getProcedureColumns().
  The SPECIFIC_NAME column now contains the procedure unique identifier as
  stored in sys.functions.id. This allows the caller to retrieve the proper
  arguments of the specific overloaded procedure by matching the SPECIFIC_NAME
  value.
- Improved output of method DatabaseMetaData.getFunctions(). The REMARKS
  column now contains the function definition as stored in sys.functions.func.
  The SPECIFIC_NAME column now contains the function unique identifier as
  stored in sys.functions.id. This allows the caller to retrieve the specific
  overloaded function which has the same name, but different arguments.
  Also improved output of method DatabaseMetaData.getFunctionColumns().
  The SPECIFIC_NAME column now contains the function unique identifier as
  stored in sys.functions.id. This allows the caller to retrieve the proper
  arguments of the specific overloaded function by matching the SPECIFIC_NAME
  value.

* Fri Jun 10 2016 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new JDBC driver jar: monetdb-jdbc-2.21.jar

* Thu May 26 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Fixed problem in DatabaseMetaData.getUDTs() when it was called with
  types parameter filled.  It used to throw SQException with message:
  SELECT: identifier 'DATA_TYPE' unknown. Now it returns the UDTs which
  match the provided array of data types.

* Thu May 19 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Implemented MonetDatabaseMetaData.supportsConvert() and
  MonetDatabaseMetaData.supportsConvert(int fromType, int toType) methods.
  It used to always return false. Now it returns true for the supported conversions.
  This fixes Bug 3460.

* Thu May 12 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Improved JdbcClient program when presenting query data to console.
  It used to send an SQL catalog query for each query result column
  which slowed down the interactive response considerably.
  These additional SQL catalog queries have been eliminated.

* Thu May 12 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Corrected MonetResultSet.getObject(String columnName). It no longer
  throws a NullPointerException in cases where internally a
  MonetVirtualResultSet is used.

* Sun May  8 2016 Jennie Zhang <y.zhang@cwi.nl> - 11.23.1-20160601
- Fixed Connection.isValid(): this method should never attempt to
  close the connection, even if an error has occurred.

* Sun May  8 2016 Jennie Zhang <y.zhang@cwi.nl> - 11.23.1-20160601
- ResultSet.setFetchSize(): added a dummy implementation to get rid
  of the SQLFeatureNotSupportedException. In MonetDB, it does not
  make sense to set the fetch size of a result set. If one really
  wants to set the fetch size, one should use Statement.setFetchSize()
  instead.

* Thu Apr 21 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Fixed resource leak in ResultSetMetaData. It created and cached a ResultSet
  object for each column but never closed the ResultSet objects.

* Thu Mar 31 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Corrected DatabaseMetaData methods which accept a catalog filter argument.
  Those methods will now filter the results on the specified catalog name,
  whereas previously the catalog filter argument was ignored.
- Corrected output of column KEY_SEQ of DatabaseMetaData methods:
  getPrimaryKeys(), getImportedKeys(), getExportedKeys() and
  getCrossReference(). It now starts at 1 instead of 0 previously.

* Thu Mar 24 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Corrected DatabaseMetaData.getSchemas() by returning 2 instead of 3 columns.
- Improved DatabaseMetaData.getColumns() by returning two additional
  columns: IS_AUTOINCREMENT and IS_GENERATEDCOLUMN.

* Thu Mar 17 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Improved DatabaseMetaData.getTypeInfo(). It now returns better information
  on LITERAL_PREFIX, LITERAL_SUFFIX, CREATE_PARAMS, CASE_SENSITIVE,
  FIXED_PREC_SCALE and MAXIMUM_SCALE for some data types. Also the returned rows
  are now ordered by DATA_TYPE, TYPE_NAME, PRECISION as required by the specs.
  Also corrected output column names "searchable" into "SEARCHABLE" and
  "MAXIMUM SCALE" into "MAXIMUM_SCALE" to match the JDBC specification.
- Corrected DatabaseMetaData.getPseudoColumns(). It used to return 12 empty rows.
  Now it returns no rows as MonetDB does not have pseudo columns.

* Thu Mar  3 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Implemented method DatabaseMetaData.getClientProperties(). It used to always
  return a resultset with 4 completely empty rows.  It now returns a
  resultset with the possible connection properties.
- Implemented method DatabaseMetaData.getUDTs(). It used to return an empty
  resultset. Now it returns the User Defined Types such as inet, json, url and uuid.

* Thu Feb 18 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Corrected the returned table types in DatabaseMetaData.getTableTypes().
  It now returns all 10 table types (as stored in sys.table_types) instead
  of the previously 8 hardcoded table types.
  For old MonetDB servers which do not have the sys.table_types table,
  the old behavior is retained.

* Thu Feb 11 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Implemented methods DatabaseMetadata.getProcedures() and
  DatabaseMetadata.getProcedureColumns(). They used to return an empty resultset.
  Now they return the expected Procedures and ProcedureColumns.
  Also getProcedureColumns() now returns a resultset with all 20 columns
  instead of 13 columns previously.

* Thu Feb  4 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Method getFunctionColumns() in DatabaseMetadata used to throw an
  SQLException:  getFunctionColumns(String, String, String, String) is
  not implemented.
  This method is now implemented and returns a resultset.

* Thu Jan 28 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Method getFunctions() in DatabaseMetadata used to throw an SQLException:
   SELECT: no such column 'functions.sql'
  This has been corrected. It now returns a resultset as requested.
- The resultsets of DatabaseMetadata methods now no longer return a
  value for the *_CAT columns as MonetDB does not support Catalogs.

* Thu Jan  7 2016 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.23.1-20160601
- Fixed a memory leak in MonetDatabaseMetaData.java for a static cache
  which kept references to closed Connection objects.

* Tue Jan  5 2016 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new JDBC driver jar: monetdb-jdbc-2.19.jar

* Fri Oct 30 2015 Sjoerd Mullender <sjoerd@acm.org>
- Compiled and released new jars: monetdb-jdbc-2.18.jar, monetdb-mcl-1.13.jar
  and updated jdbcclient.jar

* Thu Aug  6 2015 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - 11.21.1-20150807
- Improved JDBC driver to not throw NullPointerException anymore
  when calling isNullable() or getPrecision() or getScale() or
  getColumnDisplaySize() or getSchemaName() or getTableName() or
  getColumnClassName() on a ResultSetMetaData object.

* Thu Jul 16 2015 Sjoerd Mullender <sjoerd@acm.org> - 11.21.1-20150807
- We now compile the Java classes using the latest Java 1.8 version, and
  we tell it to compile for Java 1.7.

* Mon Oct  7 2013 Sjoerd Mullender <sjoerd@acm.org> - 11.15.17-20131008
- Rearranged order of returned columns of certain metadata functions to
  comply with the JDBC documentation.  See bug 3356.

* Sun Jun  9 2013 Fabian Groffen <fabian@monetdb.org> - 11.15.9-20130619
- Further improved setBigDecimal() method, based on patch by Ben Reilly
  in bug #3290

* Thu May 23 2013 Fabian Groffen <fabian@monetdb.org> - 11.15.9-20130619
- Fixed bug where PreparedStatement.setBigDecimal() wouldn't format its
  input well enough for the server causing odd errors.
- Allow PreparedStatement.setXXX() methods to be called with null
  arguments, bug #3288

* Thu Apr 11 2013 Sjoerd Mullender <sjoerd@acm.org> - 11.15.5-20130412
- The pre-compiled .jar files are now created using Java 7 instead of
  Java 6.

* Sat Dec  1 2012 Fabian Groffen <fabian@monetdb.org> - 11.15.1-20130212
- merocontrol was changed to return server URIs, and lastStop time.
  Connections and dbpath were removed.
- Mapi protocol v8 support was removed from MapiSocket.  Protocol
  v8 has not been used by the servers any more since Apr2012 release

* Fri Nov 23 2012 Fabian Groffen <fabian@monetdb.org> - 11.13.7-20121212
- Implemented type map support of Connection to allow custom mapping
  of UDTs to Java classes.  By default the INET and URL UDTs are
  now mapped to nl.cwi.monetdb.jdbc.types.{INET,URL}.  Most notably,
  ResultSet.getObject() and PreparedStatement.setObject() deal with the
  type map.

* Thu Nov 22 2012 Fabian Groffen <fabian@monetdb.org> - 11.13.7-20121212
- Fixed a problem in PreparedStatement where the prepared statement's
  ResultSetMetaData (on its columns to be produced) incorrectly threw
  exceptions about non existing columns.  Bug #3192

* Wed Oct 10 2012 Fabian Groffen <fabian@cwi.nl> - 11.13.3-20121016
- Fixed problem with PreparedStatements and setXXX() methods using column
  numbers instead of names, bug #3158

* Tue Aug 14 2012 Fabian Groffen <fabian@cwi.nl> - 11.11.9-20120911
- Fixed a bug where DatabaseMetaData.getURL() did return null:0 for
  hostname:port.

* Fri Jul 20 2012 Fabian Groffen <fabian@cwi.nl> - 11.11.7-20120813
- Fixed adaptive cache size used when retrieving results, not to cause
  divide by zero errors when memory gets short, bug #3119.

* Fri Mar  2 2012 Wouter Alink <wouter@spinque.com> - 11.9.1-20120418
- Password reading by JdbcClient no longer results in strange artifacts
- JdbcClient now returns exit code 1 in case of failures

* Tue Feb 28 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.9-20120312
- Implemented missing Number types support in
  PreparedStatement.setObject()

* Mon Feb 20 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.7-20120224
- Fixed bug in DatabaseMetaData.getSchemas() method that caused an SQL
  error when called with catalog and schema argument.

* Tue Feb 14 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.7-20120224
- Resolved a bug where JDBC and Control connections could terminate
  abruptly with 'Connection closed' messages

* Mon Jan  2 2012 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- Implemented getMetaData() method of PreparedStatement.

* Tue Dec 27 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- Fixed an AssertionError for special results from e.g. EXPLAIN queries.

* Wed Dec 21 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- Fixed overflow error when batching large statements, bug #2952

* Tue Dec 20 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- Resolved a concurrency problem where ResultSet's date-related getters
  could cause odd stack traces when used by multiple threads at the
  same time, bug #2950.

* Mon Dec 19 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- JDBC now implements JDBCv4.1 which makes it possible to be built with
  Java 7 and up.  JDBCv4.1 is a maintenance release of JDBCv4, and hence
  can be compiled with Java 6, although the added methods obviously are
  not part of the java.sql interfaces.

* Sun Dec 11 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- SQLExceptions thrown now carry a SQLSTATE.  Until the server starts
  sending correct SQLSTATEs for all errors, server originated errors
  without SQLSTATE are considered generic data exceptions (22000).

* Sat Dec 10 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- Fixed a bug where closing ResultSets and PreparedStatements could lead
  to errors on concurrent running queries using the same Connection due
  to a race condition.

* Thu Dec  8 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- Changed version scheme of JDBC driver and MCL jar to be more standard,
  from monetdb-X.Y-<thing>.jar to monetdb-<thing>-X.Y.jar, bug #2943

* Fri Oct 14 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- The embedded monet instance capability of MonetConnection was removed.
- Bump JDBC version to 2.0 (Liberica).  JDBC now implements JDBCv4 which
  makes it possible to be built with Java 6 and up.  Java 5 and before
  are no longer supported, and can use the 1.x releases of the driver.

* Thu Sep  1 2011 Fabian Groffen <fabian@cwi.nl> - 11.7.1-20120111
- INTERVAL columns are now treated as decimals, since they can have
  sub-second precision.

* Thu Jun 30 2011 Fabian Groffen <fabian@cwi.nl> - 11.5.1-20110907
- Add so_timeout Driver property to specify a SO_TIMEOUT value for the
  socket in use to the database.  Setting this property to a value in
  milliseconds defines the timeout for read calls, which may 'unlock'
  the driver if the server hangs, bug #2828

* Wed May 25 2011 Fabian Groffen <fabian@cwi.nl> - 11.5.1-20110907
- Added a naive implementation for PreparedStatement.setCharacterStream

* Mon Apr 11 2011 Fabian Groffen <fabian@cwi.nl> - 11.5.1-20110907
- The obsolete Java-based implementation for PreparedStatements (formerly
  activated using the java_prepared_statements property) has been dropped

* Fri Jul  8 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.5-20110720
- Return false from Statement.getMoreResults() instead of a
  NullPointerException when no query has been performed on the Statement
  yet, bug #2833

* Mon Jun  6 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.5-20110720
- Fixed read-only interpretation.  Connection.isReadOnly now always
  returns false, setReadOnly now generates a warning when called with
  true.  Partly from bug #2818
- Allow readonly to be set when autocommit is disabled as well.  Bug #2818

* Wed May 11 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.3-20110517
- Insertion via PreparedStatement and retrieval via ResultSet of timestamp
  and time fields with and without timezones was improved to better
  respect timezones, as partly indicated in bug #2781.

* Tue Apr  5 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.1-20110414
- clarify exception messages for unsupported methods

* Mon Feb  7 2011 Fabian Groffen <fabian@cwi.nl> - 11.3.1-20110414
- Removed XQuery related XRPC wrapper and XML:DB code, removed support
  for language=xquery and language=mil from JDBC.

* Wed Dec 15 2010 Fabian Groffen <fabian@cwi.nl> - 11.1.1-20110317
- PreparedStatements now free the server-side resources attached to them
  when closed.  This implements bug #2720

* Tue Nov  9 2010 Fabian Groffen <fabian@cwi.nl> - 1.40.1-20101110
- Fix SQL syntax of inserting BLOB code, using setBytes()
- Added property 'treat_blob_as_binary' to simulate BINARY types based on
  BLOBs for applications, (e.g. Hibernate-based) that rely on BINARY's
  byte array mapping
- Added code to handle BINARY types
- Fixed implementation of getBytes to match the specifications
- Implemented getBinaryStream according to the specifications

* Mon Nov  8 2010 Fabian Groffen <fabian@cwi.nl> - 1.40.1-20101109
- Java 1.6's subSequence() bug has changed into a slice() bug since
  1.6.0_22.  Revert workaround for subSequence breakage, since it breaks
  operating with the latest Java 1.6.

* Fri Oct 22 2010 Fabian Groffen <fabian@cwi.nl> - 1.40.1-20101029
- Fix for bug #2703, allow to have multiple metadata ResultSets open at
  the same time

* Wed Aug 11 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823
- Implemented ResultSet's getCharacterStream methods, since Hibernate seems to
  call this method for retrieving CLOB columns that we now do support.

* Fri Aug 06 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823
- Fix implementation of setBytes method of PreparedStatement, such that bytes
  are converted to MonetDB/SQL's BLOB notation.

* Wed Jul 21 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823
- merocontrol Java library requires Java 2 Platform 1.5 and up, due to enum
  and boxing/unboxing. Bug #2627

* Tue Jul 20 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823
- Implement missing Blob support (readonly), since getObject will blindly
  return a BLOB instance as String, which is causing applications to wrongly
  believe a BLOB instance is a string.

* Fri Jul 16 2010 Fabian Groffen <fabian@cwi.nl> - 1.38.5-20100823
- Fix problem when using the MAL language.  Any statement would return
  an error with a typo that was not typed in by the user, such as
  ioo.printf when io.printf was typed.

* Fri Apr 16 2010 Fabian Groffen <fabian@cwi.nl> - Jun2010-SP1
- Enable the merovingian control library for default distribution as it
  has been in use for some time without problems now.

* Wed Mar 31 2010 Stefan Manegold <manegold@cwi.nl> - Jun2010-SP1
- Made compilation of "testing" (and "java") independent of MonetDB.
  This is mainly for Windows, but also on other systems, "testing" can now be
  built independently of (and hence before) "MonetDB".
  Files that mimic configure functionality on Windows were moved from
  "MonetDB" to "buildtools"; hence, this affects all packages on Windows,
  requiring a complete rebuild from scratch on Windows.
  getopt() support in testing has changed; hence, (most probably) requiring a
  rebuild from scratch of testing on other systems.

* Wed Mar 31 2010 Fabian Groffen <fabian@cwi.nl> - Feb2010-SP2
- Do not to throw an SQLException, but generate a warning and try to
  perform as much as requested in an optimistic manner, as not to break
  clients that rely on the called method, but don't really use its
  functionality (such as high-level generic programs that call any
  driver and try to put it in a mode that it does what they expect).
  The following functions no longer throw an SQLException but now
  generate a warning and perform actions as far as possible:
  - Statement.execute(sql, columnIndexes/columnNames)
  - Statement.executeUpdate(sql, columnIndexes/columnNames)
  - Statement.getMaxFieldSize()
  - Statement.setCursorName(name)
  - Statement.setEscapeProcessing(enable)
  - Statement.setMaxFieldSize(max)
  - Statement.setQueryTimeout(seconds)
  - PreparedStatement.getMetaData()
  - PreparedStatement.setNull(paramIndex, sqlType, typeName)

* Wed Mar 24 2010 Stefan Manegold <manegold@cwi.nl> - Jun2010-SP1
- Implemented build directory support for Windows,
  i.e., like on Unix/Linux also on Windows we can now build in a separate
  build directory as alternative to ...\<package>\NT, and thus keep the
  latter clean from files generated during the build.
  On Windows, the build directory must be a sibling of ...\<package>\NT .

* Tue Mar 09 2010 Fabian Groffen <fabian@cwi.nl> - Feb2010-SP1
- Set JAVA_HOME to the configure derived value, such that ant will use
  the javac compiler as found by configure, and not the one it was built
  with itself.  This solves the problem that the JDBC driver still fails
  to compile on e.g. Fedora systems even though configure
  --with-java=/path/to/sun/jdk-5 was given, because ant still uses
  gjc/icedtea by itself.

* Mon Oct 12 2009 Wouter Alink <w.alink@cwi.nl> - Aug2009-SP2
- Bump MCL version to 1.6 for fix.

* Fri Oct 09 2009 Fabian Groffen <fabian@cwi.nl> - Feb2010
- Bump Java source version to 1.5.  Java 1.5 is the current J2EE, and code
  from nl.cwi.monetdb.merovingian relies on Java 1.5 features.  It seems
  like a good time to deprecate 1.4 now 1.6 is about to become the new
  J2EE version.

* Fri Oct 09 2009 Wouter Alink <w.alink@cwi.nl> - Aug2009-SP2
- applied workaround for bug in Sun JRE 1.6.

* Thu Oct 01 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP2
- Bump JDBC version to 1.14 for fix.

* Thu Oct 01 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP2
- Fix warning messages to disappear when a connection to merovingian is
  made.

* Sun Aug 23 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP1
- Bump JDBC version to 1.13 for fix.

* Sun Aug 23 2009 Fabian Groffen <fabian@cwi.nl> - Aug2009-SP1
- Avoid "ResultSet is closed" messages by disabling the use of
  finalizers, bug #2844202

* Thu Mar 26 2009 Fabian Groffen <fabian@cwi.nl> - Feb2010
- Fix configure handling for --enable-{jdbc,xrpc}, by Yue Sheng on
  Monetdb-developers ML