com.mysql.jdbc

## Class JDBC4DatabaseMetaDataUsingInfoSchema

- java.lang.Object
- - com.mysql.jdbc.DatabaseMetaData
  - - com.mysql.jdbc.DatabaseMetaDataUsingInfoSchema
    - - com.mysql.jdbc.JDBC4DatabaseMetaDataUsingInfoSchema

All Implemented Interfaces:
  java.sql.DatabaseMetaData, java.sql.Wrapper

    public class JDBC4DatabaseMetaDataUsingInfoSchema
    extends DatabaseMetaDataUsingInfoSchema

### Nested Class Summary

### Nested classes/interfaces inherited from class com.mysql.jdbc.DatabaseMetaDataUsingInfoSchema

`DatabaseMetaDataUsingInfoSchema.JDBC4FunctionConstant`

### Nested classes/interfaces inherited from class com.mysql.jdbc.DatabaseMetaData

`DatabaseMetaData.IndexInfoKeyComparable, DatabaseMetaData.IteratorWithCleanup<T>, DatabaseMetaData.LocalAndReferencedColumns, DatabaseMetaData.ResultSetIterator, DatabaseMetaData.SingleStringIterator, DatabaseMetaData.TypeDescriptor`

### Field Summary

### Fields inherited from class com.mysql.jdbc.DatabaseMetaData

`conn, database, MAX_IDENTIFIER_LENGTH, quotedId, SYSTEM_TABLE_AS_BYTES, TABLE_AS_BYTES, VIEW_AS_BYTES`

### Fields inherited from interface java.sql.DatabaseMetaData

`attributeNoNulls, attributeNullable, attributeNullableUnknown, bestRowNotPseudo, bestRowPseudo, bestRowSession, bestRowTemporary, bestRowTransaction, bestRowUnknown, columnNoNulls, columnNullable, columnNullableUnknown, functionColumnIn, functionColumnInOut, functionColumnOut, functionColumnResult, functionColumnUnknown, functionNoNulls, functionNoTable, functionNullable, functionNullableUnknown, functionResultUnknown, functionReturn, functionReturnsTable, importedKeyCascade, importedKeyInitiallyDeferred, importedKeyInitiallyImmediate, importedKeyNoAction, importedKeyNotDeferrable, importedKeyRestrict, importedKeySetDefault, importedKeySetNull, procedureColumnIn, procedureColumnInOut, procedureColumnOut, procedureColumnResult, procedureColumnReturn, procedureColumnUnknown, procedureNoNulls, procedureNoResult, procedureNullable, procedureNullableUnknown, procedureResultUnknown, procedureReturnsResult, sqlStateSQL, sqlStateSQL99, sqlStateXOpen, tableIndexClustered, tableIndexHashed, tableIndexOther, tableIndexStatistic, typeNoNulls, typeNullable, typeNullableUnknown, typePredBasic, typePredChar, typePredNone, typeSearchable, versionColumnNotPseudo, versionColumnPseudo, versionColumnUnknown`

### Constructor Summary

Constructors
Constructor and Description
`JDBC4DatabaseMetaDataUsingInfoSchema(MySQLConnection connToSet, java.lang.String databaseToSet)`

### Method Summary

Methods
`protected int` `getColumnType(boolean isOutParam, boolean isInParam, boolean isReturnParam, boolean forGetFunctionColumns)` Overrides DatabaseMetaData#getColumnType(boolean, boolean, boolean, boolean).
`protected int` `getJDBC4FunctionConstant(DatabaseMetaDataUsingInfoSchema.JDBC4FunctionConstant constant)` Overrides DatabaseMetaDataUsingInfoSchema#getJDBC4FunctionConstant.
`protected int` `getJDBC4FunctionNoTableConstant()` Overrides DatabaseMetaDataUsingInfoSchema#getJDBC4FunctionNoTableConstant.
`protected java.sql.ResultSet` `getProcedureColumnsNoISParametersView(java.lang.String catalog, java.lang.String schemaPattern, java.lang.String procedureNamePattern, java.lang.String columnNamePattern)` Redirects to another implementation of #getProcedureColumns.
`protected java.lang.String` `getRoutineTypeConditionForGetProcedureColumns()` Returns a condition to be injected in the query that returns metadata for procedure columns only.
`protected java.lang.String` `getRoutineTypeConditionForGetProcedures()` Returns a condition to be injected in the query that returns metadata for procedures only.
`java.sql.RowIdLifetime` `getRowIdLifetime()`
`boolean` `isWrapperFor(java.lang.Class<?> iface)` Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.
`<T> T` `unwrap(java.lang.Class<T> iface)` Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.

### Methods inherited from class com.mysql.jdbc.DatabaseMetaDataUsingInfoSchema

`executeMetadataQuery, getColumnPrivileges, getColumns, getCrossReference, getExportedKeys, getFunctionColumns, getFunctions, gethasParametersView, getImportedKeys, getIndexInfo, getPrimaryKeys, getProcedureColumns, getProcedures, getTables, getVersionColumns`

### Methods inherited from class com.mysql.jdbc.DatabaseMetaData

`allProceduresAreCallable, allTablesAreSelectable, buildResultSet, convertToJdbcFunctionList, convertToJdbcProcedureList, createColumnsFields, createFieldMetadataForGetProcedures, createFkMetadataFields, createFunctionColumnsFields, createIndexInfoFields, createProcedureColumnsFields, createTablesFields, dataDefinitionCausesTransactionCommit, dataDefinitionIgnoredInTransactions, deletesAreDetected, doesMaxRowSizeIncludeBlobs, extractForeignKeyForTable, extractForeignKeyFromCreateTable, generatedKeyAlwaysReturned, getAttributes, getBestRowIdentifier, getCallStmtParameterTypes, getCatalogIterator, getCatalogs, getCatalogSeparator, getCatalogTerm, getClientInfoProperties, getConnection, getDatabaseMajorVersion, getDatabaseMinorVersion, getDatabaseProductName, getDatabaseProductVersion, getDefaultTransactionIsolation, getDriverMajorVersion, getDriverMinorVersion, getDriverName, getDriverVersion, getExceptionInterceptor, getExportKeyResults, getExtraNameCharacters, getForeignKeyActions, getIdentifierQuoteString, getImportKeyResults, getInstance, getJDBCMajorVersion, getJDBCMinorVersion, getMaxBinaryLiteralLength, getMaxCatalogNameLength, getMaxCharLiteralLength, getMaxColumnNameLength, getMaxColumnsInGroupBy, getMaxColumnsInIndex, getMaxColumnsInOrderBy, getMaxColumnsInSelect, getMaxColumnsInTable, getMaxConnections, getMaxCursorNameLength, getMaxIndexLength, getMaxProcedureNameLength, getMaxRowSize, getMaxSchemaNameLength, getMaxStatementLength, getMaxStatements, getMaxTableNameLength, getMaxTablesInSelect, getMaxUserNameLength, getNumericFunctions, getProcedureOrFunctionColumns, getProceduresAndOrFunctions, getProcedureTerm, getPseudoColumns, getResultSetHoldability, getSchemas, getSchemas, getSchemaTerm, getSearchStringEscape, getSQLKeywords, getSQLStateType, getStringFunctions, getSuperTables, getSuperTypes, getSystemFunctions, getTableNameWithCase, getTablePrivileges, getTableTypes, getTimeDateFunctions, getTypeInfo, getUDTs, getURL, getUserName, insertsAreDetected, isCatalogAtStart, isReadOnly, locatorsUpdateCopy, nullPlusNonNullIsNull, nullsAreSortedAtEnd, nullsAreSortedAtStart, nullsAreSortedHigh, nullsAreSortedLow, othersDeletesAreVisible, othersInsertsAreVisible, othersUpdatesAreVisible, ownDeletesAreVisible, ownInsertsAreVisible, ownUpdatesAreVisible, parseTableStatusIntoLocalAndReferencedColumns, prepareMetaDataSafeStatement, providesQueryObjectGenerator, s2b, storesLowerCaseIdentifiers, storesLowerCaseQuotedIdentifiers, storesMixedCaseIdentifiers, storesMixedCaseQuotedIdentifiers, storesUpperCaseIdentifiers, storesUpperCaseQuotedIdentifiers, supportsAlterTableWithAddColumn, supportsAlterTableWithDropColumn, supportsANSI92EntryLevelSQL, supportsANSI92FullSQL, supportsANSI92IntermediateSQL, supportsBatchUpdates, supportsCatalogsInDataManipulation, supportsCatalogsInIndexDefinitions, supportsCatalogsInPrivilegeDefinitions, supportsCatalogsInProcedureCalls, supportsCatalogsInTableDefinitions, supportsColumnAliasing, supportsConvert, supportsConvert, supportsCoreSQLGrammar, supportsCorrelatedSubqueries, supportsDataDefinitionAndDataManipulationTransactions, supportsDataManipulationTransactionsOnly, supportsDifferentTableCorrelationNames, supportsExpressionsInOrderBy, supportsExtendedSQLGrammar, supportsFullOuterJoins, supportsGetGeneratedKeys, supportsGroupBy, supportsGroupByBeyondSelect, supportsGroupByUnrelated, supportsIntegrityEnhancementFacility, supportsLikeEscapeClause, supportsLimitedOuterJoins, supportsMinimumSQLGrammar, supportsMixedCaseIdentifiers, supportsMixedCaseQuotedIdentifiers, supportsMultipleOpenResults, supportsMultipleResultSets, supportsMultipleTransactions, supportsNamedParameters, supportsNonNullableColumns, supportsOpenCursorsAcrossCommit, supportsOpenCursorsAcrossRollback, supportsOpenStatementsAcrossCommit, supportsOpenStatementsAcrossRollback, supportsOrderByUnrelated, supportsOuterJoins, supportsPositionedDelete, supportsPositionedUpdate, supportsResultSetConcurrency, supportsResultSetHoldability, supportsResultSetType, supportsSavepoints, supportsSchemasInDataManipulation, supportsSchemasInIndexDefinitions, supportsSchemasInPrivilegeDefinitions, supportsSchemasInProcedureCalls, supportsSchemasInTableDefinitions, supportsSelectForUpdate, supportsStatementPooling, supportsStoredFunctionsUsingCallSyntax, supportsStoredProcedures, supportsSubqueriesInComparisons, supportsSubqueriesInExists, supportsSubqueriesInIns, supportsSubqueriesInQuantifieds, supportsTableCorrelationNames, supportsTransactionIsolationLevel, supportsTransactions, supportsUnion, supportsUnionAll, updatesAreDetected, usesLocalFilePerTable, usesLocalFiles`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.sql.DatabaseMetaData

