chore(deps): update dependency org.tpolecat:doobie-core to v1.0.0-rc12 (main)#386
Closed
renovate[bot] wants to merge 1 commit intomainfrom
Closed
chore(deps): update dependency org.tpolecat:doobie-core to v1.0.0-rc12 (main)#386renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
➖ Are we earthbuild yet?No change in "earthly" occurrences 📈 Overall Progress
Keep up the great work migrating from Earthly to Earthbuild! 🚀 💡 Tips for finding more occurrencesRun locally to see detailed breakdown: ./.github/scripts/count-earthly.shNote that the goal is not to reach 0. |
janishorsts
approved these changes
Mar 5, 2026
Collaborator
|
The failures are fixed in #361 |
auto-merge was automatically disabled
March 5, 2026 09:46
Pull request was closed
Author
Renovate Ignore NotificationBecause you closed this PR without merging, Renovate will ignore this update ( If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.0.0-RC2→1.0.0-RC12Release Notes
typelevel/doobie (org.tpolecat:doobie-core)
v1.0.0-RC12Compare Source
v1.0.0-RC11Compare Source
What's new
Dependency updates
New Contributors
Full Changelog: typelevel/doobie@v1.0.0-RC10...v1.0.0-RC11
v1.0.0-RC10Compare Source
This release is a small release, with a minor change and some dependency updates.
Dependency updates
Also thanks to various other project internal improvements from @xuwei-k and @sharmaakshay177!
New Contributors
Full Changelog: typelevel/doobie@v1.0.0-RC9...v1.0.0-RC10
v1.0.0-RC9Compare Source
Fixes & Changes
class Derivedasfinalby @satorg in #2231Gets andPuts by @satorg in #2232Documentation
Dependency updates
Internal changes
usingclause by @xuwei-k in #2228New Contributors
Full Changelog: typelevel/doobie@v1.0.0-RC8...v1.0.0-RC9
v1.0.0-RC8Compare Source
This release contains some small improvements/bugfixes
New
Bug fixes
Documentation
Full Changelog: typelevel/doobie@v1.0.0-RC7...v1.0.0-RC8
v1.0.0-RC7Compare Source
Release notes below include all changes since 1.0.0-RC5.
Notable features / changes
Query Cancellation
Query cancellation has been implemented via calling
PreparedStatement#close()on fiber cancellation.Big thanks to @TalkingFoxMid and contributions from @satorg @armanbilge!
Related PRs: #2079 #2088
Opt-in automatic derivation
Automatic derivation has been the (non-configurable) default in Doobie since the start. While convenient, it can lead to long compile times because
Read/Write/Get/Putinstances are derived every time it is needed.We have significantly reworked the internals of Read/Write derivation to allow opt-in semi-auto and automatic derivation.
import doobie.implicits.*will enable automatic derivation (maintaining source compatibility to ease migration).import doobie.generic.auto.*to explicitly enable automatic derivation. Compared toimport doobie.implicits.*this brings just the implicits/givens necessary for automatic derivationimport doobie.implicits.*toimport doobie.syntax.all.*and gradually fix compile errors by deriving instances explicitly (see below):To derive instances explicitly:
Scala 3:
Scala 2+:
As part of this derivatino rework, it is now possible to obtain a
Read[Option[A]]/Write[Option[A]]instancedirectly from
Read[A]/Write[A].Related PRs:
Better type-checking with JDBC vendor types (For Postgres
java.time.*and enums)In previous releases, doobie typecheck only checks against the integer (enum) returned by
java.sql.ResultSetMetaData#getColumnType(java.sql.Types). However this is inadequate for two reasons:java.sql.Typesdoesn't cover many other possible database-specific types (e.g. JSON column type)java.sql.Typesfor legacy reasonsFor example, for a
TIMESTAMP WITH TIME ZONEcolumn Postgres JDBC driver will report that it has the typejava.sql.Types.TIMESTAMP(surprising asjava.sql.Types.TIMESTAMP_WITH_TIMEZONEexists).This means by just using the result from
getColumnTypetypechecking couldn't differentiate between aTIMESTAMP WITH TIME ZONEcolumn vsTIMESTAMP (WITHOUT TIMEZONE)column - which has serious implications for correctness of your program if one uses the wrong column type!Fortunately, we can see that
getColumnTypeNamedoes differentiate between the two column types.To help improve typechecking for
java.time.*types (and generally), we have made the following changes:1.
GetandPutcan now specify vendor column type nameWhen creating a
GetorPutinstance, the vendor type name can now be specified so typechecking will check against it.When constructing instances (e.g.
Get.Basic.one(..)) you can pass the expected vendor type tocheckedVendorTypeparameter, orNoneif you don't need or want to check against the vendor type.2. Move
java.time.*instances into database modulesjava.time.*instances are moved to their database-specific modules to handle differences in databases and their drivers.doobie.postgres.implicits.*doobie.mysql.implicits.*For other databases that support Java 8 time types, you can continue to use
import doobie.implicits.javatimedrivernative.*but there's no check against vendor type names.3. Make
doobie.implicits.javasqlinstances available by defaultdoobie.implicits.javasqlhas now been removed. You can safely remove anyimport doobie.implicits.javasql.*as these instances are now available without any import.4. Better typechecked array enum columns (Postgres-only)
If you have a column which is an array of enum type, you should switch to use
doobie.postgres.implicits.arrayOfEnumto define the
Metainstance on the application side for better typechecking.Related PRs:
Logging for streaming and updateMany queries
Query/Updatewhich now allow queries ran throughQuery#streamandUpdate#withGeneratedKeysto be logged. As part of this work,doobie.hi.FCmodule also have 3 new functions:stream,executeWithResultSetandexecuteWithoutResultSet. Old functions that does not log (such asdoobie.hi.FC.updateWithGeneratedKeys) has been deprecated and will be removed by 1.0.Related PRs:
Other changes
updateSetOptfragment (#1893) by @matsluni in #2126INandNOT INfragment builders for product types with arbitrary arities by @satorg in #2128Notable dependency updates
Internal/doc changes
New Contributors
Big thanks to all new and regular contributors!
Full Changelog: typelevel/doobie@v1.0.0-RC5...v1.0.0-RC7
v1.0.0-RC6: 1.0.0-RC6Compare Source
Warning: We have an issue in this release related to automatic derivation not using explicitly defined instances (See #2104). Please refrain from using this release and skip to 1.0.0-RC7 when it is out.
Query Cancellation
Query cancellation has been implemented via calling
PreparedStatement#close()on fiber cancellation.Big thanks to @TalkingFoxMid and contributions from @satorg @armanbilge @jatcwang!
Related PRs: #2079 #2088
Opt-in automatic derivation
Automatic derivation has been the (non-configurable) default in Doobie since the start. While convenient, it can lead to long compile times because
Read/Write/Get/Putinstances are derived every time it is needed.For those who want shorter compile times, we have now made automatic derivation opt in!
import doobie.implicits.*will enable automatic derivation (maintaining source compatibility to ease migration).import doobie.generic.auto.*to explicitly enable automatic derivation. Compared toimport doobie.implicits.*this brings just the implicits/givens necessary for automatic derivationimport doobie.implicits.*toimport doobie.syntax.all.*and gradually fix compile errors by deriving instances explicitly (see below):To derive instances explicitly:
Scala 3:
Scala 2+:
Related PRs:
Better type-checking with JDBC vendor types (For
java.time.*and more)In previous releases, doobie typecheck only checks against the int enum returned by
java.sql.ResultSetMetaData#getColumnType(java.sql.Types). However this is inadequate for two reasons:java.sql.Typesdoesn't cover many other possible database-specific types (e.g. JSON column type)java.sql.Types, often due to legacyFor example, for a
TIMESTAMP WITH TIME ZONEcolumn Postgres JDBC driver will report that it has the typejava.sql.Types.TIMESTAMP(surprising asjava.sql.Types.TIMESTAMP_WITH_TIMEZONEexists).This means by just using the result from
getColumnTypetypechecking couldn't differentiate between aTIMESTAMP WITH TIME ZONEcolumn vsTIMESTAMP (WITHOUT TIMEZONE)column - which has serious implications for correctness of your program if one uses the wrong column type!Fortunately, we can see that
getColumnTypeNamedoes differentiate between the two column types.To help improve typechecking for
java.time.*types (and generally), we have made the following changes:1.
GetandPutcan now specify vendor column type nameWhen creating a
GetorPutinstance, the vendor type name can now be specified so typechecking will check against it.When constructing instances (e.g.
Get.Basic.one(..)) you can pass the expected vendor type tocheckedVendorTypeparameter, orNoneif you don't need or want to check against the vendor type.2. Move
java.time.*instances into database modulesjava.time.*instances are moved to their database-specific modules to handle differences in databases and their drivers.doobie.postgres.implicits.*doobie.mysql.implicits.*For other databases that support Java 8 time types, you can continue to use
import doobie.implicits.javatimedrivernative.*but there's no check against vendor type names.3. Make
doobie.implicits.javasqlinstances available by defaultdoobie.implicits.javasqlhas now been removed. You can safely remove anyimport doobie.implicits.javasql.*as these instances are now available without any import.Related PRs:
Logging for streaming and updateMany queries
Query/Updatewhich now allow queries ran throughQuery#streamandUpdate#withGeneratedKeysto be logged. As part of this work,doobie.hi.FCmodule also have 3 new functions:stream,executeWithResultSetandexecuteWithoutResultSet. Old functions that does not log (such asdoobie.hi.FC.updateWithGeneratedKeys) has been deprecated and will be removed by 1.0.Related PRs:
Other notable changes
Dependency updates
Internal/doc changes
New Contributors
Full Changelog: typelevel/doobie@v1.0.0-RC5...v1.0.0-RC6
v1.0.0-RC5: 1.0.0-RC5Compare Source
What's New
WeakAsync.liftIOby @armanbilge in tpolecat#1910Bug fixes and improvements
syncStepinWeakAsync.liftKby @armanbilge in tpolecat#1906New Contributors
Full Changelog: typelevel/doobie@v1.0.0-RC4...v1.0.0-RC5
v1.0.0-RC4Compare Source
v1.0.0-RC3Compare Source
Java 11 & major dependency updates
Effectful Logging & Transactor-level logging
In previous versions Doobie supports SQL statement logging via LogHandler. However, it has the slightly awkward interface of
final case class LogHandler(unsafeRun: LogEvent => Unit)which makes it difficult to integrate with pure FP logging libraries.We have reworked how logging works, with the two major difference being:
def run(logEvent: LogEvent): M[Unit]Transactor[M]now has a singleLogHandler[M]attached to it, in order to align the effect type.To recover some of the previous functionality of per-query logging logic, you can call
.queryWithLabel/.updateWithLabel(instead of.query/.update) to attach aStringlabel to each query.This
labelwill be set for each LogEvent, which yourLogHandlercan then use to differentiate the queries being logged. (e.g. use it for metrics)For more advanced use case where you want to pass more structured contextual information for logging purposes, you can use
IOLocal(The docs on logging has an example)Big thanks to @oyvindberg for the implementation of effectful LogHandler and @george-wilson-rea for adding query labels
Basic migration steps
LogHandler[M]when constructing your Transactor (or pass a None if you don't want to log events)Tightening Postgres java.time instance typecheck
In #1735 / #1736, we tightened Meta instances for PostgreSQL java.time instances to reflect what the postgres-jdbc driver actually allows. For example, typechecking a query that tries to map a
java.time.OffsetDateTimeto aVARCHARcolumn in the database will now fail.Instance for ZonedDateTime has also been removed as it is misleading (PostgreSQL does not support a timestamp type that stores the timezone)
All PostgreSQL users should migrate to using
doobie.postgres.JavaTimeInstanceswhich has stricter type-checking to help you catch errors. For example, it enforces that the corresponding column type of anjava.time.Instantmust beTIMESTAMP WITH TIME ZONE.Thanks @guymers!
doobie-hikari: Now automatically creates the Connect ExecutionContext
doobie.hikari.HikariTransac
Configuration
📅 Schedule: Branch creation - "after 4pm on monday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.