All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.snowflake.client.jdbcapi.DatabaseMetaDataIT Maven / Gradle / Ivy

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package net.snowflake.client.jdbcapi;

import net.snowflake.client.jdbc.ErrorCode;
import org.junit.Test;
import org.junit.Before;
import org.junit.After;

import static org.junit.Assert.*;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author hyu
 */
public class DatabaseMetaDataIT extends BaseJDBCTest
{
  private Connection connection;
  private Statement statement;
  private DatabaseMetaData databaseMetaData;
  private ResultSet resultSet;
  
  @Before
  public void setUp() throws SQLException{
    Connection con = getConnection();
    Statement st = con.createStatement();
    st.execute("create or replace database JDBC_DB1");
    st.execute("create or replace schema JDBC_SCHEMA11");
    st.execute("create or replace table JDBC_TBL111(colA string, colB decimal, colC timestamp)");
    st.execute("create or replace schema JDBC_SCHEMA12");
    st.execute("create or replace table JDBC_TBL121(colA varchar)");
    st.execute("create or replace table JDBC_TBL122(colA NUMBER(20, 2) AUTOINCREMENT comment " +
        "'cmt colA', colB NUMBER(20, 2) DEFAULT(3) NOT NULL, colC NUMBER(20,2) IDENTITY(20, 2))");
    st.execute("create or replace database JDBC_DB2");
    st.execute("create or replace schema JDBC_SCHEMA21");
    st.execute("create or replace table JDBC_TBL211(colA string)");

//    st.execute("create or replace table JDBC_TBL211(colA string(25) NOT NULL DEFAULT 'defstring')");
    st.close();
    con.close();
  }
  
  @After
  public void tearDown() throws SQLException{
    Connection con = getConnection();
    Statement st = con.createStatement();
    st.execute("drop database if exists JDBC_DB1");
    st.execute("drop database if exists JDBC_DB2");
    st.close();
    con.close();
  }

  @Test
  public void testCatalog() throws SQLException{
    connection = getConnection();
    statement = connection.createStatement();
    databaseMetaData = connection.getMetaData();
    resultSet = databaseMetaData.getCatalogs(); 
    assertEquals(".", databaseMetaData.getCatalogSeparator());
    assertEquals("database", databaseMetaData.getCatalogTerm());
    
    ArrayList actual = new ArrayList<>();
    while(resultSet.next()){
      actual.add(resultSet.getString(1));
    }
  
    String getAlldbFromInfoSchema = "select database_name from information_schema.databases";
    ArrayList expected = getInfoViaSQLCmd(getAlldbFromInfoSchema);
    
    //compareTwoLists(expected, actual);
    statement.close();
    connection.close();
  }

  @Test
  public void testGetColumn() throws SQLException{
    String getAllColumsCount = "select count(*) from db.information_schema.columns";
    connection = getConnection();
    statement = connection.createStatement();
    databaseMetaData = connection.getMetaData();

    resultSet = databaseMetaData.getColumns(null, null, null, null);
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllColumsCount), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getColumns(null, "JDBC_SCHEMA11", null, null);
    assertEquals(3, getSizeOfResultSet(resultSet));
    
