see migration notes below
- materialize encoding for generic value classes
- sbt option to hide debug messages during compilation
- support Option.contains
- recursive optional nested expanding
- apply naming strategy to column alias
- fix existing and add missing encoders and decoders for java.util.UUID
- upgrade finagle-postgres to 0.3.2
- JDBC contexts are implemented in separate classes -
PostgresJdbcContext
,MysqlJdbcContext
,SqliteJdbcContext
,H2JdbcContext
- all contexts are supplied with default
java.util.UUID
encoder and decoder
- include SQL type info in Encoder/Decoder
- make encoder helpers and wrapper type public for quill-finangle-postgres
- fix property renaming normalization order
- workaround compiler bug involving reflective calls
- fix flat joins support
- encoders and decoders refactoring
- avoid alias conflict for multiple nested explicit joins
- avoid merging filter condition into a groupBy.map
- move Embedded from
io.getquill.dsl.MetaDsl
inner context toio.getquill
package - make
currentConnection
protected - add abstract encoders/decoders to CassandraContext and uuid mirror encoder/decoder
- made the SQL types for AsyncEncoder/AsyncDecoder generic
- introduce
finagle-postgres
- introduce meta dsl
- expand meta dsl
- encoder for java 8 LocalDate & LocalDateTime
- Upgraded to Monix 2.x
- Make withClient function not private
- pass ssl settings to async driver
- New API for schema definition:
query[Person].schema(_.entity("people").columns(_.id -> "person_id")
becomesquerySchema[Person]("People", _.id -> "person_id")
. Note that the entity name ("People") is now always required. WrappedValue[T]
no longer exists, Quill can now automatically encodeAnyVal
s.
see migration notes below
- check types when parsing assignments and equality operations
- Update finagle-mysql to finagle 6.37.0
- Split quill-async into quill-async-mysql and quill-async-postgres
- cql: support
+
operator - cassandra context constructor with ready-made Cluster
- support forced nested queries
- support mapped encoding definition without a context instance
- fix class cast exception for returned values
- fix free variables detection for the rhs of joins
mappedEncoding
has been renamed toMappedEncoding
.- The way we add async drivers has been changed. To add mysql async to your project use
quill-async-mysql
and for postgre asyncquill-async-postgres
. It is no longer necessary to addquill-async
by yourself. - Action assignments and equality operations are now typesafe. If there's a type mismatch between the operands, the quotation will not compile.
see migration notes below
- new encoding, macros refactoring, and additional fixes
- Refactor generated to returning keyword in order to return the correct type
- Allow finagle-mysql to use Long with INT columns
- create sub query if aggregation on distinct query
- upgrade dependency to finagle 6.36.0
- Make decoder function public
- set the scope of all cassandra context type definitions to public
- make the cassandra decoder fail when encountering a column with value null
- fix Option.{isEmpty, isDefined, nonEmpty} show on action.filter
- Encoder fix
- enclose operand-queries of SetOperation in parentheses
- The fallback mechanism that looks for implicit encoders defined in the context instance has been removed. This means that if you don't
import context._
, you have to change the specific imports to include the encoders in use. context.run
now receives only one parameter. The second parameter that used to receive runtime values now doesn't exist any more. Uselift
orliftQuery
instead.- Use
liftQuery
+foreach
to perform batch actions and define contains/in queries. insert
now always receives a parameter, that can be a case class.
- Non-lifted collections aren't supported anymore. Example:
query[Person].filter(t => List(10, 20).contains(p.age))
. UseliftQuery
instead.
schema(_.generated())
has been replaced byreturning
.
see migration notes below
- introduce contexts
- sqlite support
- scala.js support
- support
toInt
andtoLong
- quill-jdbc: support nested
transaction
calls - fix bind order for take/drop with extra param
- quotation: allow lifting of
AnyVal
s - make liftable values work for the cassandra module
- apply intermediate map before take/drop
- support decoding of optional single-value case classes
- make type aliases for
run
results public - fail compilation if query is defined outside a
quote
- fix empty sql string
This version introduces Context
as a relacement for Source
. This change makes the quotation creation dependent on the context to open the path for a few refactorings and improvements we're planning to work on before the 1.0-RC1
release.
Migration steps:
- Remove any import that is not
import io.getquill._
- Replace the
Source
creation by aContext
creation. See the readme for more details. All types necessary to create the context instances are provided byimport io.getquill._
. - Instead of importing from
io.getquill._
to create quotations, import from you context instanceimport myContext._
. The context import will provide all types and methods to interact with quotations and the database. - See the documentation about dependent contexts in case you get compilation errors because of type mismatches.
- transform quoted reference
- simplify
finagle-mysql
action result type - provide default values for plain-sql query execution
- quotation: fix binding conflict
- don't consider
?
a binding if inside a quote - fix query generation for wrapped types
- use querySingle/query for parametrized query according to return type
- remove implicit ordering
- remove implicit from max and min
- support explicit
Predef.ArrowAssoc
call - added handling for string lists in ClusterBuilder
- add naming strategy for pluralized table names
- transform ConfiguredEntity
- explicit bindings using
lift
- Code of Conduct
- dynamic type parameters
- support contains for Traversable
equals
support- Always return List for any type of query
- quilll-sql: support value queries
- quill-sql:
in
/contains
- support empty sets - Support
Ord
quotation blockParser
off-by-one error- show ident instead of indent.toString
- decode bit as boolean
- Schema mini-DSL and generated values
- Support for inline vals in quotation blocks
- Support for Option.{isEmpty, nonEmpty, isDefined}
- Tolerant function parsing in option operation
- quill-sql: rename properties and assignments
- quill-cassandra: rename properties and assignments
- Fix log category
- Accept unicode arrows
- Add set encoder to SqlSource
- Don't quote the source creation tree if query probing is disabled
- Bind
drop.take
according to the sql terms order - Avoid silent error when importing the source's implicits for the encoding fallback resolution
- Quotation: add identifier method to avoid wrong type refinement inference
- Unquote multi-param quoted function bodies automatically
- quill-sql: h2 dialect
- support for auto encoding of wrapped types
- non-batched actions
distinct
support [0] [1]- postgres naming strategy
- quill-core: unquote quoted function bodies automatically
- don't fail if the source annotation isn't available
- fix custom aggregations
- quill-finagle-mysql: fix finagle mysql execute result loss
- quill-cassandra: stream source - avoid blocking queries
- new sources creation mechanism
- simplified join syntax
- Comparison between Quill and other alternatives for CQL
contains
operator (sqlin
)- unary sql queries
- query probing is now opt-in
- quill-cassandra: upgrade Datastax Java Driver to version 3.0.0
- support implicit quotations with type parameters
- quill-cassandra: UUID support
- quill-async: more reasonable numeric type decodes
- quill-cassandra: first version of the module featuring async and sync sources
- quill-cassandra: reactive streams support via Monix
- quill-core: updates using table columns
- quill-core: explicit inner joins
- quill-core: configuration option to disable the compile-time query probing
- quill-core:
if/
elsesupport (sql
case/
when`) - quill-async: uuid encoding
- quill-core: custom ordering
- quill-core: expressions in sortBy
- expire and close compile-time sources automatically
- Aggregation sum should return an Option
- Changed min/max implicit from Numeric to Ordering
- provide implicit to query case class companion objects directly
- don't fuse multiple
sortBy
s - actions now respect the naming strategy
- Insert/update using case class instances
- Better IntelliJ IDEA support
- Implicit quotations
like
operator- string interpolation support
- Finagle pool configuration
- Allow empty password in Finagle Mysql client
- Bug fixes:
- Initial release