skip to main content
OpenEdge Data Management: DataServer for ODBC
Programming Considerations : Database design issues : Case sensitivity
 

Case sensitivity

By default, an OpenEdge database is case insensitive; however, you can set the attributes of a field to define it as either case sensitive or case insensitive. If you intend to do this, consider the following:
*Schema pull criteria is case sensitive against SQL database qualifiers.
*Pattern-matching literals in data-source access statements retrieve case-sensitive data.
*OpenEdge considers the user ID and password submitted at connection time to be case sensitive.
If an indexed field is case insensitive, OpenEdge does not distinguish between uppercase and lowercase letters for that index when sorting or matching data. In general, this flexibility in an application makes data entry easier for end users because they can enter lowercase or uppercase versions of an index. However, if you want to enforce an uppercase/lowercase distinction in your applications, set the attribute to case sensitive.
During a migration, the DataServer for ODBC tries to maintain compatibility with OpenEdge case-insensitivity through the use of shadow columns. Case-sensitivity is particularly useful for indexes that are migrated from OpenEdge applications to an ODBC data source. Shadow columns are an extra column added to record format created in the foreign database immediately before an indexed column. In most cases, this column is named _S#_column (exceptions are noted in the following sections).
If you are going to use a case-insensitive code page in the foreign data source, then OpenEdge case-insensitivity will be maintained automatically by your code page configuration. In such cases, shadow columns are not necessary and should be turned off during migration.
Keep in mind that when schema from an ODBC data source is pulled back into a schema holder database and shadow columns do not exist, the columns are still case-insensitive, by default. If the code page used in the ODBC data source is case-sensitive and shadow columns were not added for case-insensitive columns during migration and/or do not exist in the ODBC data source, OpenEdge compatibility (without shadow columns) is maintained by applying the UPPER function to SQL. In some cases, use of the UPPER function can produce less optimized SQL. Therefore, if case-insensitivity is not required, you can simply turn on case-sensitivity in the Dictionary for that column to avoid applying the UPPER function. If case-insensitivity is required, Progress recommends adding shadow columns to your foreign database for columns that are case-insensitive and pulling those definitions back into your schema holder. See Adding extended ABL support for instructions on maintaining case-insensitive compatibility in an existing foreign data source.
Specific ODBC data sources handle case sensitivity as described in the following sections.
In this section: 
* DB2 UBD
* Sybase