diff --git a/src/main/java/cn/hashdata/bireme/Bireme.java b/src/main/java/cn/hashdata/bireme/Bireme.java index 1268cf7..0ba65c7 100644 --- a/src/main/java/cn/hashdata/bireme/Bireme.java +++ b/src/main/java/cn/hashdata/bireme/Bireme.java @@ -123,7 +123,7 @@ protected void getTableInfo() throws BiremeException { } strArray = fullname.split("\\."); - cxt.tablesInfo.put(fullname, new Table(strArray[1], tableInfoMap, conn)); + cxt.tablesInfo.put(fullname, new Table(fullname, tableInfoMap, conn)); } try { diff --git a/src/main/java/cn/hashdata/bireme/GetPrimaryKeys.java b/src/main/java/cn/hashdata/bireme/GetPrimaryKeys.java index a2c748b..a8336c1 100644 --- a/src/main/java/cn/hashdata/bireme/GetPrimaryKeys.java +++ b/src/main/java/cn/hashdata/bireme/GetPrimaryKeys.java @@ -29,12 +29,11 @@ public static Map> getPrimaryKeys( sb.append("("); for (String fullname : tableMap.values()) { - strArray = fullname.split("\\."); - sb.append("'").append(strArray[1]).append("',"); + sb.append("'").append(fullname).append("',"); } String tableList = sb.toString().substring(0, sb.toString().length() - 1) + ")"; - String tableSql = "select tablename from pg_tables where schemaname='public' and tablename in " + String tableSql = "select tablename from pg_tables where concat_ws('.',schemaname,tablename) in " + tableList + ""; String prSql = "SELECT NULL AS TABLE_CAT, " + "n.nspname AS TABLE_SCHEM, " @@ -45,7 +44,7 @@ public static Map> getPrimaryKeys( + "FROM pg_catalog.pg_class ct JOIN pg_catalog.pg_attribute a ON (ct.oid = a.attrelid) " + "JOIN pg_catalog.pg_namespace n ON (ct.relnamespace = n.oid) " + "JOIN ( SELECT i.indexrelid, i.indrelid, i.indisprimary, information_schema._pg_expandarray(i.indkey) AS KEYS FROM pg_catalog.pg_index i) i ON (a.attnum = (i.keys).x AND a.attrelid = i.indrelid) " - + "JOIN pg_catalog.pg_class ci ON (ci.oid = i.indexrelid) WHERE TRUE AND n.nspname = 'public' AND ct.relname in " + + "JOIN pg_catalog.pg_class ci ON (ci.oid = i.indexrelid) WHERE TRUE AND concat_ws('.',n.nspname,ct.relname) in " + tableList + " AND i.indisprimary ORDER BY TABLE_NAME, pk_name, key_seq"; try { statement = conn.createStatement(); diff --git a/src/main/java/cn/hashdata/bireme/Table.java b/src/main/java/cn/hashdata/bireme/Table.java index 87576e0..7210ca7 100644 --- a/src/main/java/cn/hashdata/bireme/Table.java +++ b/src/main/java/cn/hashdata/bireme/Table.java @@ -57,14 +57,15 @@ public Table(String tableName, Map> tableMap, Connection co ResultSetMetaData rsMetaData = null; try { - List mapList = tableMap.get(tableName); + String[] strArray = tableName.split("\\."); + List mapList = tableMap.get(strArray[1]); for (int i = 0; i < mapList.size(); i++) { this.keyNames.add(mapList.get(i)); } statement = conn.createStatement(); - String queryTableInfo = "select * from public." + tableName + " where 1=2"; + String queryTableInfo = "select * from " + tableName + " where 1=2"; rs = statement.executeQuery(queryTableInfo); rsMetaData = rs.getMetaData(); this.ncolumns = rsMetaData.getColumnCount();