Skip to content

Releases: ydb-platform/yoj-project

YOJ 2.2.6 (meta-annotations)

19 Mar 13:48
Compare
Choose a tag to compare

⚠️ There is a noticeable performance regression in v2.2.6 and v2.2.7 due to meta-annotation support. This will be fixed in the next 2.2.x releases.


  • #50: Meta-annotation support for @Column and @CustomValueType annotations: you can define annotations that define column mapping or type mapping.
    E.g., a @StringColumn UUID myColumn in an entity is equivalent to @Column(customValueType=@CustomValueType(columnClass=String.class, converter=StringValueConverter.class)) UUID myColumn.
    Same is possible for annotating types with predefined @CustomValueType annotation, see e.g. @StringValueType.
  • #51: Fix conversion errors for custom value types (#24 (comment))

YOJ v2.2.5 (minor bugfix)

07 Mar 00:00
Compare
Choose a tag to compare

#47: YdbSchemaCompatibilityChecker bugfix on SCHEMA_ERROR

YOJ 2.2.4 (minor improvements)

06 Mar 17:34
Compare
Choose a tag to compare

#46: YdbSchemaCompatibilityChecker no longer fails if it the path to the table does not exist

YOJ 2.2.3 (Remove unneeded rollbacks)

05 Mar 16:21
Compare
Choose a tag to compare
  • #41: Do not attempt a rollback() if YDB has already rolled back the transaction

YOJ 2.2.2 (More spliterator fixes)

05 Mar 13:20
Compare
Choose a tag to compare
  • #38: Make @CustomValueType annotation inheritable
  • #39: More fixes to YdbSpliterator

YOJ 2.2.1 (readTable Spliterator fixes)

04 Mar 12:24
Compare
Choose a tag to compare

#35, #37: YdbSpliterator bugfixes to properly handle all end-of-data conditions.
Required if you use the (recommended) ReadTableParams.useNewSpliterator = true option in your readTable() calls. Legacy spliterator is unaffected.

YOJ 2.2.0 (Custom Converters)

29 Feb 18:30
Compare
Choose a tag to compare
  • #21, #24: Custom converters (experimental feature)
    See @CustomValueType, ValueConverter and StringValueConverter for more information.
  • #36 Add warning about using legacy YOJ type mapping for YDB
    • In new projects, call YqlPrimitiveType.useRecommendedMappingFor(STRING, ENUM, TIMESTAMP) before using YOJ to opt into using the new recommended mapping instead.
      Recommended mapping will become the default in YOJ 3.x.
    • In old projects, call YqlPrimitiveType.useLegacyMappingFor(STRING, ENUM, TIMESTAMP) before using YOJ to explicitly use the legacy mapping.
      Legacy mapping will stop being the default in YOJ 3.x.
    • See detailed decision tree for both new and old projects: #20 (comment)
  • #34 Remove legacy in-memory repository implementation

YOJ 2.1.0 (Default Mapping Improvements)

21 Feb 22:13
Compare
Choose a tag to compare
  • Add explicit annotation for experimental and/or unstable APIs (@ExperimentalApi)
    Experimental APIs can go away or change incompatibly in any release.
  • Java<->YDB mapping improvements in yoj-repository-ydb-v2 (not backported to yoj-repository-ydb-v1)
    • #20: Allow better mapping defaults for String and Instant Java types
      Use YqlPrimitiveType.useRecommendedMappingFor(STRING, ENUM, TIMESTAMP) in all new projects.
      This new "recommended mapping" will eventually become the default.
    • #20: Map Duration -> INTERVAL YDB column by default, no @Column annotation required
  • Minor API improvements in yoj-repository-ydb-v2:
    • BREAKING(severity=low): Remove unused YqlUtils class
    • Deprecate YqlType.of() and YqlPrimitiveType.of() for removal from yoj-repository-ydb-v2

YOJ 2.0.0 (DbType API Change)

15 Feb 22:17
Compare
Choose a tag to compare

BREAKING CHANGE: DbType

  • DbType is now an enum, not an interface with String constants for YDB column data types.
    It is also in a different package and a different module than before: tech.ydb.yoj.repository.ydbtech.ydb.yoj.databind, yoj-repository-ydb-commonyoj-databind.
  • @Column annotation uses the updated DbType for its dbType parameter, not a String value.
  • This is a semi-source-compatible change: constant names have not been changed, so you adjusting your dependencies and change the package in your imports is probably enough.
    If you used DbType constants' string values outside of the @Column(dbType=...) annotation, you will now need to explicitly call DbType.typeString() to get enum constant as a String.

YOJ 1.1.3 (minor improvements)

14 Feb 21:50
Compare
Choose a tag to compare
  • #17 Allow to use byte array as Entity ID component, if it is represented by a YOJ ByteArray type
  • #18 Support all YDB options for CDC (Change Data Capture) in @Changefeed Entity annotation
  • #25 Allow to use classes with single-argument String constructor as "string-value types" (constructed by static fromString(String), static valueOf(String) or String-argument constructor; written to the database as text using toString()).