Jackcess Changelog

What's new in Jackcess 4.0.5

Jan 27, 2023
  • Add option to DatabaseBuilder for ignoring broken system catalog indexes. This is a workaround to allow jackcess to read tables from the database even if the index is non-functional

New in Jackcess 4.0.4 (Oct 31, 2022)

  • Fix edge case which can cause table to be considered corrupt
  • Update parent pom to fix release process

New in Jackcess 4.0.2 (Oct 3, 2022)

  • Add Table methods to get the creation and last modified dates.
  • Add support for linked odbc tables. TableMetaData provides access to connection string and local TableDefinition if available

New in Jackcess 4.0.1 (Jul 15, 2021)

  • Ignore trailing spaces when creating text index entries.
  • Add basic support for access 2019+ dbs.
  • Add support for extended date/time type in access 2019+ dbs.

New in Jackcess 4.0.0 (Apr 1, 2021)

  • Add Automatic-Module-Name in order to make Jackcess safe to use in the module path in Java9+ environments.
  • Make a few classes and constants public in order to facilitate use in different packages.
  • Alter access to java.sql classes so that usage is dependent on whether or not the module is loaded in Java 9+ environments. Tweak a few methods to no longer throw SQLException.

New in Jackcess 3.5.1 (Sep 11, 2020)

  • Add more static utility methods to DatabaseBuilder to enable more succinct object construction code using static imports

New in Jackcess 3.5.0 (Jul 31, 2020)

  • Add support for Access 97 general collation order, enabling indexes to be used with Access 97 dbs
  • Add Stream support to all interfaces which are Iterable
  • Enabled expression evaluation by default
  • Change the default DateTimeType to LOCAL_DATE_TIME
  • Add support for Predicate value patterns in cursor find methods. Add PatternColumnPredicate for creating Predicate instances which can match values using various pattern syntaxes

New in Jackcess 3.0.1 (Apr 14, 2019)

  • Add ColumnFormatter utility which can apply Column "Format" property for display of column values
  • Add Database.newTableMetaDataIterable() which enables iterating through table names without loading the entire collection into memory at once

New in Jackcess 3.0.0 (Feb 10, 2019)

  • Jackcess now requires a Java 8+ runtime. As part of this update, all dependencies have been updated to their latest versions - Add support for Java 8 Temporal types. Date/time fields will now accept as input most Temporal types (e.g. LocalDate, LocalTime, LocalDateTime, etc). Additionally, date/time fields can optionally be changed to output LocalDateTime instead of Date. This behavior is configurable on a per-Database basis by setting the DateTimeType for the database. All Date based APIs now have a parallel LocalDateTime API. Note that only one of those will work depending on how the Database is configured. The legacy Date support will be the default initially, but is deprecated and may be removed in the future - Add support for Path. Existing File based APIs now have parallel versions which utilize Path - The Apache commons-lang dependency has been replaced with commons-lang3

New in Jackcess 2.2.3 (Feb 6, 2019)

  • Fix parsing of escaped double quotes in expressions
  • Use column label from ResultSetMetaData when importing

New in Jackcess 2.2.2 (Jan 6, 2019)

  • Fix length in units calculation for Access 97 text fields

New in Jackcess 2.2.1 (Dec 23, 2018)

  • Implement the majority of the missing standard functions: FormatCurrency, FormatDateTime, FormatNumber, FormatPercent, Val, DateAdd, DateDiff, DatePart, MonthName, WeekdayName, DDB, IPmt, PPmt, Rate, SLN, SYD, Format, Replace, StrConv. (Note that the internal API for the expr package has changed in an incompatible way. However, since the API is still experimental, this was deemed acceptable for a minor version.). Note that many of the financial functions were copied and adapated from the Apache POI and UCanAccess projects (which are both under the Apache License 2.0) - Implement more type coercion methods for expressions. Add support for hex/oct integer strings. Add support for number strings with commas. Add support for coercing numeric String to a date/time value. Add support for date/time values with implicit (current) year - Ignore column validators for read-only dbs. This will avoid irrelevant failures when reading databases which have invalid column properties

