IBCollate
Collation Drivers for InterBase
Beta Version of 11 July 2000
Installation Notes:
Windows 95/98/NT:
Unzip the ibCollate.zip file.
If you are re-installing, you will need to stop your InterBase server prior to copying gdsintl2.dll.
Copy gdsintl2.dll to the same directory as the InterBase provided gdsintl.dll
(For InterBase 6.x this is usually $INTERBASE/intl,
for InterBase 4.x and 5.x this is $INTERBASE/bin)
n $INTERBASE
is the installation directory, commonly
C:/Program Files/InterBase Corp/InterBase
If necessary, restart the InterBase server.
Test the installation by running the script intl2tst.sql. This script creates a temporary database and accesses each driver in IBCollate.
For each database that will access the collation drivers, run the script ibCollate.sql. This script defines the collation drivers so they can be accessed by the database.
Uninstallation:
Delete the file gdsintl2.dll from the installed location (as above). You may need to stop your InterBase Server for the delete to succeed.
Compatibility:
This release is compatible with Windows 95/98/NT/2000.
This release is compatible with InterBase 4.x, 5.x and 6.x.
This release has been tested on Windows 98 with InterBase 6.0 Beta.
Usage:
After installation, ibCollate drivers are used just like InterBase provided collations. The InterBase engine automatically locates and loads the gdsintl2.dll when it is necessary.
Example:
create table example (
Name character(30) character set iso8859_1 collate DE_DE_NOCASE
Address character(30) character set iso8849_1 );
These select statements automatically use DE_DE_NOCASE for the relational operation.
select * from example where Name = “McDonald”;
select * from example where Name > “Joe”;
This statement contains an explicit use of the collation.
select * from example where Address = “Main Street” collate DE_DE_NOCASE;
The Order by automatically follows case insensitive order:
select * from example order by name;
or
select * from example order by address collate DE_DE_NOCASE;
Notes:
Collation Drivers for the NeXTStep character set are not supported.
At this time, only Collation Drivers for Windows platforms are supported. (Additional platforms can be supported if someone can give me telnet access to a suitable development machine with InterBase & C installed).
Databases using the Collation Drivers in IBCollate can only be restored to machines which have IBCollate installed.
Each driver has a higher collation ID than the based-upon driver. This results in the InterBase engine preferring the ibCollate driver to the InterBase provided driver when there is an ambiguity in collation. For example:
create table test (
First char(30) collate DE_DE,
Last char(30) collate DE_DE_NOCASE );
This query has an ambiguity in Collation:
select * from test where First = Last;
InterBase will chose DE_DE_NOCASE as it has a higher collation ID. To control the collation choice:
Force DE_DE_NOCASE:
… where First collate DE_DE_NOCASE = Last;
… where First collate DE_DE_NOCASE = Last collate DE_DE_NOCASE;
Force DE_DE:
… where First = Last collate DE_DE;
… where First collate DE_DE = Last collate DE_DE;
Force ISO8859_1:
… where First collate ISO8859_1 = Last collate ISO8859_1;
Support:
Please contact me at dave@BrookstoneSystems.com.
Provided Drivers:
NOTE:
During the Beta period, all collations are named BETA_<Base Name>_NOCASE. After Beta concludes, the “BETA_” portion of the name will be dropped. (This enables bugs to be fixed without me worrying about anyone depending on indices with these collations).
The following drivers are provided with ibCollate
DOS437_NOCASE Not yet supported
PDOX_ASCII_NOCASE Not yet supported
PDOX_INTL_NOCASE Case Insensitive version of PDOX_INTL
PDOX_SWEDFIN_NOCASE Case Insensitive version of PDOX_SWEDFIN
DB_DEU437_NOCASE Case Insensitive version of DB_DEU437
DB_ESP437_NOCASE Case Insensitive version of DB_ESP437
DB_FIN437_NOCASE Case Insensitive version of DB_FIN437
DB_FRA437_NOCASE Case Insensitive version of DB_FRA437
DB_ITA437_NOCASE Case Insensitive version of DB_ITA437
DB_NLD437_NOCASE Case Insensitive version of DB_NLD437
DB_SVE437_NOCASE Case Insensitive version of DB_SVE437
DB_UK437_NOCASE Case Insensitive version of DB_UK437
DB_US437_NOCASE Case Insensitive version of DB_US437
DOS850_NOCASE Not yet supported
DB_FRC850_NOCASE Case Insensitive version of DB_FRC850
DB_DEU850_NOCASE Case Insensitive version of DB_DEU850
DB_ESP850_NOCASE Case Insensitive version of DB_ESP850
DB_FRA850_NOCASE Case Insensitive version of DB_FRA850
DB_ITA850_NOCASE Case Insensitive version of DB_ITA850
DB_NLD850_NOCASE Case Insensitive version of DB_NLD850
DB_PTB850_NOCASE Case Insensitive version of DB_PTB850
DB_SVE850_NOCASE Case Insensitive version of DB_SVE850
DB_UK850_NOCASE Case Insensitive version of DB_UK850
DB_US850_NOCASE Case Insensitive version of DB_US850
DOS865_NOCASE Not yet supported
PDOX_NORDAN4_NOCASE Case Insensitive version of PDOX_NORDAN4
DB_DAN865_NOCASE Case Insensitive version of DB_DAN865
DB_NOR865_NOCASE Case Insensitive version of DB_NOR865
DOS860_NOCASE Not yet supported
DB_PTG860_NOCASE Case Insensitive version of DB_PTG860
DOS863_NOCASE Not yet supported
DB_FRC863_NOCASE Case Insensitive version of DB_FRC863
ISO8859_1_NOCASE Not yet supported
DA_DA_NOCASE Case Insensitive version of DA_DA
DU_NL_NOCASE Case Insensitive version of DU_NL
FI_FI_NOCASE Case Insensitive version of FI_FI
FR_FR_NOCASE Case Insensitive version of FR_FR
FR_CA_NOCASE Case Insensitive version of FR_CA
DE_DE_NOCASE Case Insensitive version of DE_DE
IS_IS_NOCASE Case Insensitive version of IS_IS
IT_IT_NOCASE Case Insensitive version of IT_IT
NO_NO_NOCASE Case Insensitive version of NO_NO
ES_ES_NOCASE Case Insensitive version of ES_ES
SV_SV_NOCASE Case Insensitive version of SV_SV
EN_UK_NOCASE Case Insensitive version of EN_UK
EN_US_NOCASE Case Insensitive version of EN_US
PT_PT_NOCASE Case Insensitive version of PT_PT
DOS852_NOCASE Not yet supported
DB_CSY_NOCASE Case Insensitive version of DB_CSY
DB_PLK_NOCASE Case Insensitive version of DB_PLK
DB_SLO_NOCASE Case Insensitive version of DB_SLO
PDOX_CSY_NOCASE Case Insensitive version of PDOX_CSY
PDOX_PLK_NOCASE Case Insensitive version of PDOX_PLK
PDOX_HUN_NOCASE Case Insensitive version of PDOX_HUN
PDOX_SLO_NOCASE Case Insensitive version of PDOX_SLO
DOS857_NOCASE Not yet supported
DB_TRK_NOCASE Case Insensitive version of DB_TRK
DOS861_NOCASE Not yet supported
PDOX_ISL_NOCASE Case Insensitive version of PDOX_ISL
CYRL_NOCASE Not yet supported
DB_RUS_NOCASE Case Insensitive version of DB_RUS
PDOX_CYRL_NOCASE Case Insensitive version of PDOX_CYRL
WIN1250_NOCASE Not yet supported
PXW_CSY_NOCASE Case Insensitive version of PXW_CSY
PXW_HUNDC_NOCASE Case Insensitive version of PXW_HUNDC
PXW_PLK_NOCASE Case Insensitive version of PXW_PLK
PXW_SLOV_NOCASE Case Insensitive version of PXW_SLOV
WIN1251_NOCASE Not yet supported
PXW_CYRL_NOCASE Case Insensitive version of PXW_CYRL
WIN1252_NOCASE Not yet supported
PXW_INTL_NOCASE Case Insensitive version of PXW_INTL
PXW_INTL850_NOCASE Case Insensitive version of PXW_INTL850
PXW_NORDAN4_NOCASE Case Insensitive version of PXW_NORDAN4
PXW_SPAN_NOCASE Case Insensitive version of PXW_SPAN
PXW_SWEDFIN_NOCASE Case Insensitive version of PXW_SWEDFIN
WIN1253_NOCASE Not yet supported
PXW_GREEK_NOCASE Case Insensitive version of PXW_GREEK
WIN1254_NOCASE Not yet supported
PXW_TURK_NOCASE Case Insensitive version of PXW_TURK