Migration |
Copying relational data to some
other store (database or XML), including foreign key associations
granting referential integrity. Used as the base term for both
export and import. |
Mapping: datatype-mapper, identifier-mapper, primarykey-mapper |
Used in three different contexts: 1. The finding of a new data type for a source data type that the target database does not support. Typically this happens on BOOLEAN (see class DataTypeMapper). 2. Renaming catalogs/schemas/tables/columns on migration (see class DbIdentifierMapper). 3. Primary key mapping happens when key generator must be used on import. The old and new value of the key is stored into a Map to resolve foreign key values (see interface PrimaryKeyMapper). |
Filter |
Excluding or including certain
schemas, tables, columns on migration. Neccessary for selective
migration. See class DbIdentifierMapper. |
Condition |
An SQL-abstracted WHERE clause
that reduces the number of records to be exported from a table.
Configurable via XML on export. |
Appender |
When a JDBC driver does not
report indexes and unique constraints correctly, you need to append
them to retrieved MetaData. This can be done by XML configuration,
using the elements UniqueConstraintAppender, IndexAppender and ForeignKeyAppender. |
Meta data |
Data about other data, needed
to understand and process the referenced data. In this context
this means catalogs, schemas, tables, constraints, indexes. Everything
that must be in the database to enable record import. Everthing that
is contained in JDBC DatabaseMetaData. |
Instance data |
Non-metadata, records and their
column values. Instance data would include column values, but not
their data types. To ensure consistency, JPumpDX instance data are always accompained by their meta data, on any level (Record, NamedValue) and in every context (XML, Java). So in fact they are not pure instance data, which makes these terms redundant. |
Catalog |
An SQL-92 term that defines
a container for schemas. Here it is understood in the JDBC meaning,
everything that is returned from DatabaseMetaData.getCatalogs()
call. Some vendors call this "database" or "database instance".
You always need vendor tools to create a catalog. Sometimes the catalog
name must be included in the JDBC database URL. Old databases like
Oracle use this term for other contexts. Some databases support catalogs but not schemas (MySQL), some support both (Frontbase, Daffodil), some schemas only (Oracle, McKoi, Pointbase) and some none (HSQL, InstantDB), for some this is not quite clear (Postgres, every created table appears in every catalog). |
Schema |
An SQL-92 term that defines
a container for tables. Here it is understood in the JDBC meaning,
everything that is returned from DatabaseMetaData.getSchemas() call.
Many databases provide the SQL-92 command to create a schema. Nevertheless
you might need privileges to do this. |
Natural foreign key |
One or more significant columns
(with values) that characterize a record of a non-exported table.
Needed to find that record in another database when a foreign key relation
must be established. The best natural foreign key is a unique column
that is not a key column (as key columns might get mapped). A natural
foreign key includes a catalog/schema/table name, the column name in
referencing table, referenced column names with their data types and values. |
Precision |
JDBC term, used in two different
contexts: 1. Defines the length of character/binary data types, and the digits for numbers, including digits before and after decimal point, excluding the point itself. Scale gives the digits after the decimal point. JDBC even provides a radix to report this, most databases do this with radix 10. Sun has published recommendations for JDBC data type precisions. 2. Defines the actual maximum or fixed (CHAR) length of some character/binary fields, and the maximum digits for number fields. The better term would have been "maximum length". |
Native |
Here this means database- or
product-native (not Java-native). For example, some databases provide
only uppercase identifiers, some define a limit of 30 characters for
identifiers, ... |
Identifier |
SQL and JDBC term that includes
schema-, table-, index-, constraint- and column-names. Most databases
provide identifier quoting to allow names that would conflict with
SQL keywords, e.g. "ORDER". |
Key recognizer |
When keys are alphanumeric, TableImporter
will not recognize them as mapable keys. When they must be mapped,
providing an alphanumeric key generator by a PrimaryKeyMapper implementation,
configuring a KeyRecognizer helps to mark these keys as mapable.
Mind that this is not a workaround the fact that some relational models
do not declare keys (either for performance tuning or because they are
temporal). |
<?xml version="1.0"?>
<ConnectionParameters
Url="jdbc:mckoi://localhost:9158"
DriverClass="com.mckoi.JDBCDriver"
User="test"
Password="test"
/>
<?xml version='1.0'?>
<DatabaseData>
<TableData>
<Table Name='AirCraft' Schema='TEST'>
<Column Name='id' TypeId='2' TypeName='BIGINT' PrimaryKey='true' Nullable='false'>
<ReferencedBy Table='Flight' Column='aircraft_id' Schema='TEST' Constraint='fk_aircraft'/>
</Column>
<Column Name='name' TypeId='12' TypeName='VARCHAR' MaxLength='50'/>
<Column Name='description' TypeId='12' TypeName='VARCHAR' MaxLength='250'/>
</Table>
<Rec>
<Nv Name='id'>1</Nv>
<Nv Name='name'>DC-10-A</Nv>
<Nv Name='description'>DC-10 Passenger Plane</Nv>
</Rec>
</TableData>
<TableData>
<Table Name='Flight' Schema='TEST'>
<Column Name='id' TypeId='2' TypeName='BIGINT' PrimaryKey='true' Nullable='false'/>
<Column Name='number' TypeId='12' TypeName='VARCHAR' MaxLength='50'/>
<Column Name='from' TypeId='12' TypeName='VARCHAR' MaxLength='150'/>
<Column Name='to' TypeId='12' TypeName='VARCHAR' MaxLength='150'/>
<Column Name='departs' TypeId='93' TypeName='TIMESTAMP'/>
<Column Name='arrives' TypeId='93' TypeName='TIMESTAMP'/>
<Column Name='aircraft_id' TypeId='2' TypeName='BIGINT'>
<ReferenceTo Table='AirCraft' Column='id' Schema='TEST' Constraint='fk_aircraft'/>
</Column>
</Table>
<Rec>
<Nv Name='id'>2</Nv>
<Nv Name='number'>EN-15</Nv>
<Nv Name='from'>Sheffield, England</Nv>
<Nv Name='to'>Isle Of Wight, England</Nv>
<Nv Name='aircraft_id'>1</Nv>
<Nv Name='departs'>2001-09-07 10:45:00:000 CEST</Nv>
<Nv Name='arrives'>2001-09-07 13:25:00:000 CEST</Nv>
</Rec>
</TableData>
</DatabaseData>
java -cp ... fri.util.database.tools.Migration -xml importdata.xml -db connection.xml -schema APP
java -cp ... fri.util.database.tools.Migration -db connection.xml -schema APP -xml exportdata.xml -schema APP
java -cp ... fri.util.database.tools.Migration -db source-connection.xml -schema APP -db target-connection.xml -schema TST
java -cp jpumpdx.jar;jdbcDriver.jar fri.util.database.tools.MigrationThe source (from) can be XML or database, the target (to) can be XML or database. XML for both source and target will not be accepted. One catalog, schema and table can be passed as selection. Alternatively a compound XML configuration can be given. Use the -graph option for exporting a graph of related records, which will be built from contained table conditions.
{ -xml instanceData.xml | -db connectionParameters.xml }
{ [-catalog CATALOGNAME] [-schema SCHEMANAME] [-table TABLENAME] } | [-config exportConfig.xml [-graph]]
{ -db connectionParameters.xml | -xml instanceData.xml }
{ [-catalog CATALOGNAME] [-schema SCHEMANAME] [-table TABLENAME] } | [-config importConfig.xml]
java -cp jpumpdx.jar;jdbcDriver.jar fri.util.database.tools.DropTablesBe careful with -table option. You can not drop a single table from the database that others depend on. SqlBridge relies on compound dropping in dependency order. It does not check if the dropped table is referenced by others, it just drops the foreign key constraints to others. Else it would have to set foreign keys to null, and if these are mandatory, this would cause an error.
[-catalog CATALOGNAME] [-schema SCHEMANAME] [-table TABLENAME]
java -cp jpumpdx.jar;jdbcDriver.jar fri.util.database.tools.CheckDataTypes -db ConnectionParameters.xml [-dialect DialectConfiguration.xml]This tests all supported JDBC data types by creating a table with one column that has a certain data type, inserting a record and reading it back. The created data type is checked (if it is the given one or a compatible), the read value is checked for equality. If no dialect is passed, the generic Dialect is used. It is quite difficult to realize the resulting errors. The tool proposes a dialect configuration at end, but do not take this serious, the errors are too subtile.
ConnectionParameters connectionParameters = (ConnectionParameters)You can allocate an SqlBridge directly using the XML file:
JaxbObjectFactory.getFileInstance("myConnection.xml", ConnectionParameters.class);
SqlBridge sqlBridge = SqlBridgeFactory.getInstance("myConnection.xml"); // could be already in useor
SqlBridge sqlBridge = SqlBridgeFactory.newInstance(new File("myConnection.xml")); // ensure new connection
<?xml version='1.0'?>
<Database>
<Table Name='AirCraft'>
<Column Name='id' TypeId='2' TypeName='BIGINT' PrimaryKey='true' Nullable='false'>
<ReferencedBy Table='Flight' Column='aircraft_id' Constraint='fk_aircraft'/>
</Column>
<Column Name='name' TypeId='12' TypeName='VARCHAR' MaxLength='50'/>
<Column Name='description' TypeId='12' TypeName='VARCHAR' MaxLength='250'/>
</Table>
<Table Name='Flight' >
<Column Name='id' TypeId='-5' TypeName='BIGINT' PrimaryKey='true' Nullable='false' />
<Column Name='number' TypeId='12' TypeName='VARCHAR' MaxLength='50'/>
<Column Name='from' TypeId='12' TypeName='VARCHAR' MaxLength='150'/>
<Column Name='to' TypeId='12' TypeName='VARCHAR' MaxLength='150'/>
<Column Name='aircraft_id' TypeId='-5' TypeName='BIGINT'>
<ReferenceTo Table='AirCraft' Column='id' Constraint='fk_aircraft'/>
</Column>
<Column Name='departs' TypeId='93' TypeName='TIMESTAMP'/>
<Column Name='arrives' TypeId='93' TypeName='TIMESTAMP'/>
</Table>
</Database>
String sourceCatalog = null; // assume the catalog is not defined in XML
String sourceSchema = null; // assume the schema is not defined in XML
String targetCatalog = "users"; // assume database has such a catalog
String targetSchema = "test"; // assume database lets create a schema or has such a schema
ImportConfiguration importConfig = new ImportConfiguration();
importConfig.getDbIdentifierMapper().getCatalogMapper().setMapping(sourceCatalog, targetCatalog);
importConfig.getDbIdentifierMapper().getSchemaMapper().setMapping(sourceSchema, targetSchema);
String fileName = "MyMetadata.xml";
SqlBridge sqlBridge = new SqlBridge(url, driverClass, user, password);
try {
new XmlToMetaData(fileName, sqlBridge, importConfig);
}
finally {
sqlBridge.close();
}
<?xml version='1.0'?>
<DatabaseData>
<TableData>
<Table Name='AirCraft'>
<Column Name='id' TypeId='2' TypeName='BIGINT' PrimaryKey='true' Nullable='false'>
<ReferencedBy Table='Flight' Column='aircraft_id' Constraint='fk_aircraft'/>
</Column>
<Column Name='name' TypeId='12' TypeName='VARCHAR' MaxLength='50'/>
<Column Name='description' TypeId='12' TypeName='VARCHAR' MaxLength='250'/>
</Table>
<Rec>Rec stands for record, Nv for named value (these abbreviations save a lot of space). Natural foreign keys are named Nfk, their named values Fnv (foreign named value).
<Nv Name='id'>1</Nv>
<Nv Name='name'>DC-10-A</Nv>
<Nv Name='description'>DC-10 Passenger Plane</Nv>
</Rec>
<Rec>
<Nv Name='id'>2</Nv>
<Nv Name='name'>DC-10-B</Nv>
<Nv Name='description'>DC-10 Passenger Plane</Nv>
</Rec>
</TableData>
</DatabaseData>
<!--
Possible, but strongly discouraged, as record values can only be converted
to Java objects when an import database prepares their data types!
-->
<DatabaseData>
<TableData>
<Table Name='AirCraft' />
<Rec>
<Nv Name='id'>1</Nv>
<Nv Name='name'>DC-10-A</Nv>
<Nv Name='description'>DC-10 Passenger Plane</Nv>
</Rec>
java fri.util.database.tools.Base64Converter -txt base64file -bin binaryfileor (binary to text):
java fri.util.database.tools.Base64Converter -bin binaryfile -txt base64fileThis tool will never overwrite an existing file, you got to remove this before.
String sourceCatalog = null; // assume the catalog is not defined in XML
String sourceSchema = null; // assume the schema is not defined in XML
ImportConfiguration importConfig = new ImportConfiguration();
importConfig.getDbIdentifierMapper().getCatalogMapper().setMapping(sourceCatalog, "users"); // assume DB has such a catalog
importConfig.getDbIdentifierMapper().getSchemaMapper().setMapping(sourceSchema, "test"); // DB lets create schemas or has such one
SqlBridge sqlBridge = new SqlBridge(url, driverClass, user, password);
importConfig.setPrimaryKeyMapper(sqlBridge.createPrimaryKeyMapper()); // perform primary key mapping
String fileName = "MyInstancedata.xml";
try {
new XmlToInstanceData(fileName, sqlBridge, importConfig);
}
finally {
sqlBridge.close();
}
TopDownBindingCsvColumns="customer_id, flight_id"The same is for BottomUpBindingCsvColumns, except that you must name the foreign key attributes of the foreign table (as several tables could point to the primary key of a table). You do this by naming these foreign keys with "qualifed" name, which means "catalog.schema.table.column", e.g. for table "Customer"
BottomUpBindingCsvColumns="APP.Ticket.customer_id, APP.WaitingList.customer_id"(names separated by dot, leave out catalog and schema when the database does not support such). You can use the wildcard "*" for all references.
String dialectName = "sql_server"; // must be contained case-insensitive in product nameWhen there is a problem that is not covered by the XML configuration, you can extend ConfiguredDialect (or Dialect) and register the new dialect at the factory:
String xmlConfigFile = "mydialects/sql_server.xml"; // your dialect configuration
ConfiguredDialectFactory.singleton.registerDialect(new ConfiguredDialect(dialectName, xmlConfigFile));
Dialect myDialect = new ConfiguredDialect("mysql", "mydialects/mysql.xml") {Every dialect must have a no-argument constructor. When the dialect was registered, the SqlBridge can instantiate it using ConfiguredDialectFactory. The factory finds it by the product contained in MetaData that get passed by SqlBridge. The factory will instantiate the dialect, calling the no-arg constructor. The registered dialect will never be used, it's only a "template".
// do some overrides
};
ConfiguredDialectFactory.singleton.registerDialect(myDialect);
<!ELEMENT DialectConfiguration (Supports?, Lengths?, TypeNameToIdMap?, DataDefinition?, DataManipulation?)>
<!ATTLIST DialectConfiguration
ProductName CDATA #IMPLIED
ProductVersion CDATA #IMPLIED
>
<!ELEMENT Supports (Schemas?, Catalogs?)>
<!ATTLIST Supports
Sequences (oldStyle | newStyle | impliedPerTable | none) 'newStyle'
AutoIncrementColumns (true | false) 'false'
IdentifierQuote CDATA #IMPLIED
IdentifierCase (mixed | lower | upper) 'upper'
PreparedStatements (true | false) 'true'
>
<!ELEMENT Catalogs EMPTY>
<!ATTLIST Catalogs
Supports (true | false) 'true'
InTableDefiniton (true | false) 'true'
InConstraintDefiniton (true | false) 'true'
InIndexDefiniton (true | false) 'true'
InSequenceDefiniton (true | false) 'true'
InDataManipulation (true | false) 'true'
Separator CDATA #IMPLIED
SystemCatalogs CDATA #IMPLIED
>
<!ELEMENT Schemas EMPTY>
<!ATTLIST Schemas
Supports (true | false) 'true'
InTableDefiniton (true | false) 'true'
InConstraintDefiniton (true | false) 'true'
InIndexDefiniton (true | false) 'true'
InSequenceDefiniton (true | false) 'true'
InDataManipulation (true | false) 'true'
Separator CDATA #IMPLIED
SystemSchemas CDATA #IMPLIED
>
<!ELEMENT Lengths EMPTY>
<!ATTLIST Lengths
MaxCatalogName CDATA #IMPLIED
MaxSchemaName CDATA #IMPLIED
MaxTableName CDATA #IMPLIED
MaxColumnName CDATA #IMPLIED
>
<!ELEMENT TypeNameToIdMap (Type*)>
<!ELEMENT Type EMPTY>
<!ATTLIST Type
TypeName CDATA #REQUIRED
TypeId CDATA #IMPLIED
InsertValueTypeId CDATA #IMPLIED
Precision CDATA #IMPLIED
PrecisionRadix CDATA #IMPLIED
MinScale CDATA #IMPLIED
MaxScale CDATA #IMPLIED
MustHaveLength (true | false) 'false'
CanHaveLength (true | false) 'true'
CanHavePrecision (true | false) 'true'
CanHaveScale (true | false) 'true'
CheckBinCharMaximum (true | false) 'true'
CheckNumericMaximum (true | false) 'true'
ColumnDefinitionMask CDATA #IMPLIED
AppendCreateParamsLiterally (true | false) 'false'
RetrieveProxyMethod CDATA #IMPLIED
>
<!ELEMENT DataDefinition EMPTY>
<!ATTLIST DataDefinition
CreateCatalogStatement CDATA #IMPLIED
CreateSchemaStatement CDATA #IMPLIED
AddToCreateSchema CDATA #IMPLIED
AddToCreateTable CDATA #IMPLIED
AddToCreateIndex CDATA #IMPLIED
DropCatalogStatement CDATA #IMPLIED
DropSchemaStatement CDATA #IMPLIED
AddToDropSchema CDATA #IMPLIED
AddToDropTable CDATA #IMPLIED
AddToDropConstraint CDATA #IMPLIED
AddToDropIndex CDATA #IMPLIED
AddToDropSequence CDATA #IMPLIED
AutoIncrementPrimaryKeyTypeName CDATA #IMPLIED
AddToAutoIncrementPrimaryKeyDefinition CDATA #IMPLIED
CreateIndexesOnAllKeyColumns (true | false) 'false'
NeedsTableDotIndexOnDropIndex (true | false) 'false'
ShouldDropForeignKeyConstraintsBeforeDropTable (true | false) 'true'
ShouldDropIndexesBeforeDropTable (true | false) 'true'
RequiredNumericPrimaryKeyType CDATA #IMPLIED
SequenceNamesQuery CDATA #IMPLIED
CreateSequenceStatement CDATA #IMPLIED
MustCommitCreateSequence (true | false) 'false'
DropSequenceStatement CDATA #IMPLIED
>
<!ELEMENT DataManipulation EMPTY>
<!ATTLIST DataManipulation
NextSequenceValueStatement CDATA #IMPLIED
NextAutoIncrementedValueStatement CDATA #IMPLIED
CanInsertNullOnAutoIncrementColumn (true | false) 'true'
WriteNullAs_IS_NULL_InConditions (true | false) 'true'
MustPrefetchBlob (true | false) 'false'
TrimChar (true | false) 'false'
>
fri.util.xml.jaxbThe factory is
fri.util.xml.jaxb.JaxbObjectFactory
// load an Java object from an XML File
ExportConfiguration exportConfig = JaxbObjectFactory.getFileInstance("exportConf.xml", ExportConfiguration.class);
... // do some programmatical changes
// save the Java object to a XML File
JaxbObjectFactory.putFileInstance(exportConfig, "exportConf.xml");
fri.util.database.dialect.*The ConfiguredDialect is configured by DialectConfiguration and extends the generic Dialect implementation in
fri.util.database.DialectThe Dialect class implements generic SQL behaviour and exposes a lot of protected methods to subclasses.
fri.util.database.dialect.ConfiguredDialectoverwrites the protected methods to control behaviour from its XML configuration parameters. This class could be extended again to overwrite methods for solving some complicated problems. Such subclasses must provide a no-argument constructor, and pass a dialect name to the superclass. The ConfiguredDialectFactory uses every registered dialect as template and constructs new instances from their class, using getClass().newInstance() which calls the no-arg constructor, and passing the MetaData object after construction.
fri/util/database/dialect/*.xmlNot all dialect.xml files are already tested. See the list of tested databases.
fri.util.database.SqlBridgeTo express a WHERE clause, the class QueryFilter is used. This abstracts any SQL and uses a QueryWriter class to generate SQL (which is out of control of the dialect, as it uses only the generic keywords AND, OR, IN , and parentheses). Several QueryFilter instances can be logically associated using QueryFilterGroup. You could use these filters for JDO or any medium that supports a query language, assumed that a QueryWriter can be provided. The QueryFilter classes are in
fri.util.database.queryfilter.*To manage and cache prepared statements, the package
fri.util.database.queryfilter.jdbc.PreparedStatementQueryWriter
fri.util.database.statement.*contains classes for prepared and literal statements. Every Dialect has its own statement cache instance. The literal statements do not provide LOBs and are not very good tested, as most databases provide prepared statements.
QueryFilterGroup filter = new QueryFilterGroup(new QueryFilter [] {
new QueryFilter("SURNAME", QueryFilter.LIKE, "Goslin%"),
new QueryFilterGroup(QueryFilter.AND, new QueryFilter [] {
new QueryFilter( "DEVGROUP", QueryFilter.EQUAL, new Character('J')),
new QueryFilter(QueryFilter.OR, "DEVGROUP", QueryFilter.EQUAL, new Character('C')),
}),
new QueryFilter(QueryFilter.AND_NOT, "JOB", QueryFilter.EQUAL, null)
});
sqlBridge.selectFromTable(table, filter);
fri.util.database.DataTypeMapperData types are the biggest problem when migrating data from one database to another. For example, REAL, FLOAT and DOUBLE types have other precisions in almost every database. Some databases provide only seconds precision in TIMESTAMP. Furthermore VARCHAR is restricted differently in every database, but sometimes it is not. Data types require different arguments on column definitions. Sometimes a CHAR column without precision is only one character long (which is definitely not what we want). Most CHAR type implementations fill with spaces when defined with a length. Etc., etc.
fri.util.database.migration.PrimaryKeyMapper (interface)The problem solved by primary key mapping is the fact that associations between records are done by keys that are unique only per database instance, and even per table. That means when importing records from another database you have to change these values, else they will conflict with existing ones. Even when having no data in the target database, you will likely want to create new records after import, where to take the primary key values from? You need a key generator that knows about the already created records per table.
fri.util.database.migration.NumericPrimaryKeyMapper (all style SEQUENCEs)
fri.util.database.migration.AutoIncrementPrimaryKeyMapper (for IDENTITY columns, needs a statement to retrieve the generated key after insert)
fri.util.database.migration.TableSequencePrimaryKeyMapper (workaround for databases that do not support SEQUENCES)
<DialectConfiguration>
<TypeNameToIdMap>
<Type TypeName='LONG' TypeId='1111' />
<Type TypeName='LONG RAW' TypeId='1111' />
</TypeNameToIdMap>
</DialectConfiguration>
<DialectConfiguration>
<TypeNameToIdMap>
<Type TypeName='TINYINT' InsertValueTypeId='4' /> <!-- must have Types.INTEGER (4) on INSERT -->
<Type TypeName='SMALLINT' InsertValueTypeId='4' />
</TypeNameToIdMap>
</DialectConfiguration>
<DialectConfiguration>
<Supports>
<Schemas SystemSchemas = "SYS_JDBC, SYS_INFO" />
</Supports>
<DialectConfiguration>
<DialectConfiguration ProductVersion="1.2.1, 1.2.2, 1.3.0">As you can not derive an XML file from another, you got to copy the version-specific XML file from the unspecific one.
...
public class StorageClauseAppendingDialect extends ConfiguredDialect
{
public StorageClauseAppendingDialect() {
super("oracle");
}
protected void appendToEndOfCreateTableStatement(StringBuffer sb, Table table, List unsupportedAttributes) {
if (table.getName().equals("CUSTOMER"))
sb.append(" TABLESPACE TS_CUSTOMER_TABLES STORAGE (INITIAL 20 M PCTINCREASE 2 M");
}
protected void appendToEndOfIndexDefinition(StringBuffer sb, Table table, String indexName) {
if (indexName.equals("INDEX_CUSTOMER"))
sb.append(" TABLESPACE TS_CUSTOMER_INDEXES STORAGE (INITIAL 5 M)");
}
}
....
ConfiguredDialectFactory.singleton.registerDialect(new StorageClauseAppendingDialect());
SqlBridge sqlBridge = SqlBridgeFactory.newInstance(new File("oracleConnectionParameters.xml"));
....
JDBC | InstantDB Version 3.26 | Mckoi SQL Database ( 1.0.3 ) 1.0.3 | HSQL Database Engine 1.7.2 | DB2/NT 07.02.0005 | Oracle 9.2.0.1.0 | Firebird WI-V6.3.1.4481 Firebird 1.5 | FrontBase 3.6.41 | MySQL 4.0.12-standard | PointBase 4.4GA | DaffodilDB 3.4 | PostgreSQL 7.2 | Microsoft SQL Server Product Version: 7.0.623 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-6: TINYINT |
|
|
|
- |
|
- |
|
|
- |
|
- |
|
-6: TINYINT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4: INTEGER |
|
|
|
|
|
|
|
|
|
|
|
|
4: INTEGER | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-5: BIGINT |
|
|
|
|
|
|
|
|
- |
|
|
- | -5: BIGINT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8: DOUBLE |
|
|
|
|
- |
|
|
|
|
|
|
- | 8: DOUBLE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6: FLOAT |
|
|
|
|
|
|
|
- |
|
|
- |
|
6: FLOAT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
91: DATE |
|
|
|
|
|
|
|
|
|
|
|
- | 91: DATE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12: VARCHAR |
|
|
|
|
|
|
|
|
|
|
|
|
12: VARCHAR | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-4: LONGVARBINARY |
|
|
|
|
|
|
- |
|
- |
|
- |
|
-4: LONGVARBINARY | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-7: BIT | - |
|
- | - |
|
- |
|
|
- |
|
|
|
-7: BIT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5: SMALLINT | - |
|
|
|
|
|
|
|
|
|
|
|
5: SMALLINT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7: REAL | - |
|
|
|
|
- |
|
|
|
|
|
|
7: REAL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2: NUMERIC | - |
|
|
|
|
|
|
|
|
|
|
|
2: NUMERIC | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3: DECIMAL | - |
|
|
|
- |
|
|
|
|
|
- |
|
3: DECIMAL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1: CHAR | - |
|
|
|
|
|
|
|
|
|
|
|
1: CHAR | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-1: LONGVARCHAR | - |
|
|
|
|
|
- |
|
- |
|
- |
|
-1: LONGVARCHAR | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
92: TIME | - |
|
|
|
|
|
|
|
|
|
|
- | 92: TIME | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
93: TIMESTAMP | - |
|
|
|
|
|
|
|
|
|
|
|
93: TIMESTAMP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-2: BINARY | - |
|
|
|
- | - | - |
|
- |
|
|
|
-2: BINARY | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-3: VARBINARY | - |
|
|
|
|
- |
|
|
- |
|
- |
|
-3: VARBINARY | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2000: JAVA_OBJECT | - |
|
- | - | - | - | - | - | - |
|
- | - | 2000: JAVA_OBJECT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16: BOOLEAN | - | - |
|
- | - | - | - | - |
|
|
- | - | 16: BOOLEAN | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1111: OTHER | - | - |
|
- | - |
|
|
- | - |
|
|
- | 1111: OTHER | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2004: BLOB | - | - | - |
|
|
|
|
- |
|
|
- | - | 2004: BLOB | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2005: CLOB | - | - | - |
|
|
- |
|
- |
|
|
- | - | 2005: CLOB | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
70: DATALINK | - | - | - |
|
- | - | - | - | - | - | - | - | 70: DATALINK | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-104: | - | - | - | - |
|
- | - | - | - | - | - | - | -104: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-103: | - | - | - | - |
|
- | - | - | - | - | - | - | -103: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-102: | - | - | - | - |
|
- | - | - | - | - | - | - | -102: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-101: | - | - | - | - |
|
- | - | - | - | - | - | - | -101: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2002: STRUCT | - | - | - | - |
|
- | - | - | - | - | - | - | 2002: STRUCT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2003: ARRAY | - | - | - | - |
|
- | - | - | - | - |
|
- | 2003: ARRAY | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2006: REF | - | - | - | - |
|
- | - | - | - | - | - | - | 2006: REF | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9: | - | - | - | - | - | - | - | - |
|
- | - | - | 9: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0: NULL | - | - | - | - | - | - | - | - | - |
|
- | - | 0: NULL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-11: | - | - | - | - | - | - | - | - | - | - | - |
|
-11: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-10: | - | - | - | - | - | - | - | - | - | - | - |
|
-10: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-9: | - | - | - | - | - | - | - | - | - | - | - |
|
-9: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-8: | - | - | - | - | - | - | - | - | - | - | - |
|
-8: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InstantDB Version 3.26 | Mckoi SQL Database ( 1.0.3 ) 1.0.3 | HSQL Database Engine 1.7.2 | DB2/NT 07.02.0005 | Oracle 9.2.0.1.0 | Firebird WI-V6.3.1.4481 Firebird 1.5 | FrontBase 3.6.41 | MySQL 4.0.12-standard | PointBase 4.4GA | DaffodilDB 3.4 | PostgreSQL 7.2 | Microsoft SQL Server Product Version: 7.0.623 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
db2 | mysql | hsql | frontbase | instantdb | firebird | postgres | pointbase | mssql | oracle | mckoi | daffodil | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
allProceduresAreCallable |
|
|
|
|
|
|
|
|
|
|
|
|
allProceduresAreCallable | ||||||||||||
allTablesAreSelectable |
|
|
|
|
|
|
|
|
|
|
|
|
allTablesAreSelectable | ||||||||||||
dataDefinitionCausesTransactionCommit |
|
|
|
|
|
|
|
|
|
|
|
|
dataDefinitionCausesTransactionCommit | ||||||||||||
dataDefinitionIgnoredInTransactions |
|
|
|
|
|
|
|
|
|
|
|
|
dataDefinitionIgnoredInTransactions | ||||||||||||
doesMaxRowSizeIncludeBlobs |
|
|
|
|
|
|
|
|
|
|
|
|
doesMaxRowSizeIncludeBlobs | ||||||||||||
getCatalogSeparator |
|
|
|
|
|
|
|
|
|
|
|
|
getCatalogSeparator | ||||||||||||
getCatalogTerm |
|
|
|
|
|
|
|
|
|
|
|
|
getCatalogTerm | ||||||||||||
getDatabaseProductName |
|
|
|
|
|
|
|
|
|
|
|
|
getDatabaseProductName | ||||||||||||
getDatabaseProductVersion |
|
|
|
|
|
|
|
|
|
|
|
|
getDatabaseProductVersion | ||||||||||||
getDefaultTransactionIsolation |
|
|
|
|
|
|
|
|
|
|
|
|
getDefaultTransactionIsolation | ||||||||||||
getDriverMajorVersion |
|
|
|
|
|
|
|
|
|
|
|
|
getDriverMajorVersion | ||||||||||||
getDriverMinorVersion |
|
|
|
|
|
|
|
|
|
|
|
|
getDriverMinorVersion | ||||||||||||
getDriverName |
|
|
|
|
|
|
|
|
|
|
|
|
getDriverName | ||||||||||||
getDriverVersion |
|
|
|
|
|
|
|
|
|
|
|
|
getDriverVersion | ||||||||||||
getExtraNameCharacters |
|
|
|
|
|
|
|
|
|
|
|
|
getExtraNameCharacters | ||||||||||||
getIdentifierQuoteString |
|
|
|
|
|
|
|
|
|
|
|
|
getIdentifierQuoteString | ||||||||||||
getMaxBinaryLiteralLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxBinaryLiteralLength | ||||||||||||
getMaxCatalogNameLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxCatalogNameLength | ||||||||||||
getMaxCharLiteralLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxCharLiteralLength | ||||||||||||
getMaxColumnNameLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxColumnNameLength | ||||||||||||
getMaxColumnsInGroupBy |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxColumnsInGroupBy | ||||||||||||
getMaxColumnsInIndex |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxColumnsInIndex | ||||||||||||
getMaxColumnsInOrderBy |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxColumnsInOrderBy | ||||||||||||
getMaxColumnsInSelect |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxColumnsInSelect | ||||||||||||
getMaxColumnsInTable |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxColumnsInTable | ||||||||||||
getMaxConnections |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxConnections | ||||||||||||
getMaxCursorNameLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxCursorNameLength | ||||||||||||
getMaxIndexLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxIndexLength | ||||||||||||
getMaxProcedureNameLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxProcedureNameLength | ||||||||||||
getMaxRowSize |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxRowSize | ||||||||||||
getMaxSchemaNameLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxSchemaNameLength | ||||||||||||
getMaxStatementLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxStatementLength | ||||||||||||
getMaxStatements |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxStatements | ||||||||||||
getMaxTableNameLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxTableNameLength | ||||||||||||
getMaxTablesInSelect |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxTablesInSelect | ||||||||||||
getMaxUserNameLength |
|
|
|
|
|
|
|
|
|
|
|
|
getMaxUserNameLength | ||||||||||||
getProcedureTerm |
|
|
|
|
|
|
|
|
|
|
|
|
getProcedureTerm | ||||||||||||
getSchemaTerm |
|
|
|
|
|
|
|
|
|
|
|
|
getSchemaTerm | ||||||||||||
getSearchStringEscape |
|
|
|
|
|
|
|
|
|
|
|
|
getSearchStringEscape | ||||||||||||
isCatalogAtStart |
|
|
|
|
|
|
|
|
|
|
|
|
isCatalogAtStart | ||||||||||||
isReadOnly |
|
|
|
|
|
|
|
|
|
|
|
|
isReadOnly | ||||||||||||
nullPlusNonNullIsNull |
|
|
|
|
|
|
|
|
|
|
|
|
nullPlusNonNullIsNull | ||||||||||||
nullsAreSortedAtEnd |
|
|
|
|
|
|
|
|
|
|
|
|
nullsAreSortedAtEnd | ||||||||||||
nullsAreSortedAtStart |
|
|
|
|
|
|
|
|
|
|
|
|
nullsAreSortedAtStart | ||||||||||||
nullsAreSortedHigh |
|
|
|
|
|
|
|
|
|
|
|
|
nullsAreSortedHigh | ||||||||||||
nullsAreSortedLow |
|
|
|
|
|
|
|
|
|
|
|
|
nullsAreSortedLow | ||||||||||||
storesLowerCaseIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
storesLowerCaseIdentifiers | ||||||||||||
storesLowerCaseQuotedIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
storesLowerCaseQuotedIdentifiers | ||||||||||||
storesMixedCaseIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
storesMixedCaseIdentifiers | ||||||||||||
storesMixedCaseQuotedIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
storesMixedCaseQuotedIdentifiers | ||||||||||||
storesUpperCaseIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
storesUpperCaseIdentifiers | ||||||||||||
storesUpperCaseQuotedIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
storesUpperCaseQuotedIdentifiers | ||||||||||||
supportsANSI92EntryLevelSQL |
|
|
|
|
|
|
|
|
|
|
|
|
supportsANSI92EntryLevelSQL | ||||||||||||
supportsANSI92FullSQL |
|
|
|
|
|
|
|
|
|
|
|
|
supportsANSI92FullSQL | ||||||||||||
supportsANSI92IntermediateSQL |
|
|
|
|
|
|
|
|
|
|
|
|
supportsANSI92IntermediateSQL | ||||||||||||
supportsAlterTableWithAddColumn |
|
|
|
|
|
|
|
|
|
|
|
|
supportsAlterTableWithAddColumn | ||||||||||||
supportsAlterTableWithDropColumn |
|
|
|
|
|
|
|
|
|
|
|
|
supportsAlterTableWithDropColumn | ||||||||||||
supportsBatchUpdates |
|
|
|
|
- |
|
|
|
|
|
|
|
supportsBatchUpdates | ||||||||||||
supportsCatalogsInDataManipulation |
|
|
|
|
|
|
|
|
|
|
|
|
supportsCatalogsInDataManipulation | ||||||||||||
supportsCatalogsInIndexDefinitions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsCatalogsInIndexDefinitions | ||||||||||||
supportsCatalogsInPrivilegeDefinitions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsCatalogsInPrivilegeDefinitions | ||||||||||||
supportsCatalogsInProcedureCalls |
|
|
|
|
|
|
|
|
|
|
|
|
supportsCatalogsInProcedureCalls | ||||||||||||
supportsCatalogsInTableDefinitions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsCatalogsInTableDefinitions | ||||||||||||
supportsColumnAliasing |
|
|
|
|
|
|
|
|
|
|
|
|
supportsColumnAliasing | ||||||||||||
supportsConvert |
|
|
|
|
|
|
|
|
|
|
|
|
supportsConvert | ||||||||||||
supportsCoreSQLGrammar |
|
|
|
|
|
|
|
|
|
|
|
|
supportsCoreSQLGrammar | ||||||||||||
supportsCorrelatedSubqueries |
|
|
|
|
|
|
|
|
|
|
|
|
supportsCorrelatedSubqueries | ||||||||||||
supportsDataDefinitionAndDataManipulationTransactions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsDataDefinitionAndDataManipulationTransactions | ||||||||||||
supportsDataManipulationTransactionsOnly |
|
|
|
|
|
|
|
|
|
|
|
|
supportsDataManipulationTransactionsOnly | ||||||||||||
supportsDifferentTableCorrelationNames |
|
|
|
|
|
|
|
|
|
|
|
|
supportsDifferentTableCorrelationNames | ||||||||||||
supportsExpressionsInOrderBy |
|
|
|
|
|
|
|
|
|
|
|
|
supportsExpressionsInOrderBy | ||||||||||||
supportsExtendedSQLGrammar |
|
|
|
|
|
|
|
|
|
|
|
|
supportsExtendedSQLGrammar | ||||||||||||
supportsFullOuterJoins |
|
|
|
|
|
|
|
|
|
|
|
|
supportsFullOuterJoins | ||||||||||||
supportsGroupBy |
|
|
|
|
|
|
|
|
|
|
|
|
supportsGroupBy | ||||||||||||
supportsGroupByBeyondSelect |
|
|
|
|
|
|
|
|
|
|
|
|
supportsGroupByBeyondSelect | ||||||||||||
supportsGroupByUnrelated |
|
|
|
|
|
|
|
|
|
|
|
|
supportsGroupByUnrelated | ||||||||||||
supportsIntegrityEnhancementFacility |
|
|
|
|
|
|
|
|
|
|
|
|
supportsIntegrityEnhancementFacility | ||||||||||||
supportsLikeEscapeClause |
|
|
|
|
|
|
|
|
|
|
|
|
supportsLikeEscapeClause | ||||||||||||
supportsLimitedOuterJoins |
|
|
|
|
|
|
|
|
|
|
|
|
supportsLimitedOuterJoins | ||||||||||||
supportsMinimumSQLGrammar |
|
|
|
|
|
|
|
|
|
|
|
|
supportsMinimumSQLGrammar | ||||||||||||
supportsMixedCaseIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
supportsMixedCaseIdentifiers | ||||||||||||
supportsMixedCaseQuotedIdentifiers |
|
|
|
|
|
|
|
|
|
|
|
|
supportsMixedCaseQuotedIdentifiers | ||||||||||||
supportsMultipleResultSets |
|
|
|
|
|
|
|
|
|
|
|
|
supportsMultipleResultSets | ||||||||||||
supportsMultipleTransactions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsMultipleTransactions | ||||||||||||
supportsNonNullableColumns |
|
|
|
|
|
|
|
|
|
|
|
|
supportsNonNullableColumns | ||||||||||||
supportsOpenCursorsAcrossCommit |
|
|
|
|
|
|
|
|
|
|
|
|
supportsOpenCursorsAcrossCommit | ||||||||||||
supportsOpenCursorsAcrossRollback |
|
|
|
|
|
|
|
|
|
|
|
|
supportsOpenCursorsAcrossRollback | ||||||||||||
supportsOpenStatementsAcrossCommit |
|
|
|
|
|
|
|
|
|
|
|
|
supportsOpenStatementsAcrossCommit | ||||||||||||
supportsOpenStatementsAcrossRollback |
|
|
|
|
|
|
|
|
|
|
|
|
supportsOpenStatementsAcrossRollback | ||||||||||||
supportsOrderByUnrelated |
|
|
|
|
|
|
|
|
|
|
|
|
supportsOrderByUnrelated | ||||||||||||
supportsOuterJoins |
|
|
|
|
|
|
|
|
|
|
|
|
supportsOuterJoins | ||||||||||||
supportsPositionedDelete |
|
|
|
|
|
|
|
|
|
|
|
|
supportsPositionedDelete | ||||||||||||
supportsPositionedUpdate |
|
|
|
|
|
|
|
|
|
|
|
|
supportsPositionedUpdate | ||||||||||||
supportsSchemasInDataManipulation |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSchemasInDataManipulation | ||||||||||||
supportsSchemasInIndexDefinitions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSchemasInIndexDefinitions | ||||||||||||
supportsSchemasInPrivilegeDefinitions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSchemasInPrivilegeDefinitions | ||||||||||||
supportsSchemasInProcedureCalls |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSchemasInProcedureCalls | ||||||||||||
supportsSchemasInTableDefinitions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSchemasInTableDefinitions | ||||||||||||
supportsSelectForUpdate |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSelectForUpdate | ||||||||||||
supportsStoredProcedures |
|
|
|
|
|
|
|
|
|
|
|
|
supportsStoredProcedures | ||||||||||||
supportsSubqueriesInComparisons |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSubqueriesInComparisons | ||||||||||||
supportsSubqueriesInExists |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSubqueriesInExists | ||||||||||||
supportsSubqueriesInIns |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSubqueriesInIns | ||||||||||||
supportsSubqueriesInQuantifieds |
|
|
|
|
|
|
|
|
|
|
|
|
supportsSubqueriesInQuantifieds | ||||||||||||
supportsTableCorrelationNames |
|
|
|
|
|
|
|
|
|
|
|
|
supportsTableCorrelationNames | ||||||||||||
supportsTransactions |
|
|
|
|
|
|
|
|
|
|
|
|
supportsTransactions | ||||||||||||
supportsUnion |
|
|
|
|
|
|
|
|
|
|
|
|
supportsUnion | ||||||||||||
supportsUnionAll |
|
|
|
|
|
|
|
|
|
|
|
|
supportsUnionAll | ||||||||||||
usesLocalFilePerTable |
|
|
|
|
|
|
|
|
|
|
|
- | usesLocalFilePerTable | ||||||||||||
usesLocalFiles |
|
|
|
|
|
|
|
|
|
|
|
- | usesLocalFiles | ||||||||||||
getDatabaseMajorVersion | - |
|
|
- | - |
|
- |
|
- | - | - |
|
getDatabaseMajorVersion | ||||||||||||
getDatabaseMinorVersion | - |
|
|
- | - |
|
- |
|
- | - | - |
|
getDatabaseMinorVersion | ||||||||||||
getJDBCMajorVersion | - |
|
|
- | - |
|
- |
|
- | - |
|
|
getJDBCMajorVersion | ||||||||||||
getJDBCMinorVersion | - |
|
|
- | - |
|
- |
|
- | - |
|
|
getJDBCMinorVersion | ||||||||||||
getResultSetHoldability | - |
|
|
- | - |
|
- |
|
- | - |
|
|
getResultSetHoldability | ||||||||||||
getSQLStateType | - |
|
|
- | - |
|
- |
|
- | - | - |
|
getSQLStateType | ||||||||||||
locatorsUpdateCopy | - |
|
|
- | - |
|
- | - | - | - | - | - | locatorsUpdateCopy | ||||||||||||
supportsGetGeneratedKeys | - |
|
|
- | - |
|
- |
|
- | - |
|
- | supportsGetGeneratedKeys | ||||||||||||
supportsMultipleOpenResults | - |
|
|
- | - |
|
- |
|
- | - |
|
- | supportsMultipleOpenResults | ||||||||||||
supportsNamedParameters | - |
|
|
- | - |
|
- |
|
- | - |
|
- | supportsNamedParameters | ||||||||||||
supportsSavepoints | - |
|
|
- | - |
|
- |
|
- |
|
|
- | supportsSavepoints | ||||||||||||
supportsStatementPooling | - |
|
|
- | - |
|
- |
|
- | - |
|
- | supportsStatementPooling | ||||||||||||
getDatabaseCreationVersion | - | - | - |
|
- | - | - | - | - | - | - | - | getDatabaseCreationVersion | ||||||||||||
getDriverSubVersion | - | - | - |
|
- | - | - | - | - | - | - | - | getDriverSubVersion | ||||||||||||
getObjectId | - | - | - | - | - | - | - |
|
- | - | - | - | getObjectId | ||||||||||||
getDriverMajorVersionInfo | - | - | - | - | - | - | - | - | - |
|
- | - | getDriverMajorVersionInfo | ||||||||||||
getDriverMinorVersionInfo | - | - | - | - | - | - | - | - | - |
|
- | - | getDriverMinorVersionInfo | ||||||||||||
getDriverNameInfo | - | - | - | - | - | - | - | - | - |
|
- | - | getDriverNameInfo | ||||||||||||
getDriverVersionInfo | - | - | - | - | - | - | - | - | - |
|
- | - | getDriverVersionInfo | ||||||||||||
getGetLobPrecision | - | - | - | - | - | - | - | - | - |
|
- | - | getGetLobPrecision | ||||||||||||
getLobPrecision | - | - | - | - | - | - | - | - | - |
|
- | - | getLobPrecision | ||||||||||||
db2 | mysql | hsql | frontbase | instantdb | firebird | postgres | pointbase | mssql | oracle | mckoi | daffodil |