JDBC4DatabaseMetaDataUsingInfoSchema
Date: 2016-03-08

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.ComparableWrapper<K extends java.lang.Object & java.lang.Comparable<? super K>,V>, DatabaseMetaData.IndexMetaDataKey, DatabaseMetaData.IteratorWithCleanup<T>, DatabaseMetaData.LocalAndReferencedColumns, DatabaseMetaData.ProcedureType, DatabaseMetaData.ResultSetIterator, DatabaseMetaData.SingleStringIterator, DatabaseMetaData.TableMetaDataKey, DatabaseMetaData.TableType, 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
    Modifier and Type | Method and Description
    --- | ---
    `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, getCatalogIterator, getCatalogs, getCatalogSeparator, getCatalogTerm, getClientInfoProperties, getConnection, getDatabaseMajorVersion, getDatabaseMinorVersion, getDatabaseProductName, getDatabaseProductVersion, getDefaultTransactionIsolation, getDriverMajorVersion, getDriverMinorVersion, getDriverName, getDriverVersion, getExceptionInterceptor, getExportKeyResults, getExtraNameCharacters, getForeignKeyActions, getFullyQualifiedName, 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)`