Skip to content

v3.6.0

Compare
Choose a tag to compare
@vincentlauvlwj vincentlauvlwj released this 29 Jan 13:50

Infrastructure

  • Upgrade Kotlin version to 1.7.22, support latest JDK versions (min 8, max 19)
  • Support Java 9 modular #421

Support SQL Window Functions, by @michaelfyc in #460

Ktorm now supports SQL window functions, here is an example:

database
    .from(Employees)
    .select(
        Employees.name,
        Employees.salary,
        Employees.departmentId,
        rank().over { partitionBy(Employees.departmentId).orderBy(Employees.salary.desc()) }
    )

Generated SQL:

SELECT 
    "t_employee"."name" AS "t_employee_name", 
    "t_employee"."salary" AS "t_employee_salary", 
    "t_employee"."department_id" AS "t_employee_department_id", 
    RANK() OVER (PARTITION BY "t_employee"."department_id" ORDER BY "t_employee"."salary" DESC) 
FROM "t_employee" 

Support Case-When DSL, by @zuisong in #413

Ktorm now supports case-when DSL, for example:

database
    .from(Employees)
    .select(
        Employees.id,
        Employees.name,
        CASE(Employees.sex).WHEN(1).THEN("male").WHEN(2).THEN("female").ELSE("unknown").END()
    )

Generated SQL:

SELECT 
    "t_employee"."id" AS "t_employee_id", 
    "t_employee"."name" AS "t_employee_name", 
    CASE "t_employee"."sex" WHEN 1 THEN 'male' WHEN 2 THEN 'female' ELSE 'unknown' END 
FROM "t_employee" 

Other Optimizations & Bug Fixes

  • Support insert ... returning ... for SQLite, by @2938137849 in #427
  • Support SQL full join, by @KocproZ in #419
  • Support MySQL & PostgreSQL default keyword for insert statements to use column default values, by @lookup-cat in #431
  • Support SQL type casting syntax, by @svenallers in #415
  • Rename Query#totalRecords to Query#totalRecordsInAllPages for better understandability, the origin name is now deprecated
  • Disable entity sequence for tables that doesn’t bound to entities, legacy usages will get a warning after 3.6.0
  • DefaultMethodHandler to use the same class loader as the method's declaring class, by @brohacz in #471
  • Refactor combineConditions to avoid stack overflow errors #328
  • Fix SQLite syntax error for UNIONs with subqueries #329
  • Fix entity equality bug #466
  • Fix bugs #386, #400, #405, #432, #433, #457

Break Changes

  • Refactor SqlExpressionVisitor and its subtypes from classes to interfaces for better coding flexibility.
  • Change SQL Server datetimeoffset's return type from Column<microsoft.sql.DateTimeOffset> to Column<java.time.OffsetDateTime>