protected String quoted(String catalog, String schema, String table) { StringBuilder sb = new StringBuilder(); if (!isNullOrEmpty(catalog)) { sb.append(quoted(catalog)).append("."); } if (!isNullOrEmpty(schema)) { sb.append(quoted(schema)).append("."); } sb.append(quoted(table)); return sb.toString(); }
@Override public String buildInsertSql(JdbcOutputTableHandle handle) { String vars = Joiner.on(',').join(nCopies(handle.getColumnNames().size(), "?")); return new StringBuilder() .append("INSERT INTO ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTemporaryTableName())) .append(" VALUES (").append(vars).append(")") .toString(); }
@Override public void commitCreateTable(JdbcOutputTableHandle handle) { StringBuilder sql = new StringBuilder() .append("ALTER TABLE ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTemporaryTableName())) .append(" RENAME TO ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTableName())); try (Connection connection = getConnection(handle)) { execute(connection, sql.toString()); } catch (SQLException e) { throw new PrestoException(JDBC_ERROR, e); } }
@Override public void dropTable(JdbcTableHandle handle) { StringBuilder sql = new StringBuilder() .append("DROP TABLE ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTableName())); try (Connection connection = connectionFactory.openConnection()) { execute(connection, sql.toString()); } catch (SQLException e) { throw new PrestoException(JDBC_ERROR, e); } }
StringBuilder sql = new StringBuilder() .append("CREATE TABLE ") .append(quoted(catalog, schema, temporaryName)) .append(" ("); ImmutableList.Builder<String> columnNames = ImmutableList.builder(); columnTypes.add(column.getType()); columnList.add(new StringBuilder() .append(quoted(columnName)) .append(" ") .append(toSqlType(column.getType()))
@Override public void finishInsertTable(JdbcOutputTableHandle handle) { String temporaryTable = quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTemporaryTableName()); String targetTable = quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTableName()); String insertSql = format("INSERT INTO %s SELECT * FROM %s", targetTable, temporaryTable); String cleanupSql = "DROP TABLE " + temporaryTable; try (Connection connection = getConnection(handle)) { execute(connection, insertSql); } catch (SQLException e) { throw new PrestoException(JDBC_ERROR, e); } try (Connection connection = getConnection(handle)) { execute(connection, cleanupSql); } catch (SQLException e) { log.warn(e, "Failed to cleanup temporary table: %s", temporaryTable); } }
protected String quoted(String catalog, String schema, String table) { StringBuilder sb = new StringBuilder(); if (!isNullOrEmpty(catalog)) { sb.append(quoted(catalog)).append("."); } if (!isNullOrEmpty(schema)) { sb.append(quoted(schema)).append("."); } sb.append(quoted(table)); return sb.toString(); }
@Override public String buildInsertSql(JdbcOutputTableHandle handle) { String vars = Joiner.on(',').join(nCopies(handle.getColumnNames().size(), "?")); return new StringBuilder() .append("INSERT INTO ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTemporaryTableName())) .append(" VALUES (").append(vars).append(")") .toString(); }
@Override public void dropTable(JdbcTableHandle handle) { StringBuilder sql = new StringBuilder() .append("DROP TABLE ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTableName())); try (Connection connection = driver.connect(connectionUrl, connectionProperties)) { execute(connection, sql.toString()); } catch (SQLException e) { throw new PrestoException(JDBC_ERROR, e); } }
@Override public void commitCreateTable(JdbcOutputTableHandle handle, Collection<Slice> fragments) { StringBuilder sql = new StringBuilder() .append("ALTER TABLE ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTemporaryTableName())) .append(" RENAME TO ") .append(quoted(handle.getCatalogName(), handle.getSchemaName(), handle.getTableName())); try (Connection connection = getConnection(handle)) { execute(connection, sql.toString()); } catch (SQLException e) { throw new PrestoException(JDBC_ERROR, e); } }
StringBuilder sql = new StringBuilder() .append("CREATE TABLE ") .append(quoted(catalog, schema, temporaryName)) .append(" ("); ImmutableList.Builder<String> columnNames = ImmutableList.builder(); columnTypes.add(column.getType()); columnList.add(new StringBuilder() .append(quoted(columnName)) .append(" ") .append(toSqlType(column.getType()))