All Versions
85
Latest Version
Avg Release Cycle
-
Latest Release
-
Changelog History
Page 1
Changelog History
Page 1
-
v4.5.0 Changes
- 🚚 Remove the need to make things embedded, happens automatically
- Date encoders for major date types. Extensible context.
- ⚠ Warning about embedding fields that should have encoders
- ⚡️ jasync zio current schema configuration, jasync version update
Migration Notes:
- It is no longer necessary to do extend
Embedded
for case classes that should be embedded within an entity. In the case that the embedded case class "looks" like it should be encoded/decoded (i.e. it has only one field), an additional warning has been introduced to notify the user of this potential issue.
-
v4.2.0 Changes
- Implement ZIO-Idiomatic JDBC Context
- ⚡️ Update idiomatic pattern based on discussions
- Implement ZIO idiomatic pattern for cassandra
- Add switch to manually disable returning/output-clauses
- ⚡️ cassandra - update if exists
- Change infix”$content” to sql”$content”
- 🚚 Remove mysql as
Migration Notes:
- 🗄 The
infix
interpolator is now deprecated because in Scala 2, infix is a keyword. Instead ofinfix"MyUdf(${person.name})"
usesql"MyUdf(${person.name})"
. For contexts such as Doobie that already have ansql
interpolator. Importcontext.compat._
and use theqsql
interpolator instead.
-
v3.18.0 Changes
- Check all columns for null-ness for Option[Product] to be None
- Fixing Correlated Subquery Issues
- Corrects Like operator generating wrong SQLs
- Implement filterIfDefined
- 🚚 Remove invalid 'AS' for Oracle Queries
- 🚚 Remove twitter-chill library
🔖 Version Bumps:
- sbt-scalajs-crossproject to 1.2.0
- logback-classic to 1.2.11
- h2 to 2.1.212
- zio, zio-streams to 1.0.14
- cassandra-driver-core to 3.11.2
- java-driver-core to 4.14.1
- scala-collection-compat to 2.7.0
- mysql-connector-java to 8.0.29
- scala3-library, ... to 3.1.2
- sbt-sonatype to 3.9.13
- postgresql to 42.3.6
Migration Notes:
- As a result of 2504, the handling of optional-product rows (technically parts of rows) is now different. Whereas before, if any non-optional column of an optional-product row was null, then entre optional-product would be null. Now however, an optional-product will only be null if every column inside is null. For example, before, if a query returning
Person(name:Option(Name(first:String, last:String)), age: Int)
resulted in the rowResultRow("Joe", null, 123)
before the entity would be decoded intoPerson(None, 123)
(i.e. the optional-productOption[Name]
would decode toNone
). Now however,Option[Name]
only decodes toNone
if every column inside it is null. This means that theResultRow("Joe", null, 123)
decodes toPerson(Name("Joe", 0 /*default-placeholder for null*/), 123)
. Only when the bothfirst
andlast
columns in Name are null i.e.ResultRow(null, null, 123)
will the result be:Person(None, 123)
. Have a look at the PR 2504 as well as it's corresponding issue 2505 for more details on how this works and the rationale for it.