Skip to content

Releases: ydb-platform/yoj-project

YOJ 2.6.23 (ASYNC secondary indexes)

24 Jul 13:28
Compare
Choose a tag to compare

⚠️ Please consult release notes for 2.6.15 and 2.6.16 if you are migrating from releases < 2.6.15. These two releases contain minor, but breaking API changes.


Improvements

Bugfixes

  • 14b61ca RelPredicate.negate() returned LegacyRelPredicate by mistake

API Changes - Minor

  • 85be392 #77: Mark projections as deprecated for removal in YOJ 3.0.0

v2.5.16

25 Jul 20:37
Compare
Choose a tag to compare

This is a backport release with important changes from 2.6.23.


Improvements

Bugfixes

  • 14b61ca RelPredicate.negate() returned LegacyRelPredicate by mistake

YOJ 2.6.22 (minor fixes)

14 Jul 18:58
Compare
Choose a tag to compare

⚠️ Please consult release notes for 2.6.15 and 2.6.16 if you are migrating from releases < 2.6.15. These two releases contain minor, but breaking API changes.


  • noticket: FIX: UuidFieldValue.getRaw() should return the underlying java.util.UUID (c701438)
  • noticket: FIX: Ignore unknown types of directory entries instead of panicking (6a0593f)

YOJ 2.6.21 (fix NPE in YdbRepositoryTransaction.trace)

25 Jun 14:20
Compare
Choose a tag to compare

⚠️ Please consult release notes for 2.6.15 and 2.6.16 if you are migrating from releases < 2.6.15. These two releases contain minor, but breaking API changes.


  • FIX occasional NPE in YdbRepositoryTransaction.trace()
    java.lang.NullPointerException: Cannot invoke "tech.ydb.table.Session.getId()" because "this.session" is null
    

YOJ 2.6.20

23 Jun 18:17
Compare
Choose a tag to compare

❌ Please do not use this release as it can cause NPE in YdbRepositoryTransaction.trace(), use 2.6.21 instead.


  • InMemoryDataShard: Allow to replace TreeMap with an explicitly sorted LinkedHashMap to reduce comparison count
    If you have a massive amount of insert()s/save()s and only occasionally get the list of sorted entities,
    you will likely gain massive performance benefits from using an alternative in-memory data shard map
    implementation using LinkedHashMap (even if sorted on insert(), but especially if sorted on reads).

    To switch map implementation, set the tech.ydb.yoj.repository.test.inmemory.impl system property
    to oninsert (for sorting data on insert()) or onget (for sorting data on first read.)

  • Bump SnakeYAML version: 2.3 -> 2.4

YOJ 2.6.19 (Query statistics)

19 Jun 21:29
Compare
Choose a tag to compare

❌ Please do not use this release as it can cause NPE in YdbRepositoryTransaction.trace(), use 2.6.21 instead.

  • Add query statistics collection and improve query traces
    • Query traces are now easier to read by humans, and also include more information. For maximum verbosity, enable the following Java system properties:
      • tech.ydb.yoj.repository.ydb.trace.dumpYdbParams: Additionally log converted query parameter values, as represented by YDB Java SDK Value
      • tech.ydb.yoj.repository.ydb.trace.verboseObjParams: Log all statement parameters, not just the first few
      • tech.ydb.yoj.repository.ydb.trace.verboseObjResults: Log all statement results, not just the first few
  • #148: Remove --!syntax_v1 directive from YQL queries generated by YOJ

YOJ 2.6.18 (Case-insensitive LIKE/CONTAINS)

06 Jun 17:22
Compare
Choose a tag to compare

⚠️ Please consult release notes for 2.6.15 and 2.6.16 if you are migrating from releases < 2.6.15. These two releases contain minor, but breaking API changes.

Features:

  • #146 (Support case-insensitive LIKE/CONTAINS)

