fix: support Russian collating sort order (LCID 1049) for text indexes#5
Merged
spannm merged 1 commit intospannm:masterfrom Apr 1, 2026
Merged
Conversation
Contributor
Author
|
@spannm hello, can you please merge my PR and do a release ? 😃 |
Jackcess previously threw UnsupportedOperationException for any write operation on a table with a text index using the Russian/Cyrillic sort order (LCID 1049). This blocked all INSERT/UPDATE statements via UCanAccess on Russian-locale Access databases. Changes: - ColumnImpl: add RUSSIAN_SORT_ORDER constant (LCID 1049, version 0) - ColumnImpl.SortOrder: update Javadoc table to document both Turkish and Russian sort orders as supported (interim implementation) - IndexData.newColumnDescriptor(): dispatch RUSSIAN_SORT_ORDER to new RussianTextColumnDescriptor instead of falling through to ReadOnlyColumnDescriptor - IndexData.RussianTextColumnDescriptor: new inner class; delegates writeNonNullValue() to GeneralLegacyIndexCodes to produce structurally valid MS Access index bytes; honours isAscending() for DESC indexes - IndexData: update class-level and method Javadoc to include Russian Trade-off: Russian/Cyrillic-specific collation weights are not yet encoded correctly. Index-based ORDER BY on Russian text may sort in General-Legacy rather than Russian order. A Compact & Repair in MS Access will rebuild the index with full Russian collation. A complete fix requires reverse-engineering the MS Access byte tables for LCID 1049 (see RussianTextColumnDescriptor Javadoc). Relates to: ucanaccess#35 (applied same fix pattern as Turkish LCID 1055)
ebc627a to
66fb383
Compare
Owner
|
Thanks for your contribution, @tiger-seo |
This file contains hidden or 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
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.
Jackcess previously threw UnsupportedOperationException for any write operation
on a table with a text index using the Russian/Cyrillic sort order (LCID 1049).
This blocked all INSERT/UPDATE statements via UCanAccess on Russian-locale
Access databases.
Changes:
Russian sort orders as supported (interim implementation)
RussianTextColumnDescriptor instead of falling through to
ReadOnlyColumnDescriptor
writeNonNullValue() to GeneralLegacyIndexCodes to produce structurally
valid MS Access index bytes; honours isAscending() for DESC indexes
Trade-off: Russian/Cyrillic-specific collation weights are not yet encoded
correctly. Index-based ORDER BY on Russian text may sort in General-Legacy
rather than Russian order. A Compact & Repair in MS Access will rebuild the
index with full Russian collation. A complete fix requires reverse-engineering
the MS Access byte tables for LCID 1049 (see RussianTextColumnDescriptor
Javadoc).
Relates to: ucanaccess#35 (applied same fix pattern as Turkish LCID 1055)