Purpose

Determines how the embedded database and the mapping of the remote data model to the relational data model is configured, customized, and updated.

Notes

This property is primarily used for initial configuration of the driver for a particular user. It is not intended for use with every connection. By default, the driver configures itself and this option is normally not needed. If ConfigOptions is specified on a connection after the initial configuration, the values specified for ConfigOptions must match the values specified for the initial configuration. The preferred method for setting the configuration options for a particular user is through the database configuration file. See Database Configuration File for details.

Valid Values

(key=value[;key=value])

where:

key
is one of the following values: AuditColumns, CustomSuffix, MapSystemColumnNames, NumberFieldMapping, or UppercaseIdentifiers.
The value is a set of key value pairs separated by a semicolon (;). The value must be enclosed in parentheses. For example:
(AuditColumns=none;UppercaseIdentifiers=true)

Behavior

AuditColumns: Determines whether the driver includes audit fields, which Salesforce adds to all objects defined in a Salesforce instance, as table columns when it defines the remote data model to relational table mapping.

The audit columns added by Salesforce are:

CreatedById

CreatedDate

IsDeleted

LastModifiedById

LastModifiedDate

SystemModstamp

Salesforce also adds the field MasterRecordId.

Valid values for AuditColumns are:

Value Description
all The driver includes the all of the audit columns and the master record id column in its table definitions.
auditOnly The driver adds only all of the audit columns in its table definitions.
masterOnly The driver adds only the MasterRecordId column in its table definitions.
none The driver does not add the audit columns or the MasterRecordId column in its table definitions.

The default value for AuditColumns is none.

In a typical Salesforce instance, not all users are granted access to the Audit or MasterRecordId columns. If AuditColumns is set to a value other than none and the driver cannot include the columns requested, the connection fails and the driver generates a SQLException with a SQLState of 08001.

CustomSuffix (Custom objects and fields only): Determines whether the driver includes or strips the "__c" suffix from the table and column names when mapping the remote data model to the relational data model. Salesforce adds the suffix to all custom objects and fields.

Valid values for CustomSuffix are:

Value Description
include The driver includes the "__c" suffix.
strip The driver strips the "__c" suffix.

The default value for CustomSuffix is strip.

KeywordConflictSuffix: Specifies a string of up to five alphanumeric characters that the driver appends to any object or field name that conflicts with a SQL engine keyword. For example, if you specify KeywordConflictSuffix=TAB, the driver maps the Case object in Salesforce to CASETAB.

Do not use a string that matches the suffix of a custom table, for example, CASEOFICE. If you specify KeywordConflictSuffix=OFICE, a name collision occurs with the Standard object CASE and the custom table CASEOFICE, or a table with a column called CASEOFICE. In this situation, the standard object CASE is returned. The custom object is ignored.

Valid values for KeywordConflictSuffix are:

Value Description
string One to five alphanumeric characters.

The default value for KeywordConflictSuffix is an empty string.

MapSystemColumnNames: Determines how the driver maps Salesforce system columns. Valid values for MapSystemColumnNames are:

Value Description
0 The driver does not change the names of the Salesforce system columns.
1 The driver changes the names of the Salesforce system columns as described:
Field Name         MappedName
----------         ----------
Id                 ROWID
Name               SYS_NAME
IsDeleted          SYS_ISDELETED
CreatedDate        SYS_CREATEDDATE
CreatedById        SYS_CREATEDBYID
LastModifiedDate   SYS_LASTMODIFIEDDATE
LastModifiedById   SYS_LASTMODIFIEDBYID
SystemModstamp     SYS_SYSTEMMODSTAMP
LastActivityDate   SYS_LASTACTIVITYDATE
OwnerId            SYS_OWNERID

The default value for MapSystemColumnNames is 1.

NumberFieldMapping: Determines how the driver maps fields defined as NUMBER in Salesforce. The Salesforce API uses DOUBLE values to transfer data to and from NUMBER fields, which can cause problems when the precision of the NUMBER field is greater than the precision of a DOUBLE value. Rounding can occur when converting large values to and from DOUBLE. The NumberFieldMapping option allows you to map NUMBER fields to the required SQL types based on their precision.

Valid values for NumberFieldMapping are:

Value Description
emulateInteger The driver maps NUMBER fields with a precision of 9 or less and a scale of 0 to the INTEGER SQL type and maps all other NUMBER fields to the DOUBLE SQL type.
alwaysDouble The driver maps all NUMBER fields to the DOUBLE SQL type regardless of their precision.
alwaysDecimal The driver maps all NUMBER fields to the DECIMAL SQL type. It can be used when the precision of the NUMBER field is greater than the precision of a DOUBLE value.

The default value for NumberFieldMapping is emulateInteger.

UppercaseIdentifiers: Defines how the driver maps identifiers. By default, the driver maps all identifier names to uppercase.

Valid values for UppercaseIdentifiers are:

Value Description
true The driver maps identifiers to uppercase.
false The driver maps identifiers to the mixed case name of the object being mapped. If mixed case identifiers are used, those identifiers must be quoted in SQL statements, and the case of the identifier, must exactly match the case of the identifier name. For example, if UppercaseIdentifiers=false, to query the Account table you would need to specify:
SELECT 'Phone', 'Website' from 'Account'

The default value for UppercaseIdentifiers is true.

Note: Do not change the value of UppercaseIdentifiers unless the data source you are connecting to has objects with names that differ only by case.

Default

AuditColumns=none;CustomSuffix=strip;KeywordConflictSuffix=;
MapSystemColumnNames=1;NumberFieldMapping=emulateInteger;
UppercaseIdentifiers=true

Data Type

String