Exemple #1
0
 private void initDb() throws SQLException {
   Statement stat = null;
   ResultSet rs = null;
   try {
     synchronized (server) {
       // better would be: set the database to exclusive mode
       rs = conn.getMetaData().getTables(null, "PG_CATALOG", "PG_VERSION", null);
       boolean tableFound = rs.next();
       stat = conn.createStatement();
       if (!tableFound) {
         installPgCatalog(stat);
       }
       rs = stat.executeQuery("SELECT * FROM PG_CATALOG.PG_VERSION");
       if (!rs.next() || rs.getInt(1) < 2) {
         // installation incomplete, or old version
         installPgCatalog(stat);
       } else {
         // version 2 or newer: check the read version
         int versionRead = rs.getInt(2);
         if (versionRead > 2) {
           throw DbException.throwInternalError("Incompatible PG_VERSION");
         }
       }
     }
     stat.execute("set search_path = PUBLIC, pg_catalog");
     HashSet<Integer> typeSet = server.getTypeSet();
     if (typeSet.size() == 0) {
       rs = stat.executeQuery("SELECT OID FROM PG_CATALOG.PG_TYPE");
       while (rs.next()) {
         typeSet.add(rs.getInt(1));
       }
     }
   } finally {
     JdbcUtils.closeSilently(stat);
     JdbcUtils.closeSilently(rs);
   }
 }