提交 e553e75f 编写于 作者: S Serge Rider

#12 PostgreSQL databases/schemas


Former-commit-id: 03798494
上级 0b914075
......@@ -34,48 +34,23 @@ public class PostgreConstants {
public static final String INFO_SCHEMA_NAME = "information_schema";
public static final String MYSQL_SCHEMA_NAME = "mysql";
public static final String CATALOG_SCHEMA_NAME = "pg_catalog";
public static final String META_TABLE_ENGINES = INFO_SCHEMA_NAME + ".ENGINES";
public static final String META_TABLE_SCHEMATA = INFO_SCHEMA_NAME + ".SCHEMATA";
public static final String META_TABLE_TABLES = INFO_SCHEMA_NAME + ".TABLES";
public static final String META_TABLE_ROUTINES = INFO_SCHEMA_NAME + ".ROUTINES";
public static final String META_TABLE_TRIGGERS = INFO_SCHEMA_NAME + ".TRIGGERS";
public static final String META_TABLE_COLUMNS = INFO_SCHEMA_NAME + ".COLUMNS";
public static final String META_TABLE_TABLE_CONSTRAINTS = INFO_SCHEMA_NAME + ".TABLE_CONSTRAINTS";
public static final String META_TABLE_KEY_COLUMN_USAGE = INFO_SCHEMA_NAME + ".KEY_COLUMN_USAGE";
public static final String META_TABLE_STATISTICS = INFO_SCHEMA_NAME + ".STATISTICS";
public static final String META_TABLE_PARTITIONS = INFO_SCHEMA_NAME + ".PARTITIONS";
public static final String META_TABLE_VIEWS = INFO_SCHEMA_NAME + ".VIEWS";
public static final String COL_ENGINE_NAME = "ENGINE";
public static final String COL_ENGINE_SUPPORT = "SUPPORT";
public static final String COL_ENGINE_DESCRIPTION = "COMMENT";
public static final String COL_ENGINE_SUPPORT_TXN = "TRANSACTIONS";
public static final String COL_ENGINE_SUPPORT_XA = "XA";
public static final String COL_ENGINE_SUPPORT_SAVEPOINTS = "SAVEPOINTS";
public static final String COL_CATALOG_NAME = "CATALOG_NAME";
public static final String COL_SCHEMA_NAME = "SCHEMA_NAME";
public static final String COL_DEFAULT_CHARACTER_SET_NAME = "DEFAULT_CHARACTER_SET_NAME";
public static final String COL_DEFAULT_COLLATION_NAME = "DEFAULT_COLLATION_NAME";
public static final String COL_SQL_PATH = "SQL_PATH";
public static final String COL_TABLE_SCHEMA = "TABLE_SCHEMA";
public static final String COL_TABLE_NAME = "TABLE_NAME";
public static final String COL_TABLE_TYPE = "TABLE_TYPE";
public static final String COL_ENGINE = "ENGINE";
public static final String COL_VERSION = "VERSION";
public static final String COL_TABLE_ROWS = "ROWS";
public static final String COL_AUTO_INCREMENT = "AUTO_INCREMENT";
public static final String COL_TABLE_COMMENT = "COMMENT";
public static final String COL_COLUMNS_NAME = "COLUMNS_NAME";
public static final String COL_ORDINAL_POSITION = "ORDINAL_POSITION";
public static final String COL_CREATE_TIME = "CREATE_TIME";
public static final String COL_UPDATE_TIME = "UPDATE_TIME";
public static final String COL_CHECK_TIME = "CHECK_TIME";
public static final String COL_COLLATION = "COLLATION";
public static final String COL_COLLATION_NAME = "COLLATION_NAME";
public static final String COL_NULLABLE = "NULLABLE";
public static final String COL_AVG_ROW_LENGTH = "AVG_ROW_LENGTH";
public static final String COL_DATA_LENGTH = "DATA_LENGTH";
......@@ -89,7 +64,6 @@ public class PostgreConstants {
public static final String COL_COLUMN_KEY = "COLUMN_KEY";
public static final String COL_DATA_TYPE = "DATA_TYPE";
public static final String COL_CHARACTER_MAXIMUM_LENGTH = "CHARACTER_MAXIMUM_LENGTH";
public static final String COL_CHARACTER_OCTET_LENGTH = "CHARACTER_OCTET_LENGTH";
public static final String COL_NUMERIC_PRECISION = "NUMERIC_PRECISION";
public static final String COL_NUMERIC_SCALE = "NUMERIC_SCALE";
public static final String COL_COLUMN_DEFAULT = "COLUMN_DEFAULT";
......@@ -105,38 +79,15 @@ public class PostgreConstants {
public static final String COL_DTD_IDENTIFIER = "DTD_IDENTIFIER";
public static final String COL_ROUTINE_BODY = "ROUTINE_BODY";
public static final String COL_ROUTINE_DEFINITION = "ROUTINE_DEFINITION";
public static final String COL_EXTERNAL_NAME = "EXTERNAL_NAME";
public static final String COL_EXTERNAL_LANGUAGE = "EXTERNAL_LANGUAGE";
public static final String COL_PARAMETER_STYLE = "PARAMETER_STYLE";
public static final String COL_IS_DETERMINISTIC = "IS_DETERMINISTIC";
public static final String COL_SQL_DATA_ACCESS = "SQL_DATA_ACCESS";
public static final String COL_SECURITY_TYPE = "SECURITY_TYPE";
public static final String COL_ROUTINE_COMMENT = "ROUTINE_COMMENT";
public static final String COL_DEFINER = "DEFINER";
public static final String COL_CHARACTER_SET_CLIENT = "CHARACTER_SET_CLIENT";
public static final String COL_TRIGGER_SCHEMA = "TRIGGER_SCHEMA";
public static final String COL_TRIGGER_NAME = "TRIGGER_NAME";
public static final String COL_TRIGGER_EVENT_MANIPULATION = "EVENT_MANIPULATION";
public static final String COL_TRIGGER_EVENT_OBJECT_SCHEMA = "EVENT_OBJECT_SCHEMA";
public static final String COL_TRIGGER_EVENT_OBJECT_TABLE = "EVENT_OBJECT_TABLE";
public static final String COL_TRIGGER_ACTION_ORDER = "ACTION_ORDER";
public static final String COL_TRIGGER_ACTION_CONDITION = "ACTION_CONDITION";
public static final String COL_TRIGGER_ACTION_STATEMENT = "ACTION_STATEMENT";
public static final String COL_TRIGGER_ACTION_ORIENTATION = "ACTION_ORIENTATION";
public static final String COL_TRIGGER_ACTION_TIMING = "ACTION_TIMING";
public static final String COL_TRIGGER_SQL_MODE = "SQL_MODE";
public static final String COL_TRIGGER_DEFINER = "DEFINER";
public static final String COL_TRIGGER_CHARACTER_SET_CLIENT = "CHARACTER_SET_CLIENT";
public static final String COL_TRIGGER_COLLATION_CONNECTION = "COLLATION_CONNECTION";
public static final String COL_TRIGGER_DATABASE_COLLATION = "DATABASE_COLLATION";
public static final String COL_CONSTRAINT_NAME = "CONSTRAINT_NAME";
public static final String COL_CONSTRAINT_TYPE = "CONSTRAINT_TYPE";
public static final String CONSTRAINT_FOREIGN_KEY = "FOREIGN KEY";
public static final String CONSTRAINT_PRIMARY_KEY = "PRIMARY KEY";
public static final String CONSTRAINT_UNIQUE = "UNIQUE";
public static final String EXTRA_AUTO_INCREMENT = "auto_increment";
......@@ -148,30 +99,6 @@ public class PostgreConstants {
public static final DBSIndexType INDEX_TYPE_HASH = new DBSIndexType("HASH", "Hash");
public static final DBSIndexType INDEX_TYPE_RTREE = new DBSIndexType("RTREE", "RTree");
public static final String COL_CHARSET = "CHARSET";
public static final String COL_DESCRIPTION = "DESCRIPTION";
public static final String COL_MAX_LEN = "MAXLEN";
public static final String COL_ID = "ID";
public static final String COL_DEFAULT = "DEFAULT";
public static final String COL_COMPILED = "COMPILED";
public static final String COL_SORT_LENGTH = "SORTLEN";
public static final String COL_PARTITION_NAME = "PARTITION_NAME";
public static final String COL_SUBPARTITION_NAME = "SUBPARTITION_NAME";
public static final String COL_PARTITION_ORDINAL_POSITION = "PARTITION_ORDINAL_POSITION";
public static final String COL_SUBPARTITION_ORDINAL_POSITION = "SUBPARTITION_ORDINAL_POSITION";
public static final String COL_PARTITION_METHOD = "PARTITION_METHOD";
public static final String COL_SUBPARTITION_METHOD = "SUBPARTITION_METHOD";
public static final String COL_PARTITION_EXPRESSION = "PARTITION_EXPRESSION";
public static final String COL_SUBPARTITION_EXPRESSION = "SUBPARTITION_EXPRESSION";
public static final String COL_PARTITION_DESCRIPTION = "PARTITION_DESCRIPTION";
public static final String COL_PARTITION_COMMENT = "PARTITION_COMMENT";
public static final String COL_MAX_DATA_LENGTH = "MAX_DATA_LENGTH";
public static final String COL_INDEX_LENGTH = "INDEX_LENGTH";
public static final String COL_NODEGROUP = "NODEGROUP";
public static final String COL_DATA_FREE = "DATA_FREE";
public static final String COL_CHECKSUM = "CHECKSUM";
public static final String COL_CHECK_OPTION = "CHECK_OPTION";
public static final String COL_VIEW_DEFINITION = "VIEW_DEFINITION";
......
......@@ -199,7 +199,7 @@ public class PostgreDatabase implements DBSInstance, DBSCatalog, PostgreObject {
@Override
protected JDBCStatement prepareObjectsStatement(@NotNull JDBCSession session, @NotNull PostgreDatabase owner) throws SQLException
{
StringBuilder catalogQuery = new StringBuilder("SELECT * FROM INFORMATION_SCHEMA.SCHEMATA");
StringBuilder catalogQuery = new StringBuilder("SELECT * FROM pg_catalog.pg_namespace");
DBSObjectFilter catalogFilters = owner.getDataSource().getContainer().getObjectFilter(PostgreSchema.class, null, false);
if (catalogFilters != null) {
JDBCUtils.appendFilterClause(catalogQuery, catalogFilters, PostgreConstants.COL_SCHEMA_NAME, true);
......@@ -214,7 +214,7 @@ public class PostgreDatabase implements DBSInstance, DBSCatalog, PostgreObject {
@Override
protected PostgreSchema fetchObject(@NotNull JDBCSession session, @NotNull PostgreDatabase owner, @NotNull ResultSet resultSet) throws SQLException, DBException
{
String name = JDBCUtils.safeGetString(resultSet, "schema_name");
String name = JDBCUtils.safeGetString(resultSet, "nspname");
if (name == null || name.startsWith("pg_toast") || name.startsWith("pg_temp")) {
return null;
}
......
......@@ -57,9 +57,8 @@ public class PostgreSchema implements DBSSchema, DBPSaveableObject, DBPRefreshab
private PostgreDatabase database;
private String name;
private String ownerName;
private int ownerId;
private PostgreCharset defaultCharset;
private String sqlPath;
private boolean persisted;
final TableCache tableCache = new TableCache();
......@@ -80,9 +79,8 @@ public class PostgreSchema implements DBSSchema, DBPSaveableObject, DBPRefreshab
private void loadInfo(ResultSet dbResult)
throws SQLException
{
this.ownerName = JDBCUtils.safeGetString(dbResult, "schema_owner");
this.ownerId = JDBCUtils.safeGetInt(dbResult, "nspowner");
this.defaultCharset = null;
this.sqlPath = JDBCUtils.safeGetString(dbResult, "sql_path");
this.persisted = true;
}
......@@ -101,8 +99,8 @@ public class PostgreSchema implements DBSSchema, DBPSaveableObject, DBPRefreshab
}
@Property(viewable = true, order = 4)
public String getOwnerName() {
return ownerName;
public int getOwnerId() {
return ownerId;
}
@NotNull
......@@ -244,7 +242,7 @@ public class PostgreSchema implements DBSSchema, DBPSaveableObject, DBPRefreshab
@Override
public boolean isSystem()
{
return PostgreConstants.INFO_SCHEMA_NAME.equalsIgnoreCase(getName()) || PostgreConstants.MYSQL_SCHEMA_NAME.equalsIgnoreCase(getName());
return PostgreConstants.INFO_SCHEMA_NAME.equalsIgnoreCase(getName()) || PostgreConstants.CATALOG_SCHEMA_NAME.equalsIgnoreCase(getName());
}
public class TableCache extends JDBCStructCache<PostgreSchema, PostgreTableBase, PostgreTableColumn> {
......@@ -258,19 +256,16 @@ public class PostgreSchema implements DBSSchema, DBPSaveableObject, DBPRefreshab
protected JDBCStatement prepareObjectsStatement(@NotNull JDBCSession session, @NotNull PostgreSchema owner)
throws SQLException
{
return session.prepareStatement("SHOW FULL TABLES FROM " + DBUtils.getQuotedIdentifier(PostgreSchema.this));
final JDBCPreparedStatement dbStat = session.prepareStatement("SELECT * FROM pg_catalog.pg_tables WHERE schemaname=?");
dbStat.setString(1, getName());
return dbStat;
}
@Override
protected PostgreTableBase fetchObject(@NotNull JDBCSession session, @NotNull PostgreSchema owner, @NotNull ResultSet dbResult)
throws SQLException, DBException
{
final String tableType = JDBCUtils.safeGetString(dbResult, PostgreConstants.COL_TABLE_TYPE);
if (tableType.contains("VIEW")) {
return new PostgreView(PostgreSchema.this, dbResult);
} else {
return new PostgreTable(PostgreSchema.this, dbResult);
}
return new PostgreTable(PostgreSchema.this, dbResult);
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册