New in Jackcess 2.2.0 (Sep 10, 2018)

  • Implement support for optional expression evaluation. When enabled, expressions will be evaluated for default values, calculated fields, field validators, and record validators.
  • Default values will now be respected when expression evaluation is enabled (currently disabled by default).

New in Jackcess 2.1.12 (Jun 26, 2018)

  • Add some additional property keys and relevant enums for values
  • Create new usage map correctly when adding an index to an existing table

New in Jackcess 2.1.11 (Mar 6, 2018)

  • Expose the "ddl" attribute on properties. Set the attribute appropriately for known builtin properties.
  • Set ddl flag even if property type is explicitly provided.

New in Jackcess 2.1.10 (Jan 19, 2018)

  • Add full support for access 2016 databases including the new "Large Number" (aka Bigint) data type

New in Jackcess 2.1.9 (Oct 10, 2017)

  • Handle more advanced query join constructs
  • Fix writing of property maps without any properties

New in Jackcess 2.1.8 (Oct 10, 2017)

  • Fix parsing of certain internal-use queries (such as those used as the data source for the fields in a form)
  • Add option to specify relationship name, thanks to Gord Thompson

New in Jackcess 2.1.7 (Oct 10, 2017)

  • Implement support for partial index lookups. Efficient IndexCursor lookups can now be done with multi-column indexes using only some of the columns in the index
  • Cover the GENERIC_JET4 format in unit tests, thanks to Gord Thompson
  • Allow inserting negative auto number fields, thanks to Gord Thompson
  • Add CustomLinkResolver which facilitates loading linked tables from files which are not access databases

New in Jackcess 2.1.6 (Apr 12, 2017)

  • When opening a database for a format which is read-only, automatically open the channel as read-only (instead of throwing an exception if readOnly is false)
  • Add support for global usage maps which are reference type maps

New in Jackcess 2.1.0 (Apr 18, 2015)

  • OpenHMS relicenses to Apache License, 2.0

New in Jackcess 2.0.9 (Mar 25, 2015)

  • Make ColumnBuilder.setMaxLength do the right thing regardless of column type
  • Handle input String boolean values
  • Added Database.isLinkedTable method to identify if the given Table is linked to the database
  • Added TableIterableBuilder for advanced Table iteration. This allows selectively including different table types when iterating the tables in a Database
  • Lowered the log level for certain warnings related to system tables which do not generally affect jackcess functionality
  • Added contextual information to many errors and warnings
  • Implement support for indexes on BINARY fields
  • Remove useless warning for fixed length columns lengths with longer length. Cleanup

New in Jackcess 2.0.8 (Dec 29, 2014)

  • Add newer sql type to access type mappings if the jvm supports them.
  • Fix table name quoting for append and make table queries.
  • Don't double quote already quoted identifiers.
  • Better validation of identifier names (disallow invalid characters according to Access naming rules).

New in Jackcess 2.0.7 (Nov 24, 2014)

  • Unicode compression support was not correct for all possibly compressed characters.
  • Currency columns will now return an accurate scale and precision.

New in Jackcess 2.0.6 (Oct 6, 2014)

  • IndexCursor can early exit when searching based on indexed values.
  • Fix regression where empty memo values are returned as null.

New in Jackcess 2.0.5 (Sep 18, 2014)

  • Add Cursor.findRow(RowId) for moving to a specific Table row using only the RowId.
  • Add support for reading and writing calculated column values. Jackcess will not evaluate the actual expressions, but the column values can be written directly. Fixes 105.
  • Add the ability to set properties in DatabaseBuilder, TableBuilder, and ColumnBuilder.
  • Add the ability to create tables with calculated fields.

New in Jackcess 2.0.4 (Apr 7, 2014)

  • Add ColumnValidator interface which allows column values to be easily manipulated/validated as they are written into the database.

New in Jackcess 2.0.3 (Jan 31, 2014)

  • Fix NullPointerException in RowImpl.toString() when value is null

