diff --git a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java index 43d57ead59..8dd9948698 100644 --- a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java +++ b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java @@ -82,16 +82,15 @@ DatabaseType getDatabaseType() { * @throws SQLException : Exception while executing the script. */ public void executeScript(InputStream scriptInputStream) throws SQLException { - try { + try (BufferedReader scriptReader = + new BufferedReader( + new InputStreamReader(Objects.requireNonNull(scriptInputStream), UTF_8))) { + List scriptLines = scriptReader.lines().toList(); runWithinTransaction( connection -> { - try (Statement statement = connection.createStatement(); - BufferedReader reader = - new BufferedReader( - new InputStreamReader(Objects.requireNonNull(scriptInputStream), UTF_8))) { + try (Statement statement = connection.createStatement()) { StringBuilder sqlBuffer = new StringBuilder(); - String line; - while ((line = reader.readLine()) != null) { + for (String line : scriptLines) { line = line.trim(); if (!line.isEmpty() && !line.startsWith("--")) { // Ignore empty lines and comments sqlBuffer.append(line).append("\n"); @@ -110,16 +109,10 @@ public void executeScript(InputStream scriptInputStream) throws SQLException { } } return true; - } catch (IOException e) { - throw new RuntimeException(e); } }); - } finally { - try { - scriptInputStream.close(); - } catch (IOException e) { - LOGGER.error("Failed to close input stream: {}", e.getMessage()); - } + } catch (IOException e) { + throw new RuntimeException(e); } }