`autoCommitFailureClosesAllResultSets`

### Constructor Detail

#### JDBC4DatabaseMetaDataUsingInfoSchema

    public JDBC4DatabaseMetaDataUsingInfoSchema(MySQLConnection connToSet,
                                        java.lang.String databaseToSet)
                                         throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

### Method Detail

#### getRowIdLifetime

    public java.sql.RowIdLifetime getRowIdLifetime()
                                            throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### isWrapperFor

    public boolean isWrapperFor(java.lang.Class<?> iface)
                         throws java.sql.SQLException

Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does. Returns false otherwise. If this implements the interface then return true, else if this is a wrapper then return the result of recursively calling `isWrapperFor` on the wrapped object. If this does not implement the interface and is not a wrapper, return false. This method should be implemented as a low-cost operation compared to `unwrap` so that callers can use this method to avoid expensive `unwrap` calls that may fail. If this method returns true then calling `unwrap` with the same argument should succeed.

Parameters:
  `interfaces` - a Class defining an interface.
Returns:
  true if this implements the interface or directly or indirectly wraps an object that does.
Throws:
  `java.sql.SQLException` - if an error occurs while determining whether this is a wrapper for an object with the given interface.
Since:
  1.6

#### unwrap

    public <T> T unwrap(java.lang.Class<T> iface)
             throws java.sql.SQLException

Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy. The result may be either the object found to implement the interface or a proxy for that object. If the receiver implements the interface then that is the object. If the receiver is a wrapper and the wrapped object implements the interface then that is the object. Otherwise the object is the result of calling `unwrap` recursively on the wrapped object. If the receiver is not a wrapper and does not implement the interface, then an `SQLException` is thrown.

