Skip to content

Commit 46387f0

Browse files
use get_lines via reporter
ut_output_clob_table_buffer/ut_output_table_buffer are internal API. They must not be used here. Usage changed in utPLSQL v3.1.7. This change makes the reporter work v3.1.4 and later.
1 parent 4152e9e commit 46387f0

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

sqldev/src/main/java/org/utplsql/sqldev/dal/RealtimeReporterDao.xtend

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@
1616
package org.utplsql.sqldev.dal
1717

1818
import java.io.StringReader
19+
import java.sql.CallableStatement
1920
import java.sql.Connection
2021
import java.sql.ResultSet
2122
import java.sql.SQLException
2223
import java.util.List
2324
import java.util.logging.Logger
2425
import javax.xml.parsers.DocumentBuilderFactory
26+
import oracle.jdbc.OracleTypes
2527
import org.springframework.dao.DataAccessException
28+
import org.springframework.jdbc.core.CallableStatementCallback
2629
import org.springframework.jdbc.core.JdbcTemplate
27-
import org.springframework.jdbc.core.ResultSetExtractor
2830
import org.springframework.jdbc.datasource.SingleConnectionDataSource
2931
import org.utplsql.sqldev.model.XMLTools
3032
import org.utplsql.sqldev.model.runner.Counter
@@ -83,13 +85,22 @@ class RealtimeReporterDao {
8385
}
8486

8587
def consumeReport(String reporterId, RealtimeReporterEventConsumer consumer) {
86-
// TODO: table(l_reporter.get_lines()) instead of table(ut_output_clob_table_buffer(?).get_lines())
87-
var sql = '''
88-
SELECT t.item_type, t.text
89-
FROM table(ut_output_clob_table_buffer(?).get_lines()) t
88+
val plsql = '''
89+
DECLARE
90+
l_reporter ut_realtime_reporter := ut_realtime_reporter();
91+
BEGIN
92+
l_reporter.set_reporter_id(?);
93+
OPEN ? FOR
94+
SELECT t.item_type, t.text
95+
FROM table(l_reporter.get_lines()) t;
96+
END;
9097
'''
91-
jdbcTemplate.query(sql, new ResultSetExtractor<Void>() {
92-
override extractData(ResultSet rs) throws SQLException, DataAccessException {
98+
jdbcTemplate.execute(plsql, new CallableStatementCallback<Void>() {
99+
override doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
100+
cs.setString(1, reporterId)
101+
cs.registerOutParameter(2, OracleTypes.CURSOR)
102+
cs.execute
103+
val rs = cs.getObject(2) as ResultSet
93104
while(rs.next) {
94105
val itemType = rs.getString("item_type")
95106
val textClob = rs.getClob("text")
@@ -99,9 +110,10 @@ class RealtimeReporterDao {
99110
consumer.process(event)
100111
}
101112
}
113+
rs.close
102114
return null
103115
}
104-
}, #[reporterId]);
116+
})
105117
}
106118

107119
private def RealtimeReporterEvent convert(String itemType, String text) {

0 commit comments

Comments
 (0)