-
Notifications
You must be signed in to change notification settings - Fork 695
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: EXPOSED-82 Inaccurate UShort column type mapping #1799
Merged
Conversation
This file contains 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
bog-walk
force-pushed
the
bog-walk/fix-ushort-type
branch
from
July 25, 2023 21:27
9b029c8
to
e0c9d12
Compare
Currently, when attempting to insert a UShort value outside of the range [0, 32767], Exposed truncates the value by calling value.toShort() before sending it to the DB, causing overflow. The value is stored successfully as a negative number because all databases (except MySQL and MariaDB) don't support unsigned types natively, which means Exposed is actually mapping to 2-byte `SMALLINT`, which accepts the range [-32768, 32767]. Change the default mapping to the next higher-up integer data type INT (technically a 4-byte storage type) and remove the truncation conversions so that an accurate value is sent/received to/from the database. To ensure that the intended behavior cannot be overriden using exec() directly, a check constraint is auto-applied to the column when registered if the database is not MySQL/MariaDB. Oracle INT is an alias for NUMBER(38), so this has been overriden to a reduced type NUMBER(6).
Add regression unit test for UShort column type
Edit KDocs to use UShort.MAX_VALUE instead of number. Fix regression test.
bog-walk
force-pushed
the
bog-walk/fix-ushort-type
branch
from
July 27, 2023 15:14
e0c9d12
to
810e793
Compare
e5l
approved these changes
Jul 28, 2023
...ests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/types/UnsignedColumnTypeTests.kt
Outdated
Show resolved
Hide resolved
joc-a
approved these changes
Jul 28, 2023
Rename regression test more appropriately.
This was referenced Jul 29, 2023
saral
pushed a commit
to saral/Exposed
that referenced
this pull request
Oct 3, 2023
* fix: EXPOSED-82 Inaccurate UShort column type mapping Currently, when attempting to insert a UShort value outside of the range [0, 32767], Exposed truncates the value by calling value.toShort() before sending it to the DB, causing overflow. The value is stored successfully as a negative number because all databases (except MySQL and MariaDB) don't support unsigned types natively, which means Exposed is actually mapping to 2-byte `SMALLINT`, which accepts the range [-32768, 32767]. Change the default mapping to the next higher-up integer data type INT (technically a 4-byte storage type) and remove the truncation conversions so that an accurate value is sent/received to/from the database. To ensure that the intended behavior cannot be overriden using exec() directly, a check constraint is auto-applied to the column when registered if the database is not MySQL/MariaDB. Oracle INT is an alias for NUMBER(38), so this has been overriden to a reduced type NUMBER(6).
DonRobo
referenced
this pull request
in DonRobo/home-former
Jul 25, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [org.jetbrains.exposed:exposed-jdbc](https://togithub.com/JetBrains/Exposed) | `0.41.1` -> `0.52.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.exposed:exposed-jdbc/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.exposed:exposed-jdbc/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.exposed:exposed-jdbc/0.41.1/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.exposed:exposed-jdbc/0.41.1/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [org.jetbrains.exposed:exposed-core](https://togithub.com/JetBrains/Exposed) | `0.41.1` -> `0.52.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.exposed:exposed-core/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.exposed:exposed-core/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.exposed:exposed-core/0.41.1/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.exposed:exposed-core/0.41.1/0.52.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>JetBrains/Exposed (org.jetbrains.exposed:exposed-jdbc)</summary> ### [`v0.52.0`](https://togithub.com/JetBrains/Exposed/blob/HEAD/CHANGELOG.md#0520) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.51.1...0.52.0) Features: - feat: EXPOSED-334 Support MERGE statement by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2047](https://togithub.com/JetBrains/Exposed/pull/2047) - feat: EXPOSED-368 Ordering on References by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2083](https://togithub.com/JetBrains/Exposed/pull/2083) - Feat: EXPOSED-396 Supports fetchBatchedResults with sorting order by [@​roharon](https://togithub.com/roharon) in [https://github.com/JetBrains/Exposed/pull/2102](https://togithub.com/JetBrains/Exposed/pull/2102) - feat: Add OffsetDateTime extension functions by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2118](https://togithub.com/JetBrains/Exposed/pull/2118) - feat: EXPOSED-295 Support subqueries with preceding LATERAL by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2095](https://togithub.com/JetBrains/Exposed/pull/2095) - feat: EXPOSED-336 Support Where clause with batchUpsert by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2120](https://togithub.com/JetBrains/Exposed/pull/2120) - feat: EXPOSED-416 Support adding special database-specific column definitions by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2125](https://togithub.com/JetBrains/Exposed/pull/2125) Bug fixes: - fix: EXPOSED-389 Coalesce operator returning nullable value by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2107](https://togithub.com/JetBrains/Exposed/pull/2107) - fix: EXPOSED-390 ASC_NULLS_LAST and DESC_NULLS_FIRST for MySQL string columns by [@​zly2006](https://togithub.com/zly2006) in [https://github.com/JetBrains/Exposed/pull/2091](https://togithub.com/JetBrains/Exposed/pull/2091) - fix: EXPOSED-402 ClassCastException when eager loading with uuid().references() by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2112](https://togithub.com/JetBrains/Exposed/pull/2112) - fix(DoubleColumnType): correctly handle precision when casting Float to DoubleColumnType for a `real` column by [@​jackgisel-RL](https://togithub.com/jackgisel-RL) in [https://github.com/JetBrains/Exposed/pull/2115](https://togithub.com/JetBrains/Exposed/pull/2115) - fix: EXPOSED-277 statementsRequiredToActualizeScheme does not check s… by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2096](https://togithub.com/JetBrains/Exposed/pull/2096) - fix: EXPOSED-411 ClassCastException when `uuid().references()` is used with `referrersOn` by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2127](https://togithub.com/JetBrains/Exposed/pull/2127) - fix: EXPOSED-412 Remove all the usage of isOldMySql function in tests by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2126](https://togithub.com/JetBrains/Exposed/pull/2126) - fix: EXPOSED-405 SQLite bugs: Table with custom ID behaves weirdly in DAO and batchInsert by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2119](https://togithub.com/JetBrains/Exposed/pull/2119) - fix: EXPOSED-393 H2 upsert with JSON column creates invalid data by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2104](https://togithub.com/JetBrains/Exposed/pull/2104) - fix: EXPOSED-400 ClassCastException when using `fetchBatchedResults` by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2113](https://togithub.com/JetBrains/Exposed/pull/2113) - EXPOSED-398 Gradle task testH2\_v1 runs tests on version 2.2.224 by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2110](https://togithub.com/JetBrains/Exposed/pull/2110) - test: EXPOSED-191 Flaky Oracle test on TC build by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2098](https://togithub.com/JetBrains/Exposed/pull/2098) Infrastructure: - Spring Boot 3.3.1 - io.github.hakky54:logcaptor 2.9.3 - Spring Framework 6.1.10 - org.junit:junit-bom 5.10.2 - chore: Fix TC Docker `version` is obsolete by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2111](https://togithub.com/JetBrains/Exposed/pull/2111) - test: EXPOSED-249 Add MySQL8 to tests for AllAnyFromBaseOp feature by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2123](https://togithub.com/JetBrains/Exposed/pull/2123) - chore: Add migration module and move `generateMigrationScript` function to it by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2128](https://togithub.com/JetBrains/Exposed/pull/2128) - Add workflow to build documentation website by [@​e5l](https://togithub.com/e5l) in [https://github.com/JetBrains/Exposed/pull/2134](https://togithub.com/JetBrains/Exposed/pull/2134) ### [`v0.51.1`](https://togithub.com/JetBrains/Exposed/blob/HEAD/CHANGELOG.md#0511) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.51.0...0.51.1) Bug fixes: - fix: EXPOSED-389 Coalesce operator returning nullable value by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2107](https://togithub.com/JetBrains/Exposed/pull/2107) ### [`v0.51.0`](https://togithub.com/JetBrains/Exposed/blob/HEAD/CHANGELOG.md#0510) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.50.1...0.51.0) Infrastructure: - Spring Boot 3.3.0 - Kotlin Coroutines 1.8.1 - Spring Framework 6.1.8 - SQLite driver 3.46.0.0 - Kotlinx Datetime JVM 0.6.0 Breaking changes: - build!: EXPOSED-315 Use the slimmer `spring-boot-starter-jdbc` instead of `spring-boot-starter-data-jdbc` by [@​bystam](https://togithub.com/bystam) [https://github.com/JetBrains/Exposed/pull/2055](https://togithub.com/JetBrains/Exposed/pull/2055)2055 - fix!: EXPOSED-360 Storing ULong.MAX_VALUE in ulong column not working by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2068](https://togithub.com/JetBrains/Exposed/pull/2068) - More details at [Breaking changes](https://jetbrains.github.io/Exposed/breaking-changes.html#0-51-0) Features: - feat: Add support for variable-length binary columns in H2 by [@​rnett](https://togithub.com/rnett) in [https://github.com/JetBrains/Exposed/pull/2100](https://togithub.com/JetBrains/Exposed/pull/2100) Bug fixes: - fix: EXPOSED-353 dateLiteral does not work on OracleDB 12c or 19c by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2057](https://togithub.com/JetBrains/Exposed/pull/2057) - fix: EXPOSED-382 ClassCastException when uuid().references() is used with EntityID column by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2079](https://togithub.com/JetBrains/Exposed/pull/2079) - fix: EXPOSED-384 CurrentTimestamp cannot be used with OffsetDateTimeColumnType by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2081](https://togithub.com/JetBrains/Exposed/pull/2081) - EXPOSED-372 UpsertStatement.resultedValues contains incorrect value by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2075](https://togithub.com/JetBrains/Exposed/pull/2075) - EXPOSED-365 Unable to insert values into `Array` column by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2072](https://togithub.com/JetBrains/Exposed/pull/2072) - EXPOSED-376 batchUpsert does not return database values on conflict by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2082](https://togithub.com/JetBrains/Exposed/pull/2082) - EXPOSED-387 Exposed Join.lastQueryAlias not working correctly by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2085](https://togithub.com/JetBrains/Exposed/pull/2085) - fix: Crash in aliased OpBoolean by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2094](https://togithub.com/JetBrains/Exposed/pull/2094) - fix: EXPOSED-395 ClassCastException with EntityId column operations by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2103](https://togithub.com/JetBrains/Exposed/pull/2103) - fix: EXPOSED-391 Cannot map columns to different types anymore by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2099](https://togithub.com/JetBrains/Exposed/pull/2099) Docs: - docs: fix typos in foreignKey documentation by [@​plplmax](https://togithub.com/plplmax) in [https://github.com/JetBrains/Exposed/pull/2077](https://togithub.com/JetBrains/Exposed/pull/2077) - docs: Specify a URL for clicks on the header logo by [@​vnikolova](https://togithub.com/vnikolova) in [https://github.com/JetBrains/Exposed/pull/2080](https://togithub.com/JetBrains/Exposed/pull/2080) ### [`v0.50.1`](https://togithub.com/JetBrains/Exposed/blob/HEAD/CHANGELOG.md#0501) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.50.0...0.50.1) Bug fixes: - fix: EXPOSED-366 inList with EntityID column causes type mismatch error by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2070](https://togithub.com/JetBrains/Exposed/pull/2070) - fix: EXPOSED-371 Fix incorrect table reference passed to EntityID instance when using value-based utility functions by [@​dzikoysk](https://togithub.com/dzikoysk) in [https://github.com/JetBrains/Exposed/pull/2074](https://togithub.com/JetBrains/Exposed/pull/2074) Docs: - update: update Exposed logo by [@​koshachy](https://togithub.com/koshachy) in [https://github.com/JetBrains/Exposed/pull/2071](https://togithub.com/JetBrains/Exposed/pull/2071) ### [`v0.50.0`](https://togithub.com/JetBrains/Exposed/blob/HEAD/CHANGELOG.md#0500) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.49.0...0.50.0) Infrastructure: - Spring Framework 6.1.6 Breaking changes: - fix!: EXPOSED-317 repetitionAttempts property is misleading by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2042](https://togithub.com/JetBrains/Exposed/pull/2042) - refactor!: Column type safety by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2027](https://togithub.com/JetBrains/Exposed/pull/2027) - More details at [Breaking changes](https://jetbrains.github.io/Exposed/breaking-changes.html#0-50-0) Deprecations: - deprecate: Raise deprecation levels of API elements by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2038](https://togithub.com/JetBrains/Exposed/pull/2038) - deprecate: EXPOSED-354 Database.connectPool() with ConnectionPoolDataSource by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2059](https://togithub.com/JetBrains/Exposed/pull/2059) Features: - feat: EXPOSED-327 Support GraalVM native images with Spring Boot by [@​joshlong](https://togithub.com/joshlong) and [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2039](https://togithub.com/JetBrains/Exposed/pull/2039). Many thanks to [joshlong](https://togithub.com/joshlong) for the support. - feat: EXPOSED-296 Add ability to check if a Sequence exists in a database by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2045](https://togithub.com/JetBrains/Exposed/pull/2045) - feat: EXPOSED-355 Support INSERT...RETURNING statement by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2060](https://togithub.com/JetBrains/Exposed/pull/2060) - feat: EXPOSED-357 Support DELETE...RETURNING statement by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2061](https://togithub.com/JetBrains/Exposed/pull/2061) - feat: EXPOSED-356 Support UPDATE...RETURNING statement by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2062](https://togithub.com/JetBrains/Exposed/pull/2062) Bug fixes: - fix(jdbc): existingIndices() misses indexes from tables with a schema by [@​jackgisel-RL](https://togithub.com/jackgisel-RL) in [https://github.com/JetBrains/Exposed/pull/2033](https://togithub.com/JetBrains/Exposed/pull/2033) - fix: EXPOSED-259 supportsSubqueryUnions is too strict for PostgreSQL 12+ by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2037](https://togithub.com/JetBrains/Exposed/pull/2037) - fix: EXPOSED-339 Oracle alias for blob does not work by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2048](https://togithub.com/JetBrains/Exposed/pull/2048) - fix: EXPOSED-340 Syntax error using upsert with MySQL8 below 8.0.19 by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2049](https://togithub.com/JetBrains/Exposed/pull/2049) - fix: EXPOSED-349 "defaultValueFun" is lost from Column in Alias by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2058](https://togithub.com/JetBrains/Exposed/pull/2058) - fix: Error when updating different entities mapped to the same table by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/2065](https://togithub.com/JetBrains/Exposed/pull/2065) - fix: EXPOSED-350 keepLoadedReferencesOutOfTransaction causes duplicate query when true by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2064](https://togithub.com/JetBrains/Exposed/pull/2064) Docs: - Move wiki to github pages documentation by [@​e5l](https://togithub.com/e5l) in [https://github.com/JetBrains/Exposed/pull/2034](https://togithub.com/JetBrains/Exposed/pull/2034) - docs: EXPOSED-313 JSON columns support libraries other than kotlinx.serialization by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2041](https://togithub.com/JetBrains/Exposed/pull/2041) - docs: Update Contributing documentation with code style details by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2051](https://togithub.com/JetBrains/Exposed/pull/2051) - docs: EXPOSED-319 H2 customEnumeration example throws by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/2056](https://togithub.com/JetBrains/Exposed/pull/2056) Tests: - Move BLOB tests to own source files by [@​obabichevjb](https://togithub.com/obabichevjb) in [https://github.com/JetBrains/Exposed/pull/2053](https://togithub.com/JetBrains/Exposed/pull/2053) ### [`v0.49.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.49.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.48.0...0.49.0) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0490) ##### New Contributors - [@​breun](https://togithub.com/breun) made their first contribution in [https://github.com/JetBrains/Exposed/pull/2031](https://togithub.com/JetBrains/Exposed/pull/2031) ### [`v0.48.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.48.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.47.0...0.48.0) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0480) #### New Contributors: - [@​elektro-wolle](https://togithub.com/elektro-wolle) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1822](https://togithub.com/JetBrains/Exposed/pull/1822) ### [`v0.47.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.47.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.46.0...0.47.0) ##### What's Changed [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0470) ##### New Contributors - [@​ShreckYe](https://togithub.com/ShreckYe) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1886](https://togithub.com/JetBrains/Exposed/pull/1886) - [@​esperar](https://togithub.com/esperar) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1877](https://togithub.com/JetBrains/Exposed/pull/1877) - [@​reidbuzby](https://togithub.com/reidbuzby) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1773](https://togithub.com/JetBrains/Exposed/pull/1773) - [@​yeogai](https://togithub.com/yeogai) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1692](https://togithub.com/JetBrains/Exposed/pull/1692) - [@​timeking](https://togithub.com/timeking) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1746](https://togithub.com/JetBrains/Exposed/pull/1746) - [@​winkey728](https://togithub.com/winkey728) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1975](https://togithub.com/JetBrains/Exposed/pull/1975) ### [`v0.46.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.46.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.45.0...0.46.0) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0460) #### New Contributors: - [@​pank-su](https://togithub.com/pank-su) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1887](https://togithub.com/JetBrains/Exposed/pull/1887) ### [`v0.45.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.45.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.44.1...0.45.0) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0450) ### [`v0.44.1`](https://togithub.com/JetBrains/Exposed/releases/tag/0.44.1) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.44.0...0.44.1) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0441) ##### New Contributors - [@​adambrangenberg](https://togithub.com/adambrangenberg) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1858](https://togithub.com/JetBrains/Exposed/pull/1858) ### [`v0.44.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.44.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.43.0...0.44.0) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0440) #### New Contributors: - [@​ymotchi](https://togithub.com/ymotchi) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1847](https://togithub.com/JetBrains/Exposed/pull/1847) - [@​Hakky54](https://togithub.com/Hakky54) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1852](https://togithub.com/JetBrains/Exposed/pull/1852) - [@​rbraeunlich](https://togithub.com/rbraeunlich) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1645](https://togithub.com/JetBrains/Exposed/pull/1645) ### [`v0.43.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.43.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.42.1...0.43.0) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0430) ### [`v0.42.1`](https://togithub.com/JetBrains/Exposed/releases/tag/0.42.1) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.42.0...0.42.1) [Change log](https://togithub.com/JetBrains/Exposed/blob/main/docs/ChangeLog.md#0421) ### [`v0.42.0`](https://togithub.com/JetBrains/Exposed/releases/tag/0.42.0) [Compare Source](https://togithub.com/JetBrains/Exposed/compare/0.41.1...0.42.0) #### What's Changed - Fix an error when updating an entity with a foreign key id (issue 880) by [@​forketyfork](https://togithub.com/forketyfork) in [https://github.com/JetBrains/Exposed/pull/1668](https://togithub.com/JetBrains/Exposed/pull/1668) - Open Sauced -> Exposed by [@​K0zka](https://togithub.com/K0zka) in [https://github.com/JetBrains/Exposed/pull/1660](https://togithub.com/JetBrains/Exposed/pull/1660) - Show length instead of value for exceeded column length by [@​simboel](https://togithub.com/simboel) in [https://github.com/JetBrains/Exposed/pull/1667](https://togithub.com/JetBrains/Exposed/pull/1667) - Document configuration when using Spring starter by [@​Kantis](https://togithub.com/Kantis) in [https://github.com/JetBrains/Exposed/pull/1654](https://togithub.com/JetBrains/Exposed/pull/1654) - EXPOSED-15 Fix running mysql tests on M1 by [@​e5l](https://togithub.com/e5l) in [https://github.com/JetBrains/Exposed/pull/1719](https://togithub.com/JetBrains/Exposed/pull/1719) - Fix grammar in error message by [@​micheljung](https://togithub.com/micheljung) in [https://github.com/JetBrains/Exposed/pull/1717](https://togithub.com/JetBrains/Exposed/pull/1717) - Fix: PostgreSQLDialect.modifyColumn is not able to drop default values by [@​michael-markl](https://togithub.com/michael-markl) in [https://github.com/JetBrains/Exposed/pull/1716](https://togithub.com/JetBrains/Exposed/pull/1716) - Fix UInt value out of bounds by [@​keta1](https://togithub.com/keta1) in [https://github.com/JetBrains/Exposed/pull/1709](https://togithub.com/JetBrains/Exposed/pull/1709) - fix: EXPOSED-16 Failed tests in KotlinTimeTests by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1724](https://togithub.com/JetBrains/Exposed/pull/1724) - EXPOSED-21 Primary key constraint not created by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1728](https://togithub.com/JetBrains/Exposed/pull/1728) - EXPOSED-19 Max timestamp in SQLite not working by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1725](https://togithub.com/JetBrains/Exposed/pull/1725) - docs: Add contribution guide by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1729](https://togithub.com/JetBrains/Exposed/pull/1729) - fix: EXPOSED-27 Id is not in record set by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1731](https://togithub.com/JetBrains/Exposed/pull/1731) - fix: EXPOSED-28 Update with join fails on H2 in MySql mode by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1732](https://togithub.com/JetBrains/Exposed/pull/1732) - fix: EXPOSED-29 Cannot set nullable composite column in InsertStatement by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1733](https://togithub.com/JetBrains/Exposed/pull/1733) - fix: EXPOSED-23 H2 unsupported indexing behavior by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1734](https://togithub.com/JetBrains/Exposed/pull/1734) - fix: EXPOSED-31 Landing Readme links and demo code by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1736](https://togithub.com/JetBrains/Exposed/pull/1736) - Add CHARINDEX function for sqlserver by [@​eukleshnin](https://togithub.com/eukleshnin) in [https://github.com/JetBrains/Exposed/pull/1675](https://togithub.com/JetBrains/Exposed/pull/1675) - feat: EXPOSED-32 Support string function CHAR_LENGTH by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1737](https://togithub.com/JetBrains/Exposed/pull/1737) - feat: EXPOSED-37 Support null-safe equality comparison by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1739](https://togithub.com/JetBrains/Exposed/pull/1739) - Remove unnecessary parentheses for functions by [@​Maxr1998](https://togithub.com/Maxr1998) in [https://github.com/JetBrains/Exposed/pull/1642](https://togithub.com/JetBrains/Exposed/pull/1642) - fix: EXPOSED-36 LocalDate comparison in SQLite by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1741](https://togithub.com/JetBrains/Exposed/pull/1741) - fix: EXPOSED-42 Can't create BLOB column with default value by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1740](https://togithub.com/JetBrains/Exposed/pull/1740) - feat: EXPOSED-45 Support single statement UPSERT by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1743](https://togithub.com/JetBrains/Exposed/pull/1743) - fix: EXPOSED-49 Replace statement defined as upsert statement by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1747](https://togithub.com/JetBrains/Exposed/pull/1747) - Note breaking change in 0.40.1 by [@​timmc](https://togithub.com/timmc) in [https://github.com/JetBrains/Exposed/pull/1723](https://togithub.com/JetBrains/Exposed/pull/1723) - fix: EXPOSED-48 Incorrect statistics aggregate functions by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1745](https://togithub.com/JetBrains/Exposed/pull/1745) - feat: EXPOSED-52 Support batch UPSERT by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1749](https://togithub.com/JetBrains/Exposed/pull/1749) - Sum batch results for inserts by [@​johnzeringue](https://togithub.com/johnzeringue) in [https://github.com/JetBrains/Exposed/pull/1641](https://togithub.com/JetBrains/Exposed/pull/1641) - docs: EXPOSED-55 Change TC build status badge links by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1750](https://togithub.com/JetBrains/Exposed/pull/1750) - task: EXPOSED-58 Revisit detekt.yml and fix existing issues by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1752](https://togithub.com/JetBrains/Exposed/pull/1752) - Add samples folder by [@​e5l](https://togithub.com/e5l) in [https://github.com/JetBrains/Exposed/pull/1753](https://togithub.com/JetBrains/Exposed/pull/1753) - fix: EXPOSED-57 BatchInsertStatement can't be used with MySQL upsert by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1754](https://togithub.com/JetBrains/Exposed/pull/1754) - feat: EXPOSED-47 Add support for SET DEFAULT reference option by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1744](https://togithub.com/JetBrains/Exposed/pull/1744) - docs: Correct broken links after README was moved by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1758](https://togithub.com/JetBrains/Exposed/pull/1758) - Add API tracking by [@​e5l](https://togithub.com/e5l) in [https://github.com/JetBrains/Exposed/pull/1756](https://togithub.com/JetBrains/Exposed/pull/1756) - control whether arguments should be inlined or passed in. by [@​lure](https://togithub.com/lure) in [https://github.com/JetBrains/Exposed/pull/1621](https://togithub.com/JetBrains/Exposed/pull/1621) - build: Perform apiDump to fix failed merge build by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1760](https://togithub.com/JetBrains/Exposed/pull/1760) - fix: EXPOSED-64 Fix Detekt SpreadOperator warnings by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1759](https://togithub.com/JetBrains/Exposed/pull/1759) - feat: Add partial index support (Postgres only) by [@​lure](https://togithub.com/lure) in [https://github.com/JetBrains/Exposed/pull/1748](https://togithub.com/JetBrains/Exposed/pull/1748) - add afterStatementPrepared method to StatementInterceptor by [@​lure](https://togithub.com/lure) in [https://github.com/JetBrains/Exposed/pull/1622](https://togithub.com/JetBrains/Exposed/pull/1622) - Bump org.jetbrains.kotlin.jvm from 1.7.21 to 1.8.22 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/JetBrains/Exposed/pull/1755](https://togithub.com/JetBrains/Exposed/pull/1755) - Create Documetation Website by [@​e5l](https://togithub.com/e5l) in [https://github.com/JetBrains/Exposed/pull/1757](https://togithub.com/JetBrains/Exposed/pull/1757) - feat: EXPOSED-60 Support json/json(b) column types by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1762](https://togithub.com/JetBrains/Exposed/pull/1762) - feat: EXPOSED-66 Extend partial index to SQLServer and SQLite by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1763](https://togithub.com/JetBrains/Exposed/pull/1763) - \[EXPOSED-46] Add a possibility to set a delay for the repetition attempts by [@​mgrati](https://togithub.com/mgrati) in [https://github.com/JetBrains/Exposed/pull/1742](https://togithub.com/JetBrains/Exposed/pull/1742) - chore: Set up Maven publishing by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1761](https://togithub.com/JetBrains/Exposed/pull/1761) - feat: EXPOSED-69 Extend json support to H2, Oracle (text) and DAO by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1766](https://togithub.com/JetBrains/Exposed/pull/1766) - feat: EXPOSED-68 Add more json/json(b) column functions by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1770](https://togithub.com/JetBrains/Exposed/pull/1770) - chore: remove detekt ClassNaming issues by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1769](https://togithub.com/JetBrains/Exposed/pull/1769) - deprecate: EXPOSED-84 Raise deprecation levels of API elements by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1771](https://togithub.com/JetBrains/Exposed/pull/1771) - chore: Fix more detekt issues by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1772](https://togithub.com/JetBrains/Exposed/pull/1772) - docs: add a point in CONTRIBUTING.md regarding API check by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1776](https://togithub.com/JetBrains/Exposed/pull/1776) - chore: add detekt IntelliJ plugin configuration to detekt.xml by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1775](https://togithub.com/JetBrains/Exposed/pull/1775) - test: Add json/jsonb array tests by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1778](https://togithub.com/JetBrains/Exposed/pull/1778) - test: Add jsonb datetime tests by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1780](https://togithub.com/JetBrains/Exposed/pull/1780) - QueryBuilder.registerArguments - avoid potentially expensive valueToString call unless we need to sort values by [@​zhurs](https://togithub.com/zhurs) in [https://github.com/JetBrains/Exposed/pull/1779](https://togithub.com/JetBrains/Exposed/pull/1779) - [#​623](https://togithub.com/JetBrains/Exposed/issues/623) Add support of window functions in Exposed DSL by [@​Legohuman](https://togithub.com/Legohuman) in [https://github.com/JetBrains/Exposed/pull/1651](https://togithub.com/JetBrains/Exposed/pull/1651) - fix: EXPOSED-50 customEnumeration reference column error by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1785](https://togithub.com/JetBrains/Exposed/pull/1785) - feat: EXPOSED-89 Support functions in Create Index by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1788](https://togithub.com/JetBrains/Exposed/pull/1788) - fix: EXPOSED-91 NPE in existingIndices() with function index by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1791](https://togithub.com/JetBrains/Exposed/pull/1791) - chore: Add blobParam function. by [@​spand](https://togithub.com/spand) in [https://github.com/JetBrains/Exposed/pull/1672](https://togithub.com/JetBrains/Exposed/pull/1672) - build(deps): bump org.jetbrains.kotlin.jvm from 1.8.22 to 1.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/JetBrains/Exposed/pull/1784](https://togithub.com/JetBrains/Exposed/pull/1784) - fix: SQLServerException: The port number -1 is not valid. by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1789](https://togithub.com/JetBrains/Exposed/pull/1789) - build: run apiDump by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1792](https://togithub.com/JetBrains/Exposed/pull/1792) - fix: EXPOSED-80 Set repetition policy for suspended transactions by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1774](https://togithub.com/JetBrains/Exposed/pull/1774) - chore: Modify max_line_length value in .editorconfig to match that of detekt.yml by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1790](https://togithub.com/JetBrains/Exposed/pull/1790) - build(deps): bump org.jetbrains.kotlin.plugin.serialization from 1.8.22 to 1.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/JetBrains/Exposed/pull/1783](https://togithub.com/JetBrains/Exposed/pull/1783) - refactor: EXPOSED-88 Remove kotlinx-serialization dep from exposed-core by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1793](https://togithub.com/JetBrains/Exposed/pull/1793) - chore: Integrate detekt with GitHub Actions by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1765](https://togithub.com/JetBrains/Exposed/pull/1765) - chore: Remove more detekt issues (part 4) by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1794](https://togithub.com/JetBrains/Exposed/pull/1794) - fix: Exclude deleted and renamed files from detekt GitHub Action by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1795](https://togithub.com/JetBrains/Exposed/pull/1795) - fix: EXPOSED-97 Unsigned column types truncate MySQL values by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1796](https://togithub.com/JetBrains/Exposed/pull/1796) - feat: Add spring mutli container support by [@​FullOfOrange](https://togithub.com/FullOfOrange) in [https://github.com/JetBrains/Exposed/pull/1781](https://togithub.com/JetBrains/Exposed/pull/1781) - docs: Reorganize structure and rewrite some pages by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1764](https://togithub.com/JetBrains/Exposed/pull/1764) - fix: EXPOSED-98: Add instructions to log-in to see and log issues by [@​jasonjmcghee](https://togithub.com/jasonjmcghee) in [https://github.com/JetBrains/Exposed/pull/1798](https://togithub.com/JetBrains/Exposed/pull/1798) - test: Add test coverage for column transforms by [@​oharaandrew314](https://togithub.com/oharaandrew314) in [https://github.com/JetBrains/Exposed/pull/1687](https://togithub.com/JetBrains/Exposed/pull/1687) - fix: EXPOSED-83 createMissingTablesAndColumns not detecting missing PK by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1797](https://togithub.com/JetBrains/Exposed/pull/1797) - test: Fix failing exposed-tests in SQL Server by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1801](https://togithub.com/JetBrains/Exposed/pull/1801) - fix: EXPOSED-54 CaseWhen.Else returns narrow Expression<R> by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1800](https://togithub.com/JetBrains/Exposed/pull/1800) - chore: Release 0.42.0 by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1804](https://togithub.com/JetBrains/Exposed/pull/1804) - feat: EXPOSED-43 Add support for timestamp with time zone by [@​joc-a](https://togithub.com/joc-a) in [https://github.com/JetBrains/Exposed/pull/1787](https://togithub.com/JetBrains/Exposed/pull/1787) - fix: EXPOSED-99 SchemaUtils incorrectly compares datetime defaults by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1802](https://togithub.com/JetBrains/Exposed/pull/1802) - test: Fix failing exposed-tests in Oracle by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1803](https://togithub.com/JetBrains/Exposed/pull/1803) - fix: EXPOSED-82 Inaccurate UShort column type mapping by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1799](https://togithub.com/JetBrains/Exposed/pull/1799) - test: Fix failing datetime tests in MariaDB by [@​bog-walk](https://togithub.com/bog-walk) in [https://github.com/JetBrains/Exposed/pull/1805](https://togithub.com/JetBrains/Exposed/pull/1805) #### New Contributors - [@​forketyfork](https://togithub.com/forketyfork) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1668](https://togithub.com/JetBrains/Exposed/pull/1668) - [@​K0zka](https://togithub.com/K0zka) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1660](https://togithub.com/JetBrains/Exposed/pull/1660) - [@​simboel](https://togithub.com/simboel) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1667](https://togithub.com/JetBrains/Exposed/pull/1667) - [@​Kantis](https://togithub.com/Kantis) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1654](https://togithub.com/JetBrains/Exposed/pull/1654) - [@​e5l](https://togithub.com/e5l) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1719](https://togithub.com/JetBrains/Exposed/pull/1719) - [@​micheljung](https://togithub.com/micheljung) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1717](https://togithub.com/JetBrains/Exposed/pull/1717) - [@​michael-markl](https://togithub.com/michael-markl) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1716](https://togithub.com/JetBrains/Exposed/pull/1716) - [@​keta1](https://togithub.com/keta1) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1709](https://togithub.com/JetBrains/Exposed/pull/1709) - [@​bog-walk](https://togithub.com/bog-walk) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1728](https://togithub.com/JetBrains/Exposed/pull/1728) - [@​eukleshnin](https://togithub.com/eukleshnin) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1675](https://togithub.com/JetBrains/Exposed/pull/1675) - [@​timmc](https://togithub.com/timmc) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1723](https://togithub.com/JetBrains/Exposed/pull/1723) - [@​johnzeringue](https://togithub.com/johnzeringue) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1641](https://togithub.com/JetBrains/Exposed/pull/1641) - [@​mgrati](https://togithub.com/mgrati) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1742](https://togithub.com/JetBrains/Exposed/pull/1742) - [@​zhurs](https://togithub.com/zhurs) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1779](https://togithub.com/JetBrains/Exposed/pull/1779) - [@​Legohuman](https://togithub.com/Legohuman) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1651](https://togithub.com/JetBrains/Exposed/pull/1651) - [@​FullOfOrange](https://togithub.com/FullOfOrange) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1781](https://togithub.com/JetBrains/Exposed/pull/1781) - [@​jasonjmcghee](https://togithub.com/jasonjmcghee) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1798](https://togithub.com/JetBrains/Exposed/pull/1798) - [@​oharaandrew314](https://togithub.com/oharaandrew314) made their first contribution in [https://github.com/JetBrains/Exposed/pull/1687](https://togithub.com/JetBrains/Exposed/pull/1687) **Full Changelog**: JetBrains/Exposed@0.41.1...0.42.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View the [repository job log](https://developer.mend.io/github/DonRobo/home-former). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MzguMCIsInVwZGF0ZWRJblZlciI6IjM3LjQzOC4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
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.
Current State of
UShortColumnType
(excluding MySQL/MariaDB):When attempting to insert a
UShort
value outside of the range0..32767
, Exposed first truncates the value by callingvalue.toShort()
before sending it to the DB:The value is successfully stored as a negative number because most databases don't support unsigned types natively, which means Exposed is actually mapping UShort to 2-byte
SMALLINT
, which accepts the range-32768..32767
. The value returned from the DB is the negative overflow and anIllegalStateException
is thrown byvalueFromDB()
.Note: The compiler will prevent a negative number from being assigned to
it[unsignedShort]
, but there is nothing stopping the DB from storing a negative number that is inserted directly using raw SQL:So the current state is misleading on 2 fronts:
UShort
values despite no compilation errors or logged warnings.Possible Solutions:
IllegalArgumentException
if a user tries to insert a value outside the range0..32767
. This would mean making it very clear in KDocs that the columns are constrained by Exposed to the range0..32767
but that the DB itself still allows negative values.INT
in this case. The full UShort range could then be stored but this would still allow intended behavior to be overriden usingexec()
. That means both negative values could be stored, as well as much larger values inUShort.MAX_VALUE..Int.MAX_VALUE
.INT
in this case, and add a check constraint whenushort()
is registered. This would ensure that only UShort values are accepted, even if raw SQL is used. [Implemented]Saving Storage Space:
While using a larger numeric type with a check constraint is a common solution for supporting unsigned integers, some users may not want to use 4 bytes of storage for every number. If the end-goal of the user is a column that only uses 2-bytes but does not allow negative values and they know for a fact that inserted data won't exceed 32767, then the recommendation should be to use a
short()
column with a manually created check constraint: