Salesforce

Error 4686 with international collations need the new *.wbt word break tables

« Go Back

Information

 
TitleError 4686 with international collations need the new *.wbt word break tables
URL NameP57204
Article Number000162952
EnvironmentProduct: Progress
Version: 9.x
Product: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Other: i18N
Question/Problem Description
Error 4686 with international collations need the new *.wbt word break tables
Error 4684 when using CONTAINS with international collations.
Steps to Reproduce
Clarifying Information
Error MessageQBW syntax error - an asterisk (*) is allowed only at the end of a word. (4686)
Defect Number
Enhancement Number
Cause
Many non BASIC collations may fail with the error 4686 because the database does not have the correct Word Break Table applied for the collation used.  With Progress 9 several new word break tables were added with the *.wbt extension in the DLC/prolang/convmap directory.  Depending on the database codepage used, one of these should be applied. Word-break tables are required by word indexing, which accelerates the processing of queries that use the CONTAINS operator of the WHERE clause for example.
Resolution
Apply the Word-Break table to match the Codepage used.

1.   Ensure there is a valid backup of the database, in the event it is necessary to revert to.

2.   Determine database code page: Data Administration > Utilities > Information

3.   Find the appropriate *.wbt file from DLC/prolang/convmap depending on the database codepage.
Word Break File  Codepage
m1250bas.wbt     1250 (Windows Latin-2 Central Europe)
m1251bas.wbt     1251 (Windows Cyrillic)
m1252bas.wbt     1252 (Windows Latin-1)
m1253bas.wbt     1253 (Windows Greek)
m1254bas.wbt     1254 (Turkish)
m1255bas.wbt     1255 (Windows Hebrew)
m1256bas.wbt     1256 (Windows Arabic)
m1257bas.wbt     1257 (Windows Baltic Rim)
big5-bas.wbt     big-5
cp936bas.wbt     cp936
cp949bas.wbt     cp949
cp950bas.wbt     cp950
cp950hkbas.wbt   cp950-hkscs
eucj-bas.wbt     eucjis
g2312bas.wbt     gb2312
iso01bas.wbt     ISO-8859-1 (ISO Latin-1)
iso15bas.wbt     ISO-8859-15 (ISO Latin-15)
k5601bas.wbt     ksc5601
sjis-bas.wbt     shift-jis
utf8-bas.wbt     utf-8

4.   Compile the new version of word break table file to a number <N>:

$   proutil -C wbreak-compiler <file-name> <N>

Where file-name is the *.wbt file found previously and <N> is number between 1 and 255

5.  Provide access to word-break table

Place the newly created compiled version of the word-break table in: DLC/proword.<N>  (The Progress install directory).
Alternatively define an Environment Variable PROWD<N>=<file-directory>\proword.<N> (In Version 9.0A, you must set the environment variable PROWD<N>)

6.  Associate the word-break table with the database
$   proutil <database> -C word-rules <N>

7.  Rebuild all Word indexes:

To find all Word Indexes, run the following Query on the _file, _index metaschema tables.
 
OUTPUT TO indexword.file.
    
FOR EACH _file WHERE _file-number > 0 AND NOT _file-name BEGINS "SYS":
    FOR EACH _index OF _file WHERE _Wordidx = 1:
         PUT UNFORM _file-name SKIP _index-name SKIP.
    END.
END.

OUTPUT CLOSE.

So that the database's word indexes reflect the changes in the word-break table, these indexes need to be rebuilt. Alternatively all indexes can be rebuilt.
  • Offline IDXBUILD or IDXFIX utilities can be used.
  • Online IDXACTIVATE utility can be used, but given the nature of word indexes (they're big) this is best done offline.
Workaround
Notes
References to Other Documentation

Progress Documentation
OpenEdge Development: Internationalizing Applications, Word-break tables

Progress Articles 
Keyword Phrase
Last Modified Date11/20/2020 7:21 AM

Powered by