New in Jackcess 2.0.2 (Dec 3, 2013)

  • Rework row add/update so that constraint violations do not leave behind partially written rows.
  • Add ConstraintViolationException to distinguish exceptions due to violating database constraints from other random errors.

New in Jackcess 2.0.1 (Oct 28, 2013)

  • Add initial support for creating/parsing ole content
  • Ignore invalid column usage map definitions
  • Make reading long value columns more lenient (MEMO/OLE)
  • Add support for modifying PropertyMaps

New in Jackcess 2.0.0 (Oct 28, 2013)

  • Brand new API! This release is not backwards compatible with 1.x releases

New in Jackcess 1.2.14.2 (Aug 26, 2013)

  • Fix reading of Properties with multiple value blocks

New in Jackcess 1.2.14 (Jul 25, 2013)

  • Implement handling of usagemaps for long value (MEMO/OLE) columns.

New in Jackcess 1.2.13 (Jun 19, 2013)

  • Fix partial page updates when using CodecHandlers which can only do full page encoding
  • Add more methods to Database for retrieving Relationships
  • Implement attachment decoding

New in Jackcess 1.2.12 (May 13, 2013)

  • Do not unicode compress strings which are longer than 1024 chars

New in Jackcess 1.2.10 (Feb 19, 2013)

  • Add optional support for enforcing foreign-key constraints/cascading. This is disabled by default (for backwards compatibility), but can be controlled globally via a system property and/or on a per-Database basis using setEnforceForeignKeys() method.
  • Add info to the Column to support MEMO columns which are HYPERLINKS.

New in Jackcess 1.2.9 (Oct 17, 2012)

  • Add some more functionality to Joiner to facilitate integrity enforcement (hasRows and deleteRows).
  • Added DatabaseBuilder for more convenient and flexible Database open/create.
  • Added the MemFileChannel (and associated support in DatabaseBuilder) to enable working with Database files completely in memory.
  • Fix some more edge cases in date/time conversions.

New in Jackcess 1.2.7 (Apr 3, 2012)

  • Add initial support for linked tables. Linked tables will now be loaded by the normal Database.getTable method. Linked tables can be created using the new Database.createLinkedTable method. Linked table resolution can be customized per Database by supplying a custom LinkResolver. Fixes 3479560. Rename and refactor the Cursor find methods to improve usability.

New in Jackcess 1.2.5 (Oct 20, 2011)

  • Try multiple classloaders when loading resources as streams
  • Add the Joiner utility and some new methods to IndexCursor to make it easier to join tables using pre-defined (index backed) relationships
  • Enable basic handling of unsupported data types as binary content.
  • Add methods to approximate table size.
  • Add Database.getSystemTableNames to enable retrieving the list of system/hidden tables.
  • Fix issue with reading Access 97 database with large number of fields.

New in Jackcess 1.2.2 (Dec 1, 2010)

  • Add support for specifying a quote character on import from flat files.
  • Add support for reading database password.
  • Add support for plugging in implementations of various page
  • encoding/decoding algorithms. See the Jackcess Encrypt project
  • http://jackcessencrypt.sourceforge.net/) for a CodecProvider implementation
  • which supports a few of the Access encodings. Fixes 3065010.
  • Implement some tweaks which allow jackcess to be used on the Android
  • platform.
  • Allow output column order in tables to be configured. Fixes 3097387.
  • Add support for custom column value matching when finding rows using a
  • Cursor. Fixes 3105829.
  • Ignore usagemap inconsistencies in certain (safe) situations.

New in Jackcess 1.2.1 (Aug 4, 2010)

  • Add ExportUtil and associated utilities for exporting tables to flat files (thanks to F. Gerbig). Fixes 3005272.
  • Fix some places where table/columns names were not being handled case-insensitively. Fixes 3011084.
  • Make Database.escapeIdentifier public; add methods to TableBuilder and ColumnBuilder to optionally escape names. Fixes 3029500.
  • Add support for overriding charset and tiemzone used when reading/writing database. Fixes 2997751.
  • Add support for reading Access 97 (jet format 3) databases (thanks to F. Gerbig). Fixes 3003375