📄 testmetadata.java
字号:
checkFalse(rs.next());
stat.execute("DROP TABLE TEST");
}
private void testProcedureColumns() throws Exception {
DatabaseMetaData meta = conn.getMetaData();
ResultSet rs;
Statement stat = conn.createStatement();
stat.execute("CREATE ALIAS PROP FOR \"java.lang.System.getProperty(java.lang.String)\"");
stat.execute("CREATE ALIAS EXIT FOR \"java.lang.System.exit\"");
rs = meta.getProcedures(null, null, "EX%");
testResultSetMeta(rs, 8, new String[] { "PROCEDURE_CAT", "PROCEDURE_SCHEM", "PROCEDURE_NAME",
"NUM_INPUT_PARAMS", "NUM_OUTPUT_PARAMS", "NUM_RESULT_SETS", "REMARKS", "PROCEDURE_TYPE" }, new int[] {
Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.INTEGER,
Types.VARCHAR, Types.SMALLINT }, null, null);
testResultSetOrdered(rs, new String[][] { { catalog, Constants.SCHEMA_MAIN, "EXIT", "0", "0", "0", "",
"" + DatabaseMetaData.procedureNoResult }, });
rs = meta.getProcedureColumns(null, null, null, null);
testResultSetMeta(rs, 13,
new String[] { "PROCEDURE_CAT", "PROCEDURE_SCHEM", "PROCEDURE_NAME", "COLUMN_NAME", "COLUMN_TYPE",
"DATA_TYPE", "TYPE_NAME", "PRECISION", "LENGTH", "SCALE", "RADIX", "NULLABLE", "REMARKS" },
new int[] { Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.SMALLINT, Types.INTEGER,
Types.VARCHAR, Types.INTEGER, Types.INTEGER, Types.SMALLINT, Types.SMALLINT, Types.SMALLINT,
Types.VARCHAR }, null, null);
testResultSetOrdered(rs, new String[][] {
{ catalog, Constants.SCHEMA_MAIN, "EXIT", "P1", "" + DatabaseMetaData.procedureColumnIn,
"" + Types.INTEGER, "INTEGER", "10", "10", "0", "10", "" + DatabaseMetaData.procedureNoNulls },
{ catalog, Constants.SCHEMA_MAIN, "PROP", "P1", "" + DatabaseMetaData.procedureColumnIn,
"" + Types.VARCHAR, "VARCHAR", "" + Integer.MAX_VALUE, "" + Integer.MAX_VALUE, "0", "10",
"" + DatabaseMetaData.procedureNullable }, });
stat.execute("DROP ALIAS EXIT");
stat.execute("DROP ALIAS PROP");
}
private void testCrossReferences() throws Exception {
DatabaseMetaData meta = conn.getMetaData();
ResultSet rs;
Statement stat = conn.createStatement();
stat.execute("CREATE TABLE PARENT(A INT, B INT, PRIMARY KEY(A, B))");
stat
.execute("CREATE TABLE CHILD(ID INT PRIMARY KEY, PA INT, PB INT, CONSTRAINT AB FOREIGN KEY(PA, PB) REFERENCES PARENT(A, B))");
rs = meta.getCrossReference(null, "PUBLIC", "PARENT", null, "PUBLIC", "CHILD");
checkCrossRef(rs);
rs = meta.getImportedKeys(null, "PUBLIC", "CHILD");
checkCrossRef(rs);
rs = meta.getExportedKeys(null, "PUBLIC", "PARENT");
checkCrossRef(rs);
stat.execute("DROP TABLE PARENT");
stat.execute("DROP TABLE CHILD");
}
private void checkCrossRef(ResultSet rs) throws Exception {
testResultSetMeta(rs, 14, new String[] { "PKTABLE_CAT", "PKTABLE_SCHEM", "PKTABLE_NAME", "PKCOLUMN_NAME",
"FKTABLE_CAT", "FKTABLE_SCHEM", "FKTABLE_NAME", "FKCOLUMN_NAME", "KEY_SEQ", "UPDATE_RULE",
"DELETE_RULE", "FK_NAME", "PK_NAME", "DEFERRABILITY" }, new int[] { Types.VARCHAR, Types.VARCHAR,
Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR,
Types.SMALLINT, Types.SMALLINT, Types.SMALLINT, Types.VARCHAR, Types.VARCHAR, Types.SMALLINT }, null,
null);
testResultSetOrdered(rs, new String[][] {
{ catalog, Constants.SCHEMA_MAIN, "PARENT", "A", catalog, Constants.SCHEMA_MAIN, "CHILD", "PA", "1",
"" + DatabaseMetaData.importedKeyRestrict, "" + DatabaseMetaData.importedKeyRestrict, "AB",
null, "" + DatabaseMetaData.importedKeyNotDeferrable },
{ catalog, Constants.SCHEMA_MAIN, "PARENT", "B", catalog, Constants.SCHEMA_MAIN, "CHILD", "PB", "2",
"" + DatabaseMetaData.importedKeyRestrict, "" + DatabaseMetaData.importedKeyRestrict, "AB",
null, "" + DatabaseMetaData.importedKeyNotDeferrable } });
}
void testTempTable() throws Exception {
Connection conn = getConnection("metaData");
Statement stat = conn.createStatement();
stat.execute("DROP TABLE IF EXISTS TEST_TEMP");
stat.execute("CREATE TEMP TABLE TEST_TEMP(ID INT PRIMARY KEY, NAME VARCHAR(255))");
stat.execute("CREATE INDEX IDX_NAME ON TEST_TEMP(NAME)");
stat.execute("ALTER TABLE TEST_TEMP ADD FOREIGN KEY(ID) REFERENCES(ID)");
conn.close();
conn = getConnection("metaData");
stat = conn.createStatement();
stat.execute("CREATE TEMP TABLE TEST_TEMP(ID INT PRIMARY KEY, NAME VARCHAR(255))");
ResultSet rs = stat.executeQuery("SELECT STORAGE_TYPE FROM "
+ "INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='TEST_TEMP'");
rs.next();
check(rs.getString("STORAGE_TYPE"), "GLOBAL TEMPORARY");
stat.execute("DROP TABLE IF EXISTS TEST_TEMP");
conn.close();
}
void testStatic() throws Exception {
Driver dr = (Driver) Class.forName("org.h2.Driver").newInstance();
check(dr.getMajorVersion(), meta.getDriverMajorVersion());
check(dr.getMinorVersion(), meta.getDriverMinorVersion());
check(dr.jdbcCompliant());
check(dr.getPropertyInfo(null, null).length, 0);
check(dr.connect("jdbc:test:false", null) == null);
check(meta.getNumericFunctions().length() > 0);
check(meta.getStringFunctions().length() > 0);
check(meta.getSystemFunctions().length() > 0);
check(meta.getTimeDateFunctions().length() > 0);
check(meta.allProceduresAreCallable());
check(meta.allTablesAreSelectable());
check(meta.dataDefinitionCausesTransactionCommit());
checkFalse(meta.dataDefinitionIgnoredInTransactions());
checkFalse(meta.deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.deletesAreDetected(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.deletesAreDetected(ResultSet.TYPE_SCROLL_SENSITIVE));
checkFalse(meta.doesMaxRowSizeIncludeBlobs());
check(meta.getCatalogSeparator(), ".");
check(meta.getCatalogTerm(), "catalog");
check(meta.getConnection() == conn);
if (config.jdk14) {
String versionStart = meta.getDatabaseMajorVersion() + "." + meta.getDatabaseMinorVersion();
check(meta.getDatabaseProductVersion().startsWith(versionStart));
check(meta.getDriverMajorVersion(), meta.getDatabaseMajorVersion());
check(meta.getDriverMinorVersion(), meta.getDatabaseMinorVersion());
check(meta.getJDBCMajorVersion(), 3);
check(meta.getJDBCMinorVersion(), 0);
}
check(meta.getDatabaseProductName(), "H2");
check(meta.getDefaultTransactionIsolation(), Connection.TRANSACTION_READ_COMMITTED);
check(meta.getDriverName(), "H2 JDBC Driver");
String versionStart = meta.getDriverMajorVersion() + "." + meta.getDriverMinorVersion();
check(meta.getDriverVersion().startsWith(versionStart));
check(meta.getExtraNameCharacters(), "");
check(meta.getIdentifierQuoteString(), "\"");
check(meta.getMaxBinaryLiteralLength(), 0);
check(meta.getMaxCatalogNameLength(), 0);
check(meta.getMaxCharLiteralLength(), 0);
check(meta.getMaxColumnNameLength(), 0);
check(meta.getMaxColumnsInGroupBy(), 0);
check(meta.getMaxColumnsInIndex(), 0);
check(meta.getMaxColumnsInOrderBy(), 0);
check(meta.getMaxColumnsInSelect(), 0);
check(meta.getMaxColumnsInTable(), 0);
check(meta.getMaxConnections(), 0);
check(meta.getMaxCursorNameLength(), 0);
check(meta.getMaxIndexLength(), 0);
check(meta.getMaxProcedureNameLength(), 0);
check(meta.getMaxRowSize(), 0);
check(meta.getMaxSchemaNameLength(), 0);
check(meta.getMaxStatementLength(), 0);
check(meta.getMaxStatements(), 0);
check(meta.getMaxTableNameLength(), 0);
check(meta.getMaxTablesInSelect(), 0);
check(meta.getMaxUserNameLength(), 0);
check(meta.getProcedureTerm(), "procedure");
if (config.jdk14) {
check(meta.getResultSetHoldability(), ResultSet.CLOSE_CURSORS_AT_COMMIT);
check(meta.getSQLStateType(), DatabaseMetaData.sqlStateSQL99);
checkFalse(meta.locatorsUpdateCopy());
}
check(meta.getSchemaTerm(), "schema");
check(meta.getSearchStringEscape(), "\\");
check(meta.getSQLKeywords(), "");
check(meta.getURL().startsWith("jdbc:h2:"));
check(meta.getUserName().length() > 1);
checkFalse(meta.insertsAreDetected(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.insertsAreDetected(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.insertsAreDetected(ResultSet.TYPE_SCROLL_SENSITIVE));
check(meta.isCatalogAtStart());
checkFalse(meta.isReadOnly());
check(meta.nullPlusNonNullIsNull());
checkFalse(meta.nullsAreSortedAtEnd());
checkFalse(meta.nullsAreSortedAtStart());
checkFalse(meta.nullsAreSortedHigh());
check(meta.nullsAreSortedLow());
checkFalse(meta.othersDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.othersDeletesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.othersDeletesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
checkFalse(meta.othersInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.othersInsertsAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.othersInsertsAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
checkFalse(meta.othersUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.othersUpdatesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.othersUpdatesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
checkFalse(meta.ownDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.ownDeletesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.ownDeletesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
checkFalse(meta.ownInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.ownInsertsAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.ownInsertsAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
checkFalse(meta.ownUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY));
checkFalse(meta.ownUpdatesAreVisible(ResultSet.TYPE_SCROLL_INSENSITIVE));
checkFalse(meta.ownUpdatesAreVisible(ResultSet.TYPE_SCROLL_SENSITIVE));
checkFalse(meta.storesLowerCaseIdentifiers());
checkFalse(meta.storesLowerCaseQuotedIdentifiers());
checkFalse(meta.storesMixedCaseIdentifiers());
check(meta.storesMixedCaseQuotedIdentifiers());
check(meta.storesUpperCaseIdentifiers());
checkFalse(meta.storesUpperCaseQuotedIdentifiers());
check(meta.supportsAlterTableWithAddColumn());
check(meta.supportsAlterTableWithDropColumn());
check(meta.supportsANSI92EntryLevelSQL());
checkFalse(meta.supportsANSI92IntermediateSQL());
checkFalse(meta.supportsANSI92FullSQL());
check(meta.supportsBatchUpdates());
check(meta.supportsCatalogsInDataManipulation());
check(meta.supportsCatalogsInIndexDefinitions());
check(meta.supportsCatalogsInPrivilegeDefinitions());
checkFalse(meta.supportsCatalogsInProcedureCalls());
check(meta.supportsCatalogsInTableDefinitions());
check(meta.supportsColumnAliasing());
check(meta.supportsConvert());
check(meta.supportsConvert(Types.INTEGER, Types.VARCHAR));
check(meta.supportsCoreSQLGrammar());
check(meta.supportsCorrelatedSubqueries());
checkFalse(meta.supportsDataDefinitionAndDataManipulationTransactions());
check(meta.supportsDataManipulationTransactionsOnly());
checkFalse(meta.supportsDifferentTableCorrelationNames());
check(meta.supportsExpressionsInOrderBy());
checkFalse(meta.supportsExtendedSQLGrammar());
checkFalse(meta.supportsFullOuterJoins());
if (config.jdk14) {
check(meta.supportsGetGeneratedKeys());
check(meta.supportsMultipleOpenResults());
checkFalse(meta.supportsNamedParameters());
}
check(meta.supportsGroupBy());
check(meta.supportsGroupByBeyondSelect());
check(meta.supportsGroupByUnrelated());
check(meta.supportsIntegrityEnhancementFacility());
check(meta.supportsLikeEscapeClause());
check(meta.supportsLimitedOuterJoins());
check(meta.supportsMinimumSQLGrammar());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -