From a4ee67dfb58dbf8babb351065d0e4273db4aa559 Mon Sep 17 00:00:00 2001 From: pesse Date: Thu, 10 Jan 2019 23:13:21 +0100 Subject: [PATCH] Change hasOutput-Query to not use Regexp. Added Statement Timeout There might be a problem of pipelined functions limited by regexp_like in 11g we can probably avoid with a different approach. Additionally, setting a Statement-Timeout here will prevent the cli to wait forever in case of an error. --- .../utplsql/api/outputBuffer/OutputBufferProvider.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/utplsql/api/outputBuffer/OutputBufferProvider.java b/src/main/java/org/utplsql/api/outputBuffer/OutputBufferProvider.java index 1f4bb9c..15ba696 100644 --- a/src/main/java/org/utplsql/api/outputBuffer/OutputBufferProvider.java +++ b/src/main/java/org/utplsql/api/outputBuffer/OutputBufferProvider.java @@ -42,9 +42,13 @@ public static OutputBuffer getCompatibleOutputBuffer(Version databaseVersion, Re private static boolean hasOutput( Reporter reporter, OracleConnection oraConn ) throws SQLException { - String sql = "select is_output_reporter from table(ut_runner.get_reporters_list) where regexp_like(reporter_object_name, ?)"; + String sql = "select is_output_reporter " + + " from table(ut_runner.get_reporters_list)" + + " where ? = substr(reporter_object_name, length(reporter_object_name)-?+1)"; try ( PreparedStatement stmt = oraConn.prepareStatement(sql)) { - stmt.setString(1, "[a-zA-Z0-9_]*\\.?" + reporter.getTypeName()); + stmt.setQueryTimeout(3); + stmt.setString(1, reporter.getTypeName()); + stmt.setInt(2, reporter.getTypeName().length()); try ( ResultSet rs = stmt.executeQuery() ) { if ( rs.next() ) {