All Versions
Latest Version
Avg Release Cycle
33 days
Latest Release
661 days ago

Changelog History
Page 4

  • v0.5.2 Changes

    ⚡️ Minor updates, see below.

    • ➕ Added experimental support for Blazing Fast™ inserts in Postgres via COPY ... FROM STDIN. See book Chapter 15 for an example.
    • Introduced MiMa for checking binary compatibility. Note that for the 0.5.x series we will guarantee compatibility for Scala 2.12 only.
    • FirstExample now actually shows output! Thanks Aaron Hawley.
    • ➕ Added pgEnumStringOpt for transparently partial pgEnum decoding. Thanks Christopher Davenport!
    • ➕ Added Composite.deriveComposite[A]() which creates a "semi-automatic" derivation of Composite[] for a given type A. While instances are usually derived automatically, this can be used to speed up compilation by only deriving once. It can also be used to avoid needing Meta[] instances in scope or derivable at every site where a given Composite[A] is used. Thanks Scott Parish!

  • v0.5.1 Changes

    ⚡️ Minor update to get dependencies up to date.

    • Updated to fs2 0.10.2, hikari-cp 2.7.8, and specs2 4.0.3.
    • You can now do .stripMargin on fragments, thanks to Arne Claassen!

  • v0.5.0 Changes

    This introduces the 0.5.x series which standardizes on cats, cats-effect, and fs2. This is a big release that will make life much simpler for people who were using 0.4.x with cats. See the migration document on the microsite for more information.

    Many thanks to Andreas Svanberg, Bjørn Madsen, Charles Hunt, Christopher Davenport, Dale Wijnand, Devin Ekins, Dmitry Polienko, Earl St Sauver, fabio labella, Frank S. Thomas, Hossam Karim, Jisoo Park, Keir Lawson, Mads Hartmann, nigredo-tori, Radu Gancea, sh0hei, Stephen Lazaro, tgalappathth, wedens, and x1- for their contributions to this release!

    Notable changes:

    Cats Standardization
    • 🎵 Ding, dong the yax is dead! 🎵 The new codebase is based on cats!
    • The -cats segment of artifact names is gone. doobie-core uses cats now, as does everything else.
    API Changes
    • Rather than foo.imports._ for both names and implicits, there are now distinct imports foo._, foo.implicits._. The old foo.imports._ still works but is deprecated.
    • Syntax classes are now organized as in cats. Much cleaner but end users probably won't notice.
    • 👀 Composite[A] now implies Composite[Option[A]] which is a very useful change. It means joins can be expressed much more easily. See Join.scala in the example project.
    🏗 Project Structure, Build, Etc.
    • The doc has been ported to sbt-microsites.
    • 🆓 FreeGen2 code generator now generates all effect types with cats.effect.Async instances, in preparation for transactors that can make use of distinct thread pools for certain operations (JDBC primitives for instance). Free algebras and interpreters for Postgres are also generated now.
    • ➕ Added WartRemover finally.
    • 🚀 The release process is much better, so releases can be more frequent. Version numbers appearing in the doc are now supplied automatically.

  • v0.4.4 Changes

    🚀 This release fixes an issue with HikariTransactor (thanks Naoki Aoyama) and supersedes the botched 0.4.3 release.

  • v0.4.3 Changes

    🚀 This was a failed attempt to add back support for 2.10. Do not use this release.

  • v0.4.2 Changes

    🚀 Sparkly contributors for this release are :sparkles: n4to4, :sparkles: Alexa DeWit, :sparkles: wedens, :sparkles: Colt Frederickson, :sparkles: Benjamin Trenker, :sparkles: nigredo-tori, :sparkles: Suhas Gaddam, :sparkles: Christopher Davenport, :sparkles: Damir Vandic, :sparkles: Jacob Barber, and :chicken: tpolecat. Noteworthy changes:

    • ⬇️ Dropped support for 2.10 because I can't figure out how to publish it.
    • ✅ Replaced all the internals with a new design that makes it practical to write your own interpreter (or, more commonly, subclass the default one) which is very useful for testing and who knows what else. For most users this will not be an observable change.
    • Switched to a new transactor design that makes it simple to customize behavior, and combined with new interpreter design makes it practical to use doobie types in free coproducts (see coproduct.scala in the example project). This is a minor breaking change:
      • The yolo member on Transactor is no longer stable, so you cannot import xa.yolo._ anymore; instead you must say val y = xa.yolo; import y._. Because this is typically done with initialCommands in sbt it's unlikely to be a big deal.
      • Transactor is now a final case class with an extra type member for the underlying pool or other connection source.
    • ⬆️ Note that the interpreter/transactor changes require Monad instances at a few more call sites, which should be transparent in most cases but may require Cats users to import fs2.interop.cats._ here and there … if scalac is claiming there's no instance available after upgrading that's probably why.
    • ➕ Added support for type refinements (refined library). See the doobie-refined and doobie-refined-cats modules.
    • ➕ Added a fail constructor to all the F* modules.
    • 🛠 Made Meta.nxmap unnecessary and fixed issues with mappings that are undefined for zero values of underlying unboxed types.
    • ➕ Added mapping for Postgres hstore type.
    • 👉 Make postgres enums nullable (change Atom instance to Meta).
    • Generalized QueryChecker and AnalysisSpec to allow any effect type.
    • ➕ Added stream and streamWithChunkSize as fs2 friendly aliases on Query.
    • 🛠 Fix parsing of JDBC type TimestampWithTimezone (introduced in JDK 8).
    • ➕ Added Suspendable instance for PGConnectionIO
    • ➕ Added an Unknown constructor to JdbcType for JDBC type constants outside the spec and known extensions.
    • Generalized the underlying structure of Meta/Composite and eliminated Atom. Client code that uses Atom will need to be re-implemented in terms of Meta or Composite.
    • Added Fragment.const0 for constant fragments with no trailing space, while const now does add a trailing space. Users of Fragment.const may need/wish to change to const0.
    • Manifest replaced with TypeTag in doobie.util.invariant.
    • 👌 Improved H2 UUID Support. Query analysis involving H2 and UUIDs should no longer show a type mismatch.

    ⚡️ In addition the following libraries were updated:

    • sbt 0.13.15
    • Scala 2.10.6, 2.11.11, 2.12.3
    • scalaz 7.2.9
    • PostgreSQL JDBC driver 42.1.1
    • Hikari 2.6.1
    • Circe 0.8.0

  • v0.4.1 Changes

    This release updates doobie to Cats 0.9 and the associated fs2-cats interop layer to 0.3, courtesy of mighty space robot Adelbert Chang. There are no other changes.

  • v0.4.0 Changes

    This was intended to be a quick follow-up to 0.3.0 but it got a little out of hand and turned into a major release. Please read these notes carefully because there are some breaking changes relative to 0.3.0.

    🚀 Eighteen people contributed to this release, of whom seventeen were not tpolecat. They are sparkly and awesome. In no particular order, many many thanks to :sparkles: Channing Walton :sparkles: Daniel Wunsch :sparkles: Gary Coady :sparkles: Tristan Lohman :sparkles: Jisoo Park :sparkles: Yury Liavitski :sparkles: Ikhoon Eom :sparkles: Marek Kadek :sparkles: Leif Wickland :sparkles: Zack Powers :sparkles: Kris Nuttycombe :sparkles: Pepe García :sparkles: Peter Neyens :sparkles: ritschwumm :sparkles: ronanM :sparkles: Sam Ritchie :sparkles: and wedens. :sparkles:

    👍 Cats Support

    This is probably the most important development for 0.4.0 and it is due in large part to the hard work of :sparkles: Jisoo Park :sparkles:. Impossibly huge thanks for his work throughout this process.


    • doobie is now built natively for Cats with fs2, with no need for a shim/adapter layer. At the moment this is accomplished via a preprocessor.
    • 🛠 All artifacts are built for Cats. Names are suffixed with -cats, so the scalaz version is doobie-core and the Cats version is doobie-core-cats.
    • The book of doobie is now published in separate editions for scalaz and Cats.
    🔄 Changes to Core
    • 🌲 There is now support for simple statement logging with timing information. This is not the long-promised structured logging feature but it fits the common use case and fills a clear functional gap. See the book chapter for details and examples.
    • The dynamic SQL story is now slightly better with the introduction of composable statement fragments. These allow you to build statements from smaller pieces without having to track parameter placeholders/offsets by hand. See the book chapter for details and examples.
    • 💥 SQL IN clauses are now handled via, which is a breaking change relative to 0.3.0. See the book chapter on parameterized queries for an example.
    • Methods on Query[0]/Update[0] that construct streams (.process) now have variants that allow you to specify the chunk size, which by default is 512 rows.
    • There is now an IO data type that you can use if you're having a hard time settling on a target effect type. It works identically in Cats and scalaz and is what's used in the book.
    🔄 Changes to Add-On Modules

    💥 We cleaned up the add-on modules a bit and made some naming simplifications that are breaking relative to 0.3.0.

    • ✅ There is now a ScalaTest add-on. See the book chapter on unit testing for details and examples.
    • 📦 The contrib segment has been removed from module names, so doobie-contrib-h2 is now just doobie-h2. It has also been removed from package names. So doobie.contrib.h2 is now just doobie.h2.
    • In both cases the postgresql segment has been shortened to postgres.
    • All modules now have a consistent import story. import doobie.<module>.imports._ should get you everything you need.

    🚀 That's it! Enjoy the release. Once again many thanks to our contributors.

  • v0.3.0 Changes

    This release brings doobie up to date with major dependencies, almost entirely due to the hard work of @guersam. The release is otherwise equivalent to 0.2.4 from a feature standpoint.

    ⬆️ Upgrades:

    • ⚡️ Updated to scalaz 7.2
    • ⚡️ Updated to shapeless 2.3
    • ⚡️ Updated to JDK 1.8
    • ➕ Added build support Scala 2.12

  • v0.2.4 Changes

    🚀 This is a minor release with a few odds and ends and an important library update.

    👌 Improvements:

    • You can now construct a HikariTransactor from an existing HikariDataSource (thanks @raulraja).
    • There is now a .nel accumulator for non-empty resultsets (thanks @refried).
    • Arrays of UUIDs are now supported for PostgreSQL (thanks @veegee).
    • Published jarfiles now have OSGi headers.
    • Some internal cleanup but nothing that should affect end users.

    ⬆️ Upgrades:

    • Updated to scalaz-stream 0.8 (thanks @guersam).