JAVA   48

PostgreSQL extends SQL92

Guest on 11th May 2022 04:49:19 PM

  1. package de.fuberlin.wiwiss.d2rq.sql.vendor;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.SQLException;
  5. import java.sql.Types;
  6.  
  7. import de.fuberlin.wiwiss.d2rq.sql.SQL;
  8. import de.fuberlin.wiwiss.d2rq.sql.types.DataType;
  9. import de.fuberlin.wiwiss.d2rq.sql.types.SQLCharacterString;
  10.  
  11. public class PostgreSQL extends SQL92 {
  12.  
  13.         public PostgreSQL() {
  14.                 super(true);
  15.         }
  16.  
  17.         @Override
  18.         public String quoteBinaryLiteral(String hexString) {
  19.                 if (!SQL.isHexString(hexString)) {
  20.                         throw new IllegalArgumentException("Not a hex string: '" + hexString + "'");
  21.                 }
  22.                 return "E'\\\\x" + hexString + "'";
  23.         }
  24.  
  25.         @Override
  26.         public DataType getDataType(int jdbcType, String name, int size) {
  27.                 DataType standard = super.getDataType(jdbcType, name, size);
  28.                 if (standard != null) return standard;
  29.  
  30.                 if ("UUID".equals(name)) {
  31.                         return new SQLCharacterString(this, name, true);
  32.                 }
  33.                
  34.                 // As postGis jdbc is only a wrapper of the org.postgresql.Driver,
  35.                 // the JDBC database product type is the one of Postgresql : PostgreSQL
  36.                 // Thus Postgis field as geometry are handled here
  37.                 if ((jdbcType == Types.OTHER) && ("GEOMETRY".equals(name))) {
  38.                         // let try the simpliest version
  39.                         return new SQLCharacterString(this, name, true);
  40.                 }
  41.  
  42.                 return null;
  43.         }
  44.  
  45.         @Override
  46.         public boolean isIgnoredTable(String schema, String table) {
  47.                 // PostgreSQL has schemas "information_schema" and "pg_catalog" in every DB
  48.                 return "information_schema".equals(schema) || "pg_catalog".equals(schema);                             
  49.         }
  50.        
  51.         @Override
  52.         public void initializeConnection(Connection connection) throws SQLException {
  53.                 // Disable auto-commit in PostgreSQL to support cursors
  54.                 // @see http://jdbc.postgresql.org/documentation/83/query.html
  55.                 connection.setAutoCommit(false);
  56.         }
  57. }

Raw Paste


Login or Register to edit or fork this paste. It's free.