Parameters:
  `iface` - A Class defining an interface that the result must implement.
Returns:
  an object that implements the interface. May be a proxy for the actual implementing object.
Throws:
  `java.sql.SQLException` - If no object found that implements the interface
Since:
  1.6

#### getProcedureColumnsNoISParametersView

    protected java.sql.ResultSet getProcedureColumnsNoISParametersView(java.lang.String catalog,
                                                           java.lang.String schemaPattern,
                                                           java.lang.String procedureNamePattern,
                                                           java.lang.String columnNamePattern)
                                                                throws java.sql.SQLException

Redirects to another implementation of #getProcedureColumns. Overrides DatabaseMetaDataUsingInfoSchema#getProcedureColumnsNoISParametersView.

Overrides:
  `getProcedureColumnsNoISParametersView` in class `DatabaseMetaDataUsingInfoSchema`
Throws:
  `java.sql.SQLException`
See Also:
  `DatabaseMetaDataUsingInfoSchema.getProcedureColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String)`, `DatabaseMetaDataUsingInfoSchema.getProcedureColumnsNoISParametersView(java.lang.String, java.lang.String, java.lang.String, java.lang.String)`

#### getRoutineTypeConditionForGetProcedures

    protected java.lang.String getRoutineTypeConditionForGetProcedures()

Returns a condition to be injected in the query that returns metadata for procedures only. Overrides DatabaseMetaDataUsingInfoSchema#injectRoutineTypeConditionForGetProcedures. When not empty must end with "AND ".

Overrides:
  `getRoutineTypeConditionForGetProcedures` in class `DatabaseMetaDataUsingInfoSchema`
Returns:
  String with the condition to be injected.

#### getRoutineTypeConditionForGetProcedureColumns

    protected java.lang.String getRoutineTypeConditionForGetProcedureColumns()

Returns a condition to be injected in the query that returns metadata for procedure columns only. Overrides DatabaseMetaDataUsingInfoSchema#injectRoutineTypeConditionForGetProcedureColumns. When not empty must end with "AND ".

Overrides:
  `getRoutineTypeConditionForGetProcedureColumns` in class `DatabaseMetaDataUsingInfoSchema`
Returns:
  String with the condition to be injected.

#### getJDBC4FunctionConstant

    protected int getJDBC4FunctionConstant(DatabaseMetaDataUsingInfoSchema.JDBC4FunctionConstant constant)

Overrides DatabaseMetaDataUsingInfoSchema#getJDBC4FunctionConstant.

Overrides:
  `getJDBC4FunctionConstant` in class `DatabaseMetaDataUsingInfoSchema`
Parameters:
  `constant` - the constant id from DatabaseMetaData fields to return.
Returns:
  one of the java.sql.DatabaseMetaData#function* fields.

#### getJDBC4FunctionNoTableConstant

    protected int getJDBC4FunctionNoTableConstant()

Overrides DatabaseMetaDataUsingInfoSchema#getJDBC4FunctionNoTableConstant.

Overrides:
  `getJDBC4FunctionNoTableConstant` in class `DatabaseMetaDataUsingInfoSchema`
Returns:
  java.sql.DatabaseMetaData#functionNoTable.

#### getColumnType

    protected int getColumnType(boolean isOutParam,
                    boolean isInParam,
                    boolean isReturnParam,
                    boolean forGetFunctionColumns)

Overrides DatabaseMetaData#getColumnType(boolean, boolean, boolean, boolean).

Overrides:
  `getColumnType` in class `DatabaseMetaData`
Parameters:
  `isOutParam` - Indicates whether it's an output parameter.
  `isInParam` - Indicates whether it's an input parameter.
  `isReturnParam` - Indicates whether it's a function return parameter.
  `forGetFunctionColumns` - Indicates whether the column belong to a function. This argument is required for JDBC4, in which case this method must be overridden to provide the correct functionality.
Returns:
  The corresponding COLUMN_TYPE as in java.sql.getProcedureColumns API.
See Also:
  `JDBC4DatabaseMetaData.getProcedureOrFunctionColumnType(boolean, boolean, boolean, boolean)`