Separate thread as discussed here.
The following query can be used to to generate code that shows the problem. Save result in a file and open it.
WITH x AS (
SELECT ROWNUM AS i FROM dual CONNECT BY ROWNUM <= 4000
)
SELECT 'CREATE OR REPLACE PROCEDURE vs_code_test_proc AS' FROM dual UNION ALL
SELECT ' c_' || i || ' CONSTANT PLS_INTEGER := ' || i || ';' FROM x UNION ALL
SELECT 'BEGIN' FROM dual UNION ALL
SELECT ' dbms_output.put_line( c_' || i || ' );' FROM x UNION ALL
SELECT 'END vs_code_test_proc;' FROM dual;
Reporting these in one thread since they are most likely related:
- When loading the file, I get a StackOverflowError (below). Outline stays empty.
- Executing with “Run in SQLcl” fails
- Format Document either does nothing or runs forever
[3/15/2024, 5:40:17 PM] [DBToolsServerApp(12882)] [WARN ] #stderr
Mar 15, 2024 5:40:17 PM
SEVERE: DBTS-04000: Server Error
DBTS-04000: Server Error. An unexpected error with the following message occurred: java.lang.StackOverflowError. Retry the request, if the issue persists, report it to product support
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpcException.of(JsonRpcException.java:56)
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc.handleError(JsonRpc.java:65)
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.actions.Actions.dispatch(Actions.java:100)
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server.dispatch(JsonRpc.java:1169)
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server.onMessage(JsonRpc.java:1184)
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server$Endpoint.onMessage(JsonRpc.java:1585)
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server$Endpoint.onMessage(JsonRpc.java:1572)
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.lsp.LanguageServer$EndpointAdaptor.onMessage(LanguageServer.java:476)
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.lsp.LanguageServer$EndpointAdaptor.onMessage(LanguageServer.java:458)
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.transport.WebSocketTransport$ListenerAdaptor.onText(WebSocketTransport.java:272)
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.web.socket.WebSocket$ListenerFilter.onText(WebSocket.java:405)
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.web.socket.server.WebSocketSupport$ErrorListener.onText(WebSocketSupport.java:501)
at com.oracle.dbtools.utils.jetty@23.4.1/com.oracle.dbtools.utils.jetty.JettyWebServerBridge$ListenerAdapter.onWebSocketPartialText(JettyWebServerBridge.java:107)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.messages.PartialStringMessageSink.accept(PartialStringMessageSink.java:45)
at org.eclipse.jetty.websocket.jetty.common@11.0.18/org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.acceptMessage(JettyWebSocketFrameHandler.java:348)
at org.eclipse.jetty.websocket.jetty.common@11.0.18/org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.onContinuationFrame(JettyWebSocketFrameHandler.java:363)
at org.eclipse.jetty.websocket.jetty.common@11.0.18/org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.onFrame(JettyWebSocketFrameHandler.java:247)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession$IncomingAdaptor.lambda$onFrame$1(WebSocketCoreSession.java:671)
at org.eclipse.jetty.server@11.0.18/org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1466)
at org.eclipse.jetty.server@11.0.18/org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1485)
at org.eclipse.jetty.websocket.core.server@11.0.18/org.eclipse.jetty.websocket.core.server.internal.AbstractHandshaker$1.handle(AbstractHandshaker.java:212)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession$IncomingAdaptor.onFrame(WebSocketCoreSession.java:671)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.AbstractExtension.nextIncomingFrame(AbstractExtension.java:145)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:236)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.DemandingFlusher.emitFrame(DemandingFlusher.java:145)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingFlusher.inflate(PerMessageDeflateExtension.java:487)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingFlusher.handle(PerMessageDeflateExtension.java:413)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.DemandingFlusher.process(DemandingFlusher.java:169)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:243)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.IteratingCallback.succeeded(IteratingCallback.java:369)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.DemandingFlusher.onFrame(DemandingFlusher.java:104)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension.onFrame(PerMessageDeflateExtension.java:93)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.ExtensionStack.onFrame(ExtensionStack.java:120)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.onFrame(WebSocketCoreSession.java:481)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketConnection.onFrame(WebSocketConnection.java:271)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketConnection.fillAndParse(WebSocketConnection.java:464)
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketConnection.onFillable(WebSocketConnection.java:349)
at org.eclipse.jetty.io@11.0.18/org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
at org.eclipse.jetty.io@11.0.18/org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
at org.eclipse.jetty.io@11.0.18/org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.StackOverflowError
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Parser.getSymbol(Parser.java:250)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.isAsc(SqlEarley.java:1133)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:816)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.tree(SqlEarley.java:1215)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:843)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.tree(SqlEarley.java:1215)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:850)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.tree(SqlEarley.java:1215)
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:843)
...