public void addDataType(String type, String name) { try { addDataType(type, Class.forName(name)); } catch (Exception e) { throw new RuntimeException("Cannot register new type: " + e); } }
public int getTransactionIsolation() throws SQLException checkClosed(); if (haveMinimumServerVersion("7.3")) ResultSet rs = execSQLQuery("SHOW TRANSACTION ISOLATION LEVEL"); // nb: no BEGIN triggered if (rs.next()) level = rs.getString(1); SQLWarning saveWarnings = getWarnings(); clearWarnings(); execSQLUpdate("SHOW TRANSACTION ISOLATION LEVEL"); // nb: no BEGIN triggered SQLWarning warning = getWarnings(); if (warning != null) level = warning.getMessage(); clearWarnings(); if (saveWarnings != null) addWarning(saveWarnings);
protected void finalize() throws Throwable { if (openStackTrace != null) logger.log(GT.tr("Finalizing a Connection that was never closed:"), openStackTrace); close(); }
public void setAutoCommit(boolean autoCommit) throws SQLException { checkClosed(); if (this.autoCommit == autoCommit) return ; if (!this.autoCommit) commit(); this.autoCommit = autoCommit; }
/** * Turn the provided value into a valid string literal for * direct inclusion into a query. This includes the single quotes * needed around it. */ protected String escapeQuotes(String s) throws SQLException { StringBuffer sb = new StringBuffer(); if (!connection.getStandardConformingStrings() && connection.haveMinimumServerVersion("8.1")) { sb.append("E"); } sb.append("'"); sb.append(connection.escapeString(s)); sb.append("'"); return sb.toString(); }
public java.sql.ResultSet getCatalogs() throws SQLException { Field f[] = new Field[1]; Vector v = new Vector(); f[0] = new Field("TABLE_CAT", Oid.VARCHAR); byte[][] tuple = new byte[1][]; tuple[0] = connection.encodeString(connection.getCatalog()); v.addElement(tuple); return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); }
if (connection.haveMinimumServerVersion("8.1")) if (connection.haveMinimumServerVersion("7.3")) " ORDER BY a.attnum "; ResultSet rs = connection.createStatement().executeQuery(sql); while (rs.next()) int typeOid = (int)rs.getLong("atttypid"); int typeMod = rs.getInt("atttypmod"); int decimalDigits = connection.getTypeInfo().getScale(typeOid, typeMod); int columnSize = connection.getTypeInfo().getPrecision(typeOid, typeMod); if (columnSize == 0) { columnSize = connection.getTypeInfo().getDisplaySize(typeOid, typeMod); tuple[0] = connection.encodeString(Integer.toString(scope)); tuple[1] = rs.getBytes("attname"); tuple[2] = connection.encodeString(Integer.toString(connection.getTypeInfo().getSQLType(typeOid))); tuple[3] = connection.encodeString(connection.getTypeInfo().getPGType(typeOid)); tuple[4] = connection.encodeString(Integer.toString(columnSize)); tuple[5] = null; // unused tuple[6] = connection.encodeString(Integer.toString(decimalDigits)); tuple[7] = connection.encodeString(Integer.toString(java.sql.DatabaseMetaData.bestRowNotPseudo)); v.addElement(tuple);
enableDriverManagerLogging(); PSQLState.INVALID_PARAMETER_VALUE); } else { bindStringAsVarchar = haveMinimumCompatibleVersion("8.0"); timestampUtils = new TimestampUtils(haveMinimumServerVersion("7.4"), haveMinimumServerVersion("8.2")); commitQuery = getQueryExecutor().createSimpleQuery("COMMIT"); rollbackQuery = getQueryExecutor().createSimpleQuery("ROLLBACK"); _typeCache = createTypeInfo(this, unknownLength); initObjectTypes(info); enableDriverManagerLogging();
if (connection.haveMinimumServerVersion("7.3")) ResultSet rs = connection.createStatement().executeQuery(sql); while (rs.next()) for (i = 0; i < permNames.length; i++) byte[] privilege = connection.encodeString(permNames[i]); Vector grantees = (Vector)permissions.get(permNames[i]); for (int j = 0; j < grantees.size(); j++) tuple[1] = schema; tuple[2] = table; tuple[3] = connection.encodeString(owner); tuple[4] = connection.encodeString(grantee); tuple[5] = privilege; tuple[6] = connection.encodeString(grantable); v.addElement(tuple);
public void execSQLUpdate(String s) throws SQLException { BaseStatement stmt = (BaseStatement) createStatement(); if (stmt.executeWithFlags(s, QueryExecutor.QUERY_NO_METADATA | QueryExecutor.QUERY_NO_RESULTS | QueryExecutor.QUERY_SUPPRESS_BEGIN)) throw new PSQLException(GT.tr("A result was returned when none was expected."), PSQLState.TOO_MANY_RESULTS); // Transfer warnings to the connection, since the user never // has a chance to see the statement itself. SQLWarning warnings = stmt.getWarnings(); if (warnings != null) addWarning(warnings); stmt.close(); }
protected int getMaxIndexKeys() throws SQLException { if (INDEX_MAX_KEYS == 0) { String sql; if (connection.haveMinimumServerVersion("8.0")) { sql = "SELECT setting FROM pg_catalog.pg_settings WHERE name='max_index_keys'"; } else { String from; if (connection.haveMinimumServerVersion("7.3")) { from = "pg_catalog.pg_namespace n, pg_catalog.pg_type t1, pg_catalog.pg_type t2 WHERE t1.typnamespace=n.oid AND n.nspname='pg_catalog' AND "; } else { from = "pg_type t1, pg_type t2 WHERE "; } sql = "SELECT t1.typlen/t2.typlen FROM " + from + " t1.typelem=t2.oid AND t1.typname='oidvector'"; } ResultSet rs = connection.createStatement().executeQuery(sql); if (!rs.next()) { throw new PSQLException(GT.tr("Unable to determine a value for MaxIndexKeys due to missing system catalog data."), PSQLState.UNEXPECTED_ERROR); } INDEX_MAX_KEYS = rs.getInt(1); rs.close(); } return INDEX_MAX_KEYS; }
tuple[1] = connection.encodeString("ctid"); tuple[2] = connection.encodeString(Integer.toString(connection.getTypeInfo().getSQLType("tid"))); tuple[3] = connection.encodeString("tid"); tuple[4] = null; tuple[5] = null; tuple[6] = null; tuple[7] = connection.encodeString(Integer.toString(java.sql.DatabaseMetaData.versionColumnPseudo)); v.addElement(tuple);
public ResultSet getClientInfoProperties() throws SQLException { Field f[] = new Field[4]; f[0] = new Field("NAME", Oid.VARCHAR); f[1] = new Field("MAX_LEN", Oid.INT4); f[2] = new Field("DEFAULT_VALUE", Oid.VARCHAR); f[3] = new Field("DESCRIPTION", Oid.VARCHAR); Vector v = new Vector(); if (connection.haveMinimumServerVersion("9.0")) { byte[][] tuple = new byte[4][]; tuple[0] = connection.encodeString("ApplicationName"); tuple[1] = connection.encodeString(Integer.toString(getMaxNameLength())); tuple[2] = connection.encodeString(""); tuple[3] = connection.encodeString("The name of the application currently utilizing the connection."); v.addElement(tuple); } return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); }
protected java.sql.Statement createMetaDataStatement() throws SQLException { return ((AbstractJdbc2Connection)connection).createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY); }
public void handleWarning(SQLWarning warning) { AbstractJdbc2Connection.this.addWarning(warning); }
public java.sql.ResultSet getTableTypes() throws SQLException { String types[] = new String[tableTypeClauses.size()]; Enumeration e = tableTypeClauses.keys(); int i = 0; while (e.hasMoreElements()) { types[i++] = (String)e.nextElement(); } sortStringArray(types); Field f[] = new Field[1]; Vector v = new Vector(); f[0] = new Field("TABLE_TYPE", Oid.VARCHAR); for (i = 0; i < types.length; i++) { byte[][] tuple = new byte[1][]; tuple[0] = connection.encodeString(types[i]); v.addElement(tuple); } return (ResultSet) ((BaseStatement)createMetaDataStatement()).createDriverResultSet(f, v); }
public void setAutoCommit(boolean autoCommit) throws SQLException { if (this.autoCommit == autoCommit) return ; if (!this.autoCommit) commit(); this.autoCommit = autoCommit; }
/** * Escape single quotes with another single quote, escape backslashes as needed. */ protected String escapeQuotes(String s) throws SQLException { return connection.escapeString(s); }
if (connection.haveMinimumServerVersion("7.3")) ResultSet rs = connection.createStatement().executeQuery(sql); byte bZero[] = connection.encodeString("0"); byte b10[] = connection.encodeString("10"); byte bf[] = connection.encodeString("f"); byte bt[] = connection.encodeString("t"); byte bliteral[] = connection.encodeString("'"); byte bNullable[] = connection.encodeString(Integer.toString(java.sql.DatabaseMetaData.typeNullable)); byte bSearchable[] = connection.encodeString(Integer.toString(java.sql.DatabaseMetaData.typeSearchable)); tuple[0] = connection.encodeString(typname); tuple[1] = connection.encodeString(Integer.toString(connection.getTypeInfo().getSQLType(typname))); tuple[2] = connection.encodeString(Integer.toString(connection.getTypeInfo().getMaximumPrecision(typeOid))); if (connection.getTypeInfo().requiresQuoting(typeOid)) tuple[7] = connection.getTypeInfo().isCaseSensitive(typeOid) ? bt : bf; tuple[8] = bSearchable; // any thing can be used in the WHERE clause tuple[9] = connection.getTypeInfo().isSigned(typeOid) ? bf : bt; tuple[10] = bf; // false for now - must handle money tuple[11] = bf; // false - it isn't autoincrement tuple[13] = bZero; // min scale is zero tuple[14] = (typeOid == Oid.NUMERIC) ? connection.encodeString("1000") : bZero; tuple1[0] = connection.encodeString("serial"); tuple1[11] = bt;
enableDriverManagerLogging(); PSQLState.INVALID_PARAMETER_VALUE); } else { bindStringAsVarchar = haveMinimumCompatibleVersion("8.0"); timestampUtils = new TimestampUtils(haveMinimumServerVersion("7.4"), haveMinimumServerVersion("8.2")); commitQuery = getQueryExecutor().createSimpleQuery("COMMIT"); rollbackQuery = getQueryExecutor().createSimpleQuery("ROLLBACK"); _typeCache = createTypeInfo(this, unknownLength); initObjectTypes(info); enableDriverManagerLogging();