It is recommended that you use VARCHAR in the consolidated database rather than CHAR, so that this problem does not occur.
This option helps resolve differences between the SQL Anywhere CHAR data type and the CHAR or VARCHAR data type used by the
consolidated database. The SQL Anywhere CHAR data type is equivalent to VARCHAR. However, in most consolidated databases that
are not SQL Anywhere, the CHAR(n) data type is blank-padded to n characters.
When -b is specified, the MobiLink server removes trailing blanks from strings for columns of type CHAR, VARCHAR, LONG CHAR,
or LONG VARCHAR if the column on the remote database is a string. The trimmed data is then downloaded to the remote databases.
This option can also be used to properly detect conflict updates when the upload_fetch or upload_fetch_column_conflict script
is used. For each upload update row, the MobiLink server fetches the row from the consolidated database for the given primary
key, compares the row with the pre-image of the update, and then determines whether the update is a conflict update. When
-b is used, MobiLink trims trailing blanks from columns of type CHAR, VARCHAR, LONG CHAR, or LONG VARCHAR before doing the
comparison.
If the -b option is not used, a primary-key value of 'abc' uploaded from a SQL Anywhere or UltraLite remote database to a
CHAR(10) column in the consolidated database becomes 'abc' followed by seven blank spaces. If the same row is downloaded,
then it appears on the remote database as 'abc' followed by seven spaces. If the remote database is not blank-padded, then
the remote database contains two rows: both 'abc' and 'abc' followed by seven spaces. There is now a duplicate row on the
remote.
If the -b option is used, a primary-key value of 'abc' uploaded from a SQL Anywhere or UltraLite remote database to a CHAR(10)
column in the consolidated database becomes 'abc' followed by seven spaces. Seven spaces still pad the value to ten characters,
but if the same row is downloaded, then MobiLink server strips the trailing spaces, and the value appears on the remote database
as 'abc'. The -b option fixes the duplicate row problem.