    resultSet = databaseMetaData.getColumns(null, "JDBC_SCH_MA11", null, null);
    assertEquals(3, getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getColumns(null, "JDBC%", null, null);
    assertEquals(8, getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getColumns(null, "JDBC_SCHEMA1_", null, null);
    assertEquals(7, getSizeOfResultSet(resultSet));

    // test if return the correct info
    resultSet = databaseMetaData.getColumns("JDBC_DB1", "JDBC_SCHEMA12", "JDBC_TBL122", "COLA");
    resultSet.next();
    //fetchResultSet(resultSet, true);
    assertEquals("JDBC_DB1", resultSet.getString("TABLE_CAT"));
    assertEquals("JDBC_SCHEMA12", resultSet.getString("TABLE_SCHEM"));
    assertEquals("JDBC_TBL122", resultSet.getString("TABLE_NAME"));
    assertEquals("COLA", resultSet.getString("COLUMN_NAME"));
    assertEquals(Types.DECIMAL, resultSet.getInt("DATA_TYPE"));
    assertEquals("NUMBER", resultSet.getString("TYPE_NAME"));
    assertEquals("20", resultSet.getString("COLUMN_SIZE"));
    assertEquals("2", resultSet.getString("DECIMAL_DIGITS"));
    assertEquals(DatabaseMetaData.columnNullable, resultSet.getInt("NULLABLE"));
    assertEquals("cmt colA", resultSet.getString("REMARKS"));
    assertEquals("", resultSet.getString("COLUMN_DEF"));
    assertEquals("YES", resultSet.getString("IS_NULLABLE"));
    assertEquals("YES", resultSet.getString("IS_AUTOINCREMENT"));
    resultSet.close();

    // more on default and autoincrement
    resultSet = databaseMetaData.getColumns("JDBC_DB1", "JDBC_SCHEMA12", "JDBC_TBL122", "COLB");
    resultSet.next();
    assertEquals(DatabaseMetaData.columnNoNulls, resultSet.getInt(11));
    assertEquals("3", resultSet.getString(13));
    assertEquals("NO", resultSet.getString(23));
    resultSet.close();

    resultSet = databaseMetaData.getColumns("JDBC_DB1", "JDBC_SCHEMA1_", null, "COL_");

    resultSet = databaseMetaData.getColumns("JDBC_DB1", "JDBC_SCHEMA12", "JDBC_TBL122", "COLC");
    resultSet.next();
    assertEquals("", resultSet.getString(13));
    assertEquals("YES", resultSet.getString(23));

    // SNOW-24558 Metadata request with special characters in table name
    statement.execute("create or replace table \"@@specialchartable$1234\"(colA int)");
    resultSet = databaseMetaData.getColumns(null, null, "@@specialchartable$%", null);
    assertEquals(1, getSizeOfResultSet(resultSet));

    resultSet.close();
    connection.close();
  }

  @Test
  public void testGetFunctions() throws SQLException
  {
    connection = getConnection();
    statement = connection.createStatement();
    statement.execute("create or replace function JDBC_DB1.JDBC_SCHEMA11.FUNC111 " +
        "(a number, b number) RETURNS NUMBER COMMENT='mutiply numbers' as 'a*b'");
    statement.execute("create or replace function JDBC_DB1.JDBC_SCHEMA12.FUNC121 " +
        "(a number, b number) RETURNS NUMBER COMMENT='mutiply numbers' as 'a*b'");
    statement.execute("create or replace function JDBC_DB1.JDBC_SCHEMA12.FUNC122 " +
        "(a number, b number) RETURNS NUMBER COMMENT='mutiply numbers' as 'a*b'");
    statement.execute("create or replace function JDBC_DB2.JDBC_SCHEMA21.FUNC211 " +
        "(a number, b number) RETURNS NUMBER COMMENT='mutiply numbers' as 'a*b'");
    statement.execute("create or replace function JDBC_DB2.JDBC_SCHEMA21.FUNC212 " +
        "() RETURNS TABLE(colA varchar) as 'select COLA from JDBC_DB2.JDBC_SCHEMA21.JDBC_TBL211'");
    databaseMetaData = connection.getMetaData();

    // test each column return the right value
    resultSet = databaseMetaData.getFunctions("JDBC_DB1", "JDBC_SCHEMA11", "FUNC111");
    resultSet.next();
    assertEquals("JDBC_DB1", resultSet.getString("FUNCTION_CAT"));
    assertEquals("JDBC_SCHEMA11", resultSet.getString("FUNCTION_SCHEM"));
    assertEquals("FUNC111", resultSet.getString("FUNCTION_NAME"));
    assertEquals("mutiply numbers", resultSet.getString("REMARKS"));
    assertEquals(DatabaseMetaData.functionNoTable, resultSet.getInt("FUNCTION_TYPE"));
    assertEquals("FUNC111", resultSet.getString("SPECIFIC_NAME"));
    assertTrue(!resultSet.next());

    // test a table function
    resultSet = databaseMetaData.getFunctions("JDBC_DB2", "JDBC_SCHEMA21", "FUNC212");
    resultSet.next();
    assertEquals(DatabaseMetaData.functionReturnsTable, resultSet.getInt("FUNCTION_TYPE"));
    assertFalse(resultSet.next());

    // test a builtin function
    resultSet = databaseMetaData.getFunctions(null, null, "AND");
    resultSet.next();
    assertEquals("", resultSet.getString("FUNCTION_CAT"));
    assertEquals("", resultSet.getString("FUNCTION_SCHEM"));
    assertEquals("AND", resultSet.getString("FUNCTION_NAME"));
    assertEquals(DatabaseMetaData.functionNoTable, resultSet.getInt("FUNCTION_TYPE"));
    assertEquals("AND", resultSet.getString("SPECIFIC_NAME"));
    assertTrue(!resultSet.next());

    // test pattern
    resultSet = databaseMetaData.getFunctions(null, null, "FUNC%");
    assertEquals(5, getSizeOfResultSet(resultSet));
    resultSet = databaseMetaData.getFunctions(null, "JDBC_SCHEMA1_", "_UNC%");
    assertEquals(3, getSizeOfResultSet(resultSet));
    //resultSet = databaseMetaData.getFunctions("JDBC_DB1", "AAAAAAAAAAA", "AAAAAAA");
    try {
      resultSet = databaseMetaData.getFunctions("JDBC_DB3", "JDBC_SCHEMA1_", "_UNC%");
    } catch (SQLException e)
    {
      assertEquals(2003, e.getErrorCode());
    }
    resultSet = databaseMetaData.getFunctions("JDBC_DB1", "JDBC_SCHEMA__", "_UNC%");
    assertEquals(3, getSizeOfResultSet(resultSet));
    resultSet = databaseMetaData.getFunctions("JDBC_DB1", "JDBC_SCHEMA1_", "_UNC11_");
    assertEquals(1, getSizeOfResultSet(resultSet));
    resultSet = databaseMetaData.getFunctions("JDBC_DB1", null, "_UNC11_");
    assertEquals(1, getSizeOfResultSet(resultSet));

    resultSet.close();
    statement.close();
    connection.close();
  }


  @Test
  public void testGetConnection() throws SQLException{
    connection = getConnection();
    databaseMetaData = connection.getMetaData();
    assertEquals(connection, databaseMetaData.getConnection());
    connection.close();
  }

  @Test
  public void testDatabaseAndDriverInfo() throws SQLException{
    connection = getConnection();
    databaseMetaData = connection.getMetaData();
    assertEquals("Snowflake", databaseMetaData.getDatabaseProductName());
    assertEquals(1, databaseMetaData.getJDBCMajorVersion());
    assertEquals(0, databaseMetaData.getJDBCMinorVersion());
    assertEquals("Snowflake", databaseMetaData.getDriverName());
  }

  @Test
  public void testGetSchema() throws SQLException{
    String getSchemaCount = "select count(*) from db.information_schema.schemata";
    connection = getConnection();
    databaseMetaData = connection.getMetaData();
    assertEquals("schema", databaseMetaData.getSchemaTerm());
    
    resultSet = databaseMetaData.getSchemas();
    assertEquals(getAllObjectCountInDBViaInforSchema(getSchemaCount), getSizeOfResultSet(resultSet));
   
    resultSet = databaseMetaData.getSchemas(null, null);
    assertEquals(getAllObjectCountInDBViaInforSchema(getSchemaCount), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getSchemas("JDBC_DB1", "%");
    resultSet.next();
    assertEquals("INFORMATION_SCHEMA", resultSet.getString(1));
    assertEquals("JDBC_DB1", resultSet.getString(2));
    resultSet.next();
    assertEquals("JDBC_SCHEMA11", resultSet.getString(1));
    assertEquals("JDBC_DB1", resultSet.getString(2));
    resultSet.next();
    assertEquals("JDBC_SCHEMA12", resultSet.getString(1));
    assertEquals("JDBC_DB1", resultSet.getString(2));
    resultSet.next();
    assertEquals("PUBLIC", resultSet.getString(1));
    assertEquals("JDBC_DB1", resultSet.getString(2));

    resultSet = databaseMetaData.getSchemas("JDBC_DB1", "JDBC%");
    assertEquals(2, getSizeOfResultSet(resultSet));

    connection.close() ;
  }

  @Test
  public void testGetTables() throws SQLException{
    String getAllTable = "select count(*) from db.information_schema.tables";
    String getAllBaseTable = "select count(*) from db.information_schema."
            + "tables where table_type = 'BASE TABLE'";
    String getAllView = "select count(*) from db.information_schema."
            + "tables where table_type = 'VIEW'";
    connection = getConnection();
    databaseMetaData = connection.getMetaData();

    try{
      resultSet = databaseMetaData.getTables(null, null, null, new String[]{"ALIAS"});
    }
    catch(SQLException e)
    {
      assertEquals(ErrorCode.FEATURE_UNSUPPORTED.getSqlState(), e.getSQLState());
      assertEquals(ErrorCode.FEATURE_UNSUPPORTED.getMessageCode().intValue(), e.getErrorCode());
    }

    resultSet = databaseMetaData.getTables(null, null, null, new String[]{"SYSTEM_TABLE"});
    assertEquals(0, getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables(null, null, null, null);
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllTable), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables(null, null, null, new String[]{"VIEW", "SYSTEM_TABLE"});
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllView), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables(null, null, null, new String[]{"TABLE", "SYSTEM_TABLE"});
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllBaseTable), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables(null, null, null, new String[]{"TABLE", "VIEW", "SYSTEM_TABLE"});
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllTable), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables(null, null, null, new String[]{"TABLE", "VIEW"});
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllTable), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables(null, null, null, new String[]{"TABLE"});
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllBaseTable), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables(null, null, null, new String[]{"VIEW"});
    assertEquals(getAllObjectCountInDBViaInforSchema(getAllView), getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables("JDBC_DB1", "JDBC_SCHEMA11", null, new String[]{"TABLE"});
    assertEquals(1, getSizeOfResultSet(resultSet));

    // snow-26032. JDBC should strip backslash before sending the show functions to server
    resultSet = databaseMetaData.getTables("JDBC_DB1", "JDBC\\_SCHEMA11", "%", new String[]{"TABLE"});
    assertEquals(1, getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables("JDBC_DB1", "JDBC%", null, new String[]{"TABLE"});
    assertEquals(3, getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTables("JDBC_DB1", "JDBC_SCH%", "J_BC_TBL122", new String[]{"TABLE"});
    resultSet.next();
    assertEquals("JDBC_DB1", resultSet.getString(1));
    assertEquals("JDBC_SCHEMA12", resultSet.getString(2));
    assertEquals("JDBC_TBL122", resultSet.getString(3));
    assertEquals("TABLE", resultSet.getString(4));
    assertEquals("", resultSet.getString(5));

    resultSet = databaseMetaData.getTables("JDBC_DB1", null, "JDBC_TBL211", new String[]{"TABLE"});
    assertEquals(0, getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getTableTypes();
    resultSet.next();
    assertEquals("TABLE", resultSet.getString(1));
    resultSet.next();
    assertEquals("VIEW", resultSet.getString(1));

    connection.close();
  }

  @Test
  public void testGetMetaDataUseConnectionCtx() throws SQLException
  {
    Connection connection = getConnection();
    Statement statement = connection.createStatement();

    // setup: reset session db and schema, enable the parameter
    statement.execute("use database JDBC_DB1");
    statement.execute("use schema JDBC_SCHEMA11");
    statement.execute("alter SESSION set CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX=true");

    DatabaseMetaData databaseMetaData = connection.getMetaData();

    // this should only return JDBC_SCHEMA11
    ResultSet resultSet = databaseMetaData.getSchemas(null, null);
    assertEquals(1, getSizeOfResultSet(resultSet));

    // only returns tables in JDBC_DB1.JDBC_SCHEMA11
    resultSet = databaseMetaData.getTables(null, null, null, null);
    assertEquals(1, getSizeOfResultSet(resultSet));

    statement.execute("use schema JDBC_SCHEMA12");
    resultSet = databaseMetaData.getTables(null, null, null, null);
    assertEquals(2, getSizeOfResultSet(resultSet));

    resultSet = databaseMetaData.getColumns(null, null, null, null);
    assertEquals(4, getSizeOfResultSet(resultSet));
  }

  private int getAllObjectCountInDBViaInforSchema(String SQLCmdTemplate) throws SQLException{
    int objectCount = 0;
    Connection con = getConnection();
    Statement st = con.createStatement();
    st.execute("alter session set ENABLE_BUILTIN_SCHEMAS = true");
    ResultSet dbNameRS = st.executeQuery("select database_name from information_schema.databases");
    while(dbNameRS.next()){
      String databaseName = dbNameRS.getString(1);
      String execSQLCmd = SQLCmdTemplate.replaceAll("db", databaseName);
      ResultSet object = st.executeQuery(execSQLCmd);
      object.next();
      objectCount += object.getInt(1);
    }
    return objectCount; 

  }

  // SNOW-1595
  @Test
  public void testGetObjectsDoesNotExists() throws SQLException
  {
    connection = getConnection();
    databaseMetaData = connection.getMetaData();

    resultSet = databaseMetaData.getSchemas("DB_NOT_EXIST", "SCHEMA_NOT_EXIST");
    assertTrue(!resultSet.next());

    resultSet = databaseMetaData.getTables("DB_NOT_EXIST", "SCHEMA_NOT_EXIST", "%", null);
    assertTrue(!resultSet.next());

    resultSet = databaseMetaData.getTables("JDBC_DB1", "SCHEMA\\_NOT\\_EXIST", "%", null);
    assertTrue(!resultSet.next());

    resultSet = databaseMetaData.getColumns("DB_NOT_EXIST", "SCHEMA_NOT_EXIST", "%", "%");
    assertTrue(!resultSet.next());

    resultSet = databaseMetaData.getColumns("JDBC_DB1", "SCHEMA\\_NOT\\_EXIST", "%", "%");
    assertTrue(!resultSet.next());

    resultSet = databaseMetaData.getColumns("JDBC_DB1", "JDBC\\_SCHEMA11", "TBL\\_NOT\\_EXIST", "%");
    assertTrue(!resultSet.next());

    connection.close();
  }

  @Test
  public void testTypeInfo() throws SQLException{
    connection = getConnection();
    databaseMetaData = connection.getMetaData();
    resultSet = databaseMetaData.getTypeInfo();
    resultSet.next();
    assertEquals("NUMBER", resultSet.getString(1));
    resultSet.next();
    assertEquals("INTEGER", resultSet.getString(1));
    resultSet.next();
    assertEquals("DOUBLE", resultSet.getString(1));
    resultSet.next();
    assertEquals("VARCHAR", resultSet.getString(1));
    resultSet.next();
    assertEquals("DATE", resultSet.getString(1));
    resultSet.next();
    assertEquals("TIME", resultSet.getString(1));
    resultSet.next();
    assertEquals("TIMESTAMP", resultSet.getString(1));
    resultSet.next();
    assertEquals("BOOLEAN", resultSet.getString(1));
    connection.close();
  }
  
  @Test 
  public void testInfoThatAlwaysReturnSameValue() throws SQLException{
    connection = getConnection();
    databaseMetaData = connection.getMetaData();
    assertEquals(false, databaseMetaData.allProceduresAreCallable());
    assertEquals(true, databaseMetaData.allTablesAreSelectable());
    assertEquals(true, databaseMetaData.dataDefinitionCausesTransactionCommit());
    assertEquals(false, databaseMetaData.dataDefinitionIgnoredInTransactions());
    assertEquals(false, databaseMetaData.deletesAreDetected(1));
    assertEquals(true, databaseMetaData.doesMaxRowSizeIncludeBlobs());
    assertEquals(Connection.TRANSACTION_READ_COMMITTED, databaseMetaData.getDefaultTransactionIsolation());
    assertEquals("$", databaseMetaData.getExtraNameCharacters());
    assertEquals("\"", databaseMetaData.getIdentifierQuoteString());
    assertEquals(0, getSizeOfResultSet(databaseMetaData.getIndexInfo(null, null, null, true, true)));
    assertEquals(0, databaseMetaData.getMaxBinaryLiteralLength());
    assertEquals(255, databaseMetaData.getMaxCatalogNameLength());
    assertEquals(16777216, databaseMetaData.getMaxCharLiteralLength());
    assertEquals(255, databaseMetaData.getMaxColumnNameLength());
    assertEquals(0, databaseMetaData.getMaxColumnsInGroupBy());
    assertEquals(0, databaseMetaData.getMaxColumnsInIndex());
    assertEquals(0, databaseMetaData.getMaxColumnsInOrderBy());
    assertEquals(0, databaseMetaData.getMaxColumnsInSelect());
    assertEquals(0, databaseMetaData.getMaxColumnsInTable());
    assertEquals(0, databaseMetaData.getMaxConnections());
    assertEquals(0, databaseMetaData.getMaxCursorNameLength());
    assertEquals(0, databaseMetaData.getMaxIndexLength());
    assertEquals(0, databaseMetaData.getMaxProcedureNameLength());
    assertEquals(0, databaseMetaData.getMaxRowSize());
    assertEquals(255, databaseMetaData.getMaxSchemaNameLength());
    assertEquals(0, databaseMetaData.getMaxStatementLength());
    assertEquals(0, databaseMetaData.getMaxStatements());
    assertEquals(255, databaseMetaData.getMaxTableNameLength());
    assertEquals(0, databaseMetaData.getMaxTablesInSelect());
    assertEquals(255, databaseMetaData.getMaxUserNameLength());
    //assertEquals("", databaseMetaData.getNumericFunctions());
    assertEquals(0, getSizeOfResultSet(databaseMetaData.getProcedures(null, null, null)));
    assertEquals("procedure", databaseMetaData.getProcedureTerm());
    //assertEquals("", databaseMetaData.getStringFunctions());
    //assertEquals("", databaseMetaData.getSystemFunctions());
    assertEquals(0, getSizeOfResultSet(databaseMetaData.getTablePrivileges(null, null, null)));
    //assertEquals("", databaseMetaData.getTimeDateFunctions());
    assertEquals("snowman", databaseMetaData.getUserName());
    assertEquals(false, databaseMetaData.insertsAreDetected(1));
    assertEquals(true, databaseMetaData.isCatalogAtStart());
    assertEquals(false, databaseMetaData.isReadOnly());
    assertEquals(true, databaseMetaData.nullPlusNonNullIsNull());
    assertEquals(false, databaseMetaData.nullsAreSortedAtEnd());
    assertEquals(false, databaseMetaData.nullsAreSortedAtStart());
    assertEquals(true, databaseMetaData.nullsAreSortedHigh());
    assertEquals(false, databaseMetaData.nullsAreSortedLow());
    assertEquals(false, databaseMetaData.othersDeletesAreVisible(1));
    assertEquals(false, databaseMetaData.othersInsertsAreVisible(1));
    assertEquals(false, databaseMetaData.othersUpdatesAreVisible(1));
    assertEquals(false, databaseMetaData.ownDeletesAreVisible(1));
    assertEquals(false, databaseMetaData.ownInsertsAreVisible(1));
    assertEquals(false, databaseMetaData.ownUpdatesAreVisible(1));
    assertEquals(false, databaseMetaData.storesLowerCaseIdentifiers());
    assertEquals(false, databaseMetaData.storesLowerCaseQuotedIdentifiers());
    assertEquals(false, databaseMetaData.storesMixedCaseIdentifiers());
    assertEquals(true, databaseMetaData.storesMixedCaseQuotedIdentifiers());
    assertEquals(true, databaseMetaData.storesUpperCaseIdentifiers());
    assertEquals(false, databaseMetaData.storesUpperCaseQuotedIdentifiers());
    assertEquals(true, databaseMetaData.supportsAlterTableWithAddColumn());
    assertEquals(true, databaseMetaData.supportsAlterTableWithDropColumn());
    assertEquals(true, databaseMetaData.supportsANSI92EntryLevelSQL());
    assertEquals(false, databaseMetaData.supportsANSI92FullSQL());
    assertEquals(false, databaseMetaData.supportsANSI92IntermediateSQL());
    assertEquals(true, databaseMetaData.supportsBatchUpdates());
    assertEquals(true, databaseMetaData.supportsCatalogsInDataManipulation());
    assertEquals(false, databaseMetaData.supportsCatalogsInIndexDefinitions());
    assertEquals(false, databaseMetaData.supportsCatalogsInPrivilegeDefinitions());
    assertEquals(false, databaseMetaData.supportsCatalogsInProcedureCalls());
    assertEquals(true, databaseMetaData. supportsCatalogsInTableDefinitions());
    assertEquals(true, databaseMetaData.supportsColumnAliasing());
    assertEquals(false, databaseMetaData.supportsConvert());
    assertEquals(false, databaseMetaData.supportsConvert(1, 2));
    assertEquals(false, databaseMetaData.supportsCoreSQLGrammar());
    assertEquals(true, databaseMetaData.supportsCorrelatedSubqueries());
    assertEquals(true, databaseMetaData.supportsDataDefinitionAndDataManipulationTransactions());
    assertEquals(false, databaseMetaData.supportsDataManipulationTransactionsOnly());
    assertEquals(false, databaseMetaData.supportsDifferentTableCorrelationNames());
    assertEquals(true, databaseMetaData.supportsExpressionsInOrderBy());
    assertEquals(false, databaseMetaData.supportsExtendedSQLGrammar());
    assertEquals(true, databaseMetaData.supportsFullOuterJoins());
    assertEquals(false, databaseMetaData.supportsGetGeneratedKeys());
    assertEquals(true, databaseMetaData.supportsGroupBy());
    assertEquals(true, databaseMetaData.supportsGroupByBeyondSelect());
    assertEquals(false, databaseMetaData.supportsGroupByUnrelated());
    assertEquals(false, databaseMetaData.supportsIntegrityEnhancementFacility());
    assertEquals(false, databaseMetaData.supportsLikeEscapeClause());
    assertEquals(true, databaseMetaData.supportsLimitedOuterJoins());
    assertEquals(false, databaseMetaData.supportsMinimumSQLGrammar());
    assertEquals(false, databaseMetaData.supportsMixedCaseIdentifiers());
    assertEquals(true, databaseMetaData.supportsMixedCaseQuotedIdentifiers());
    assertEquals(false, databaseMetaData.supportsMultipleOpenResults());
    assertEquals(false, databaseMetaData.supportsMultipleResultSets());
    assertEquals(true, databaseMetaData.supportsMultipleTransactions());
    assertEquals(false, databaseMetaData.supportsNamedParameters());
    assertEquals(true, databaseMetaData.supportsNonNullableColumns());
    assertEquals(false, databaseMetaData.supportsOpenCursorsAcrossCommit());
    assertEquals(false, databaseMetaData.supportsOpenCursorsAcrossRollback());
    assertEquals(false, databaseMetaData.supportsOpenStatementsAcrossCommit());
    assertEquals(false, databaseMetaData.supportsOpenStatementsAcrossRollback());
    assertEquals(true, databaseMetaData.supportsOrderByUnrelated());
    assertEquals(true, databaseMetaData.supportsOuterJoins());
    assertEquals(false, databaseMetaData.supportsPositionedDelete());
    assertEquals(false, databaseMetaData.supportsPositionedUpdate());
    assertEquals(true, databaseMetaData.supportsResultSetConcurrency(ResultSet.TYPE_FORWARD_ONLY,
                                                                     ResultSet.CONCUR_READ_ONLY));
    assertEquals(true, databaseMetaData.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY));
    assertEquals(false, databaseMetaData.supportsResultSetHoldability(0));
    assertEquals(false, databaseMetaData.supportsSavepoints());
    assertEquals(true, databaseMetaData.supportsSchemasInDataManipulation());
    assertEquals(false, databaseMetaData.supportsSchemasInIndexDefinitions());
    assertEquals(false, databaseMetaData.supportsSchemasInPrivilegeDefinitions());
    assertEquals(false, databaseMetaData.supportsSchemasInProcedureCalls());
    assertEquals(true, databaseMetaData.supportsSchemasInTableDefinitions());
    assertEquals(false, databaseMetaData.supportsSelectForUpdate());
    //assertEquals(false, databaseMetaData.supportsStatementPooling());
    //assertEquals(false, databaseMetaData.supportsStoredFunctionsUsingCallSyntax());
    assertEquals(true, databaseMetaData.supportsSubqueriesInComparisons());
    assertEquals(true, databaseMetaData.supportsSubqueriesInExists());
    assertEquals(true, databaseMetaData.supportsSubqueriesInIns());
    assertEquals(false, databaseMetaData.supportsSubqueriesInQuantifieds());
    assertEquals(true, databaseMetaData.supportsTableCorrelationNames());
    assertEquals(true, databaseMetaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_COMMITTED));
    assertEquals(true, databaseMetaData.supportsUnion());
    assertEquals(true, databaseMetaData.supportsUnionAll());
    assertEquals(false, databaseMetaData.updatesAreDetected(1));
    assertEquals(false, databaseMetaData.usesLocalFilePerTable());
    assertEquals(false, databaseMetaData.usesLocalFiles());

    connection.close();
  }
}  




© 2015 - 2025 Weber Informatics LLC | Privacy Policy