Slick 2.1.0

August 04 2014
by Christopher Vogt

We are happy to announce the release of Slick 2.1.0. Please see http://slick.typesafe.com/doc/2.1.0/ for documentation including an upgrade guide from 2.0.x. The artifacts are available on Maven Central, as usual. You can find the source code here: https://github.com/slick/slick/tree/2.1.0.

Features and fixes

This is a major feature release.

  • Official support for Scala 2.11 and 2.10, cross-built from the same codebase.
  • New documentation in the user manual, including chapter for migrating from ORM or SQL to Slick.
  • Improved and more comprehensive API documentation.
  • Insert-or-update support which makes use of native databases features where possible, falling back to a client-side emulation otherwise.
  • Parameters for take and drop calls (required for pagination) can now be used in precompiled queries.
  • We don’t use sample projects like slick-examples anymore. All samples come in the form of Activator templates with an integrated tutorial. They are tied to a Slick major version but evolve separately from minor releases.
  • Configure database connections through Typesafe Config using Database.forConfig, in a format which is compatible with Play’s database configuration (but no support for connection pools yet)
  • Outer join emulation: All types of outer joins are now available on all databases. You can check for the corresponding capability flags to see if the support is native or emulated (with different joins and unions).
  • OSGi support: Slick and Slick Extensions are now proper OSGi bundles.
  • Improved performance when reading JDBC ResultSets, including the option to define even more efficient custom mappings which can completely avoid boxing. See JdbcMapperTest and UnboxedBenchmark for examples.
  • Collection type constructor encoding in queries: All collection-valued queries now contain a type constructor (the default for tables being Seq, as before) that can be changed with a call to .to[...] (like in Scala Collections) at any point in a query, thus allowing arbitrary collections (including arrays) to be built with .run
  • Additional string methods like substring can now be used in queries.
  • Insert queries can now be pre-compiled using Compiled, just like other queries.
  • Model reverse-engineering from the database schema has been made customizable as the ModelBuilder class. This allows to make up for non-standard conformant jdbc drivers and driver specific-extensions, when generating the model.
  • Code generator improvements.
  • Two new shapes CaseClassShape and ProductClassShape facilitating the use of classes within queries. See Monomorphic Case Classes.
  • TestKit is more flexible and easier to use. You can now use it to test your own extensions for Slick against the standard databases supported by Slick. Less configuration is required due to the use of Typesafe Config with sensible defaults.

The Slick Extensions package with closed-source drivers for Oracle, DB/2 and SQL Server will be published to the Typesafe repository soon. The Slick Example Activator Templates, Slick Codegen Example, Slick Customized Codegen Example projects on github have mostly been updated.

