Browse Source

ignore trailing spaces when creating text index entries

git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@1361 f203690c-595d-4dc9-a70b-905162fa7fd2
tags/jackcess-4.0.1
James Ahlborn 3 years ago
parent
commit
253e37fa2d

+ 5
- 0
src/changes/changes.xml View File

@@ -4,6 +4,11 @@
<author email="javajedi@users.sf.net">Tim McCune</author>
</properties>
<body>
<release version="4.0.1" date="TBD">
<action dev="jahlborn" type="fix">
Ignore trailing spaces when creating text index entries.
</action>
</release>
<release version="4.0.0" date="2021-01-20">
<action dev="jahlborn" type="update">
Add Automatic-Module-Name in order to make Jackcess safe to use in the

+ 2
- 8
src/main/java/com/healthmarketscience/jackcess/impl/General97IndexCodes.java View File

@@ -99,14 +99,8 @@ public class General97IndexCodes extends GeneralLegacyIndexCodes
Object value, ByteStream bout, boolean isAscending)
throws IOException
{
// first, convert to string
String str = ColumnImpl.toCharSequence(value).toString();

// all text columns (including memos) are only indexed up to the max
// number of chars in a VARCHAR column
if(str.length() > MAX_TEXT_INDEX_CHAR_LENGTH) {
str = str.substring(0, MAX_TEXT_INDEX_CHAR_LENGTH);
}
// convert to string
String str = toIndexCharSequence(value);

// record previous entry length so we can do any post-processing
// necessary for this entry (handling descending)

+ 28
- 8
src/main/java/com/healthmarketscience/jackcess/impl/GeneralLegacyIndexCodes.java View File

@@ -511,14 +511,8 @@ public class GeneralLegacyIndexCodes {
Object value, ByteStream bout, boolean isAscending)
throws IOException
{
// first, convert to string
String str = ColumnImpl.toCharSequence(value).toString();

// all text columns (including memos) are only indexed up to the max
// number of chars in a VARCHAR column
if(str.length() > MAX_TEXT_INDEX_CHAR_LENGTH) {
str = str.substring(0, MAX_TEXT_INDEX_CHAR_LENGTH);
}
// convert to string
String str = toIndexCharSequence(value);

// record previous entry length so we can do any post-processing
// necessary for this entry (handling descending)
@@ -641,6 +635,32 @@ public class GeneralLegacyIndexCodes {
bout.write(END_EXTRA_TEXT);
}

protected static String toIndexCharSequence(Object value)
throws IOException {

// first, convert to string
String str = ColumnImpl.toCharSequence(value).toString();

// all text columns (including memos) are only indexed up to the max
// number of chars in a VARCHAR column
int len = str.length();
if(len > MAX_TEXT_INDEX_CHAR_LENGTH) {
str = str.substring(0, MAX_TEXT_INDEX_CHAR_LENGTH);
len = MAX_TEXT_INDEX_CHAR_LENGTH;
}

// trailing spaces are ignored for text index entries
if((len > 0) && (str.charAt(len - 1) == ' ')) {
do {
--len;
} while((len > 0) && (str.charAt(len - 1) == ' '));

str = str.substring(0, len);
}

return str;
}

/**
* Encodes the given extra code info in the given stream.
*/

Loading…
Cancel
Save