提交 6f5fa525 authored 作者: Thomas Mueller's avatar Thomas Mueller

Make it easier to test; bugfix for Firebird

上级 b138e8b5
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
*/ */
package org.h2.bnf.context; package org.h2.bnf.context;
import java.sql.Connection;
import java.sql.DatabaseMetaData; import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
...@@ -114,16 +115,13 @@ public class DbContents { ...@@ -114,16 +115,13 @@ public class DbContents {
/** /**
* Read the contents of this database from the database meta data. * Read the contents of this database from the database meta data.
* *
* @param meta the database meta data * @param url the database URL
* @param conn the connection
*/ */
public synchronized void readContents(DatabaseMetaData meta) throws SQLException { public synchronized void readContents(String url, Connection conn) throws SQLException {
String prod = StringUtils.toLowerEnglish(meta.getDatabaseProductName());
isSQLite = prod.indexOf("sqlite") >= 0;
String url = meta.getURL();
if (url != null) {
isH2 = url.startsWith("jdbc:h2:"); isH2 = url.startsWith("jdbc:h2:");
if (isH2) { if (isH2) {
PreparedStatement prep = meta.getConnection().prepareStatement( PreparedStatement prep = conn.prepareStatement(
"SELECT UPPER(VALUE) FROM INFORMATION_SCHEMA.SETTINGS " + "SELECT UPPER(VALUE) FROM INFORMATION_SCHEMA.SETTINGS " +
"WHERE NAME=?"); "WHERE NAME=?");
prep.setString(1, "MODE"); prep.setString(1, "MODE");
...@@ -135,6 +133,7 @@ public class DbContents { ...@@ -135,6 +133,7 @@ public class DbContents {
rs.close(); rs.close();
prep.close(); prep.close();
} }
isSQLite = url.startsWith("jdbc:sqlite:");
isOracle = url.startsWith("jdbc:oracle:"); isOracle = url.startsWith("jdbc:oracle:");
isPostgreSQL = url.startsWith("jdbc:postgresql:"); isPostgreSQL = url.startsWith("jdbc:postgresql:");
// isHSQLDB = url.startsWith("jdbc:hsqldb:"); // isHSQLDB = url.startsWith("jdbc:hsqldb:");
...@@ -142,7 +141,7 @@ public class DbContents { ...@@ -142,7 +141,7 @@ public class DbContents {
isDerby = url.startsWith("jdbc:derby:"); isDerby = url.startsWith("jdbc:derby:");
isFirebird = url.startsWith("jdbc:firebirdsql:"); isFirebird = url.startsWith("jdbc:firebirdsql:");
isMSSQLServer = url.startsWith("jdbc:sqlserver:"); isMSSQLServer = url.startsWith("jdbc:sqlserver:");
} DatabaseMetaData meta = conn.getMetaData();
String defaultSchemaName = getDefaultSchemaName(meta); String defaultSchemaName = getDefaultSchemaName(meta);
String[] schemaNames = getSchemaNames(meta); String[] schemaNames = getSchemaNames(meta);
schemas = new DbSchema[schemaNames.length]; schemas = new DbSchema[schemaNames.length];
...@@ -150,7 +149,7 @@ public class DbContents { ...@@ -150,7 +149,7 @@ public class DbContents {
String schemaName = schemaNames[i]; String schemaName = schemaNames[i];
boolean isDefault = defaultSchemaName == null || defaultSchemaName.equals(schemaName); boolean isDefault = defaultSchemaName == null || defaultSchemaName.equals(schemaName);
DbSchema schema = new DbSchema(this, schemaName, isDefault); DbSchema schema = new DbSchema(this, schemaName, isDefault);
if (schema.isDefault) { if (isDefault) {
defaultSchema = schema; defaultSchema = schema;
} }
schemas[i] = schema; schemas[i] = schema;
......
...@@ -74,7 +74,10 @@ public class DbSchema { ...@@ -74,7 +74,10 @@ public class DbSchema {
this.name = name; this.name = name;
this.quotedName = contents.quoteIdentifier(name); this.quotedName = contents.quoteIdentifier(name);
this.isDefault = isDefault; this.isDefault = isDefault;
if (name.equals("INFORMATION_SCHEMA")) { if (name == null) {
// firebird
isSystem = true;
} else if ("INFORMATION_SCHEMA".equals(name)) {
isSystem = true; isSystem = true;
} else if (!contents.isH2() && StringUtils.toUpperEnglish(name).startsWith("INFO")) { } else if (!contents.isH2() && StringUtils.toUpperEnglish(name).startsWith("INFO")) {
isSystem = true; isSystem = true;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论