Complete list of changes since Slick 2.0.2
  • ba665bc Release 2.1.0
  • 19c5e6f Document pre-compiled take/drop
  • a8bd78d Add ORM to Slick docs / Adapt SQL to Slick
  • 0ef178f Do not run plain SQL against all DBs
  • 7b8507b Release 2.1.0-RC3
  • 3a137fe Fix MatchError during default value parsing, ignoring more time default functions
  • cf5b06f fix slick-codegen dependency in upgrade guide
  • cef3097 Release 2.1.0-RC2
  • 7baf407 Fixes for slick-extensions - shorted column names in tests to <= 30 for Oracle - remove default schema PUBLIC for H2(?) - accept integer or char 1 and 0 for mapped non-native booleans - special case integer and date tests to include oracle (should may be handled via a capability at some later point in time) - introduces rawDefault method to allow preprocessing the default value meta data (for simplicity in slick-extensions)
  • 62a5689 Add 2.1 upgrade guide
  • 0b1e924 Improve docs for nullableNoDefault capability and distinctively test behavior
  • c205c0e Test Model column round-trips, fix FLOAT mapping According to jdbc SQL standard java.sql.FLOAT is an alias for java.sql.DOUBLE and both should be mapped to scala.Double. The single precision floating point type is java.sql.REAL, which is why we should map scala.Float to java.sql.REAL. see http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/mapping.html#1055162
  • 745c315 Test and fix Boolean and Option default values
  • 60212b6 Some other minor fixes.
  • 1aa1383 Remove misguided performance optimization from NominalType.
  • a6f16de Added ProductClassShape to allow mapping to classes extending Product such as Scala 2.11 case classes.
  • 4b90b3b Use INTEGER for all integral types on SQLite.
  • aebc16f Release 2.1.0-RC1
  • b05b411 Add Float support to ModelBuilder / Fix MetaModelTest for jtds
  • 7ade0e8 Prepare model for binary compatibility with potential future extension
  • fd22e84 Improve reverse engineer to work with slick-extensions - support for Char and BigDecimal caveats: - Boolean mapping still flawed - DBType mapping still flawed and non-portable
  • 65c4544 Add a test for Array[Byte] literals.
  • 0b9d8d2 Enhance model reverse engineering
  • 2acc05d Add new ColumnOption Length for string columns
  • d659d09 Move code generator into its own subproject
  • ea0589a Update custom shape docs.
  • bb4ae81 Add scaladoc link checker and fix the currently broken links
  • c8a28bb Add the CaseClassShape from #692.
  • 78f543f Move JDBC Meta data API tests into TestKit.
  • 953ccc0 Improve new String operations introduced in #843.
  • 2ee426c Generate table of driver capabilities for the user manual.
  • 39e4fe5 Use BIGSERIAL for auto-generated BIGINT columns in PostgresDriver.
  • b6a4df3 Improve error message for unsupported DELETE queries.
  • 3939bb0 Expose “open” and “transaction” flags in BaseSession.
  • b434e8f Add hashCode/equals methods to the DDL trait
  • 490f7bd Ignore follow-up exceptions when closing a withSession block.
  • ba71aff Add test case for issue #511
  • 190c50e Set type when inlining aggregation functions.
  • 0ce4f51 Add a complete snippet to paste to build
  • beafa0c Better scaladoc for extension methods for Column and Query.
  • 885ff9f Fix result set debug logging, broken by the previous commit
  • 29a1784 Add result set debug logging
  • 5289c0a Added few string functions
  • 5e331df Add performance benchmark logging for JDBC statement execution
  • 1c7c6f5 Mark AccessDriver as deprecated.
  • 50fb6a6 Improve logging
  • e7585e2 Table constraints and indexes ordered by name. Generated DDL are then unique and thus, difference in DDL can only be the result of a change in the table. Fixes playframework/play-slick#146.
  • 22cdcc2 Add some missing cases to Compilable/Executable
  • 9baf84f Fix the Shape for Query.
  • ad50505 Remove UnshapedQueryExecutor
  • 56c7fb7 Simplify Rep hierarchy
  • 69abcae Fix docs TOC depth
  • d74adb5 Fix docs TOC depth
  • b937743 Update Scala version to 2.11.1
  • 60e7e89 User uppercase identifiers in InsertTest.testInsertOrUpdateAutoInc.
  • c823c59 More flexibility for TestKit
  • 17c298f Use Typesafe Config for database configurations
  • 542e642 Improve from SQL to Slick documentation, add operators comparison
  • 03a3eb4 Various documentation improvements for 2.1
  • 76efe03 Add from SQL to Slick documentation
  • d1d6a91 Fix the build failure from merging tmp/issue-742 & tmp/insert-or-update
  • bde4ad2 OSGi bundle improvements:
  • d2ac664 Restrict Shape.provenShape to only allow unpacked types in ProvenShape.
  • 5234454 Fix some bugs in comprehension fusion.
  • dd15e41 Support Unit values in Query return types.
  • cfee5bb Revert the hconsShape workaround.
  • f91370f Enforce maxRows in PositionedResultIterator.
  • be2ff65 Prevent some initialization order problems
  • 4fa915c Add insertOrUpdate to InsertInvoker.
  • 27ba43d More improvements for Inserts.
  • 6992328 Improve Inserts
  • 0b77999 Allow non-literal constant values for Query.take and Query.drop
  • 21f85e9 Do not escape columns named tag in generated code
  • 889dae9 Don’t patch type changes from OptionApply in hoistClientOps.
  • 3ca772d Add some hooks to JdbcMappingCompilerComponent.
  • a10be62 Use Scala specialization for ResultConverter.
  • 513c956 Use positional access in JDBC ResultConverters.
  • 90cc8bf Optimize conversion of result and parameter values.
  • 935558e Deprecate more operators:
  • 9dccddc Improve scaladoc comments and clean up API for Slick 2.1.
  • a13e53a Remove IntrinsicSymbol
  • 85d4e00 Clean up dependencies
  • c8420b2 Improve OSGi integration:
  • 57c87f5 Add def size as alias for length to Query for more Scala collections api conformity
  • 047bb07 First cut at OSGi-fun for slick.
  • 338e959 Fix identity groupBy with type mappings.
  • 18f3cf2 Emulate outer joins where necessary.
  • 439305f Correctly propagate build failures to sbt’s exit code.
  • 76e638c Add test for outer joins and fix capability declarations.
  • 2dca474 Scala 2.11 compatibility.
  • e71ed6e Add alias and documentation for ForeignKeyAction
  • 3fc16d8 Allow building of non-erased collections through ClassTags.
  • 6e981e5 Provide implicit CollectionTypeConstructors
  • e3ab1d8 Allow Query result type constructors to be changed.
  • 0139d27 Simplify Query internals.
  • 5c5c657 Encode the type constructor for the unpacked collection type into Query.
  • d0e1e99 Remove zero values from ScalaType.
  • 6d1cbd9 Simplify Option handling in JdbcProfile.
  • 1b5f1f4 Simplify Invokers
  • 70a5a2b Add test case for nesting mapped entities
  • ce04fe8 Modify DDL to run drop phases in LIFO order. Fixes issue #701.
  • 89c3c2e Reuse “simple” object for “Implicit” in driver implementations.
  • c6bc382 Remove deprecated features
  • 7e2d6b4 Update version numbers for 2.1

Past News Items

Feb 24 2017
We have just released Slick 3.2.0. You can find the source code here: . Builds for Scala 2.11 and 2.12 are available from Maven Central, as usual. From this release...
Feb 10 2017
We have just released Slick 3.2.0-RC1, the first release candidate for Slick 3.2.0. You can find the source code here: . Builds for Scala 2.11 and 2.12 are available from...
Dec 05 2016
We have just released Slick 3.2.0-M2, the second milestone for Slick 3.2. It should show up on Maven Central within the next few hours. You can find the source code...
Jul 04 2016
We have just released Slick 3.2.0-M1, the first milestone for Slick 3.2. It should show up on Maven Central within the next few hours. You can find the source code...
Mar 18 2016
I'd like to draw your attention to the new [community process](/community/process.html) and [code of conduct](/community/conduct.html) for Slick, both of which are based on [Play Framework's](https://playframework.com/community-process). Back in 2008 [I](https://github.com/szeiger) started...
Feb 01 2016
Because nearly every application is driven by some sort of data source, we invested in building Slick, a Functional Relational Mapping (FRM) library for Scala that makes it easy to...
Dec 15 2015
We are happy to announce the release of [Slick](http://slick.typesafe.com/) 3.1.1. The artifacts are available on Maven Central, as usual. You can find the source code here: . Please see for...
Oct 09 2015
We are happy to announce the release of [Slick](http://slick.typesafe.com/) 3.1.0. These are the major new features compared to Slick 3.0.0: * New query compiler back-end. The main goal is to...