Dependency Updates:

  • Protobuf: 3.24.0 -> 3.25.5 (fixes GHSA-735f-pc8j-v9w8)
  • Netty: 4.1.100.Final -> 4.1.118.Final (fixes GHSA-4g8c-wm8x-jfhw)
  • Jackson: 2.17.1 -> 2.17.3
  • Log4j2: 2.17.2 -> 2.23.1
  • GSON: 2.10.1 -> 2.12.1
  • errorprone annotations: 2.14.0 -> 2.36.0
  • Kotlin (optional dependency): 1.9.22 -> 1.9.24
  • Mockito (test dependency): 5.5.0 -> 5.11.0
  • SnakeYAML (test dependency, for Log4j2 YAML config in tests): 1.33 -> 2.3
  • Testcontainers (test dependency, for testing yoj-repository-ydb-v2): 1.19.1 -> 1.19..5
  • Docker Java (test dependency, for testing yoj-repository-ydb-v2): 3.3.3 -> 3.4.2
  • Kotlin Compile Testing (test dependency, for testing yoj-ext-meta-generator): 1.5.0 -> 1.6.0

Improvements:

  • 3a8d2df Stop emitting useless postLoad(<ID>) has diff transaction log message from YdbTable.postLoad()
  • c68112d Refactor YdbTable.buildStatementParts()
  • f56d654 YdbRepositoryIntegrationTest improvements

YOJ 2.5.15 (backport case-insensitive LIKE/CONTAINS from 2.6.18)

06 Jun 17:47
Compare
Choose a tag to compare

Backport feature from v2.6.18 to 2.5.x

  • #146 (Support case-insensitive LIKE/CONTAINS)

YOJ 2.6.17 (UUID YDB columns)

05 Jun 20:20
Compare
Choose a tag to compare

⚠️ Please consult release notes for 2.6.15 and 2.6.16 if you are migrating from releases < 2.6.15. These two releases contain minor, but breaking API changes.

  • #140: Add support for YDB UUID column type, via DbType.UUID specified in @Column(dbType=...) annotation (or a meta-annotation carrying (possibly transitively) a @Column annotation).
  • Update YDB SDK to 2.3.14 (was 2.3.9) and YDB Proto APIs to 1.7.1 (was 1.6.4)

YOJ 2.6.16 (API improvements)

01 May 12:51
Compare
Choose a tag to compare

⚠️ Those migrating from versions < 2.6.15 should first consult the release notes for 2.6.15.

Key changes ( ❌ denotes breaking changes )

  • YdbTable now exposes its QueryExecutor to subclasses via a protected getExecutor() method, and adds a public getSchema() method for getting entity schema used for mapping the rows of this table. This makes custom tables with custom queries a little less quirky (but this is still far from an official way of creating custom statements; that will be explored in #43).
  • ➕ New @InternalApi annotation that clearly specifies which publicly visible parts of YOJ API (interfaces, classes, methods, fields, constants, and so on) are implementation details exposed for cross-package and cross-module usage.
  • Table interface method find(Set<ID>) is now required. Direct implementors of Table must implement this new method (either by delegating to another Table or by using the internal TableQueryImpl utility). Those who extended AbstractDelegatingTable don't need to do anything.
  • Table interface has dropped the getFirstLevelCache() method. There is no replacement.
    • Direct implementors of Table should just delete their implementation of getFirstLevelCache().
    • Users of Table.getFirstLevelCache() should do one of the following:
      • Reconsider their usage of Internal API.
      • If the usage cannot be eliminated, obtain a FirstLevelCache instance by getting it from current RepositoryTransaction's TransactionLocal:
        var tx = Tx.Current.get();
        var repositoryTransaction = tx.getRepositoryTransaction();
        var transactionLocal = repositoryTransaction.getTransactionLocal();
        var cache = transactionLocal.firstLevelCache(<table descriptor>);
        First-level cache can only be used if you have a RepositoryTransaction instance or can obtain it from current Tx instance (which is established by TxManager, so if you're inside a transaction body, you can do this). First-level cache is per-table descriptor per-transaction; its behavior outside of transaction is undefined.