USACE / USACE/cwms-data-api

Cannot retrieve Elev Timeseries

Open
#1,342 9 comments 0 reactions 1 assignee View on GitHub

@perrymanmd is already working on this.

Since Jan 6, 2026.

bug
Dominant language
Java
Stars
28
Forks
25
Avg merge
4d 22h
Merged PRs (30d)
20

Description

Describe the bug
I'm working on #1102 and I was testing timeseries retrieval with Elev parameters. I started getting an error I hadn't seen before. I created some tests and a draft pr ( here https://github.com/USACE/cwms-data-api/pull/1341) to see if it duplicates in this environment. The message is "ORA-14551: cannot perform a DML operation inside a query".

The test that triggers this is here: https://github.com/USACE/cwms-data-api/blob/7c849aa6048eb851922ba44fcc3308126cae9070/cwms-data-api/src/test/java/cwms/cda/api/TimeseriesControllerTestIT.java#L1818

I tried refactoring the timeseries query so that the vertical-datum retrieval is done in its own query and I got a different error - I don't have the exact wording but it was basically something like User doesn't have write-access. Seems weird. Does cwms-loc.GET_VERTICAL_DATUM_INFO_F cause a write? I wouldn't think any of this code had changed recently.

Expected behavior
I'd expect timeseries to be returned including the vertical-datum

To Reproduce
Steps to reproduce the behavior:

  1. Query for an Elev timeseries

Logs/Incident Identifier

 TimeseriesControllerTestIT (schema: latest-dev) > TimeseriesControllerTestIT.test_get_for_elev_has_datum (schema: latest-dev) STANDARD_ERROR
2025-09-30T18:32:58.6011938Z     30-Sep-2025 18:32:58.573 WARNING [http-nio-auto-1-exec-18] cwms.cda.ApiServlet.lambda$init$20 error on request[-1402968679892546527]: /cwms-data/timeseries/
2025-09-30T18:32:58.6022588Z     	org.jooq.exception.DataAccessException: SQL [with "valid"("tscode", "tsid", "office_id", "loc_part", "units", "interval", "parm_part") as (select "validts"."tscode" "tscode", "validts"."tsid" "tsid", "validts"."office_id" "office_id", "CWMS_20"."CWMS_UTIL"."SPLIT_TEXT"("validts"."tsid", ?, ?, ?) "loc_part", ? "units", "CWMS_20"."CWMS_TS"."GET_TS_INTERVAL"("validts"."tsid") "interval", upper("CWMS_20"."CWMS_UTIL"."SPLIT_TEXT"("validts"."tsid", ?, ?, ?)) "parm_part" from (select "CWMS_20"."CWMS_TS"."GET_TS_CODE"(?, "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(?)) "tscode", "CWMS_20"."CWMS_TS"."GET_TS_ID"(?, "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(?)) "tsid", "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(?) "office_id" from DUAL) "validts") select "valid"."tsid" "NAME", "valid"."office_id" "office_id", "valid"."units" "units", "valid"."interval" "interval", "valid"."loc_part" "loc_part", "valid"."parm_part" "parm_part", case "valid"."parm_part" when ? then "CWMS_20"."CWMS_LOC"."GET_VERTICAL_DATUM_INFO_F"("valid"."loc_part", "valid"."units", "valid"."office_id") else ? end "VERTICAL_DATUM", (select count(*) from (select DATE_TIME "DATE_TIME", VALUE "VALUE", QUALITY_CODE "QUALITY_CODE" from table(cwms_20.cwms_ts.retrieve_ts_out_tab("valid"."tsid","valid"."units",cwms_20.cwms_util.to_timestamp(?),cwms_20.cwms_util.to_timestamp(?),'UTC',?,?,?,?,?,?,?,"valid"."office_id") ) retrieveTsTotal) "alias_8844489") "TOTAL", "CWMS_20"."AV_CWMS_TS_ID2"."INTERVAL_UTC_OFFSET", "CWMS_20"."AV_CWMS_TS_ID2"."TIME_ZONE_ID" from "valid" left outer join "CWMS_20"."AV_CWMS_TS_ID2" on ("CWMS_20"."AV_CWMS_TS_ID2"."DB_OFFICE_ID" = "valid"."office_id" and "CWMS_20"."AV_CWMS_TS_ID2"."TS_CODE" = "valid"."tscode" and "CWMS_20"."AV_CWMS_TS_ID2"."ALIASED_ITEM" is null)]; ORA-14551: cannot perform a DML operation inside a query 
2025-09-30T18:32:58.6031750Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7309
2025-09-30T18:32:58.6032611Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7833
2025-09-30T18:32:58.6033451Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8061
2025-09-30T18:32:58.6034191Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8047
2025-09-30T18:32:58.6034954Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7950
2025-09-30T18:32:58.6036034Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8238
2025-09-30T18:32:58.6036817Z     ORA-06512: at line 1
2025-09-30T18:32:58.6037669Z 
2025-09-30T18:32:58.6038228Z     		at org.jooq_3.18.7.ORACLE18C.debug(Unknown Source)
2025-09-30T18:32:58.6038853Z     		at org.jooq_3.18.7.ORACLE18C.debug(Unknown Source)
2025-09-30T18:32:58.6039481Z     		at org.jooq.impl.Tools.translate(Tools.java:3470)
2025-09-30T18:32:58.6040194Z     		at org.jooq.impl.Tools.translate(Tools.java:3458)
2025-09-30T18:32:58.6041181Z     		at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:802)
2025-09-30T18:32:58.6042220Z     		at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:360)
2025-09-30T18:32:58.6043431Z     		at org.jooq.impl.AbstractResultQuery.fetchLazy(AbstractResultQuery.java:301)
2025-09-30T18:32:58.6044699Z     		at org.jooq.impl.AbstractResultQuery.fetchLazyNonAutoClosing(AbstractResultQuery.java:322)
2025-09-30T18:32:58.6045957Z     		at org.jooq.impl.SelectImpl.fetchLazyNonAutoClosing(SelectImpl.java:2862)
2025-09-30T18:32:58.6047112Z     		at org.jooq.impl.ResultQueryTrait.fetchOne(ResultQueryTrait.java:509)
2025-09-30T18:32:58.6048315Z     		at org.jooq.impl.ResultQueryTrait.fetchOne(ResultQueryTrait.java:514)
2025-09-30T18:32:58.6049552Z     		at cwms.cda.data.dao.TimeSeriesDaoImpl.getRequestedTimeSeries(TimeSeriesDaoImpl.java:440)
2025-09-30T18:32:58.6051346Z     		at cwms.cda.data.dao.TimeSeriesDaoImpl.getTimeseries(TimeSeriesDaoImpl.java:234)
2025-09-30T18:32:58.6052483Z     		at cwms.cda.api.TimeSeriesController.getAll(TimeSeriesController.java:453)
2025-09-30T18:32:58.6053550Z     		at io.javalin.apibuilder.CrudFunction$1.invoke$lambda-0(CrudHandler.kt:30)
2025-09-30T18:32:58.6056039Z     		at io.javalin.apibuilder.CrudFunctionHandler.handle(CrudHandler.kt)
2025-09-30T18:32:58.6057112Z     		at cwms.cda.security.CdaAccessManager.manage(CdaAccessManager.java:37)
2025-09-30T18:32:58.6058476Z     		at io.javalin.http.JavalinServlet.addHandler$lambda-0(JavalinServlet.kt:96)
2025-09-30T18:32:58.6059423Z     		at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
2025-09-30T18:32:58.6060418Z     		at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
2025-09-30T18:32:58.6061507Z     		at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:99)
2025-09-30T18:32:58.6062816Z     		at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
2025-09-30T18:32:58.6064225Z     		at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
2025-09-30T18:32:58.6065520Z     		at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2241)
2025-09-30T18:32:58.6066823Z     		at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
2025-09-30T18:32:58.6068504Z     		at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
2025-09-30T18:32:58.6069836Z     		at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:680)
2025-09-30T18:32:58.6071133Z     		at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658)
2025-09-30T18:32:58.6072425Z     		at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2100)
2025-09-30T18:32:58.6073781Z     		at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
2025-09-30T18:32:58.6075204Z     		at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
2025-09-30T18:32:58.6076673Z     		at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
2025-09-30T18:32:58.6078299Z     		at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2241)
2025-09-30T18:32:58.6079751Z     		at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
2025-09-30T18:32:58.6081514Z     		at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
2025-09-30T18:32:58.6082931Z     		at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:680)
2025-09-30T18:32:58.6084231Z     		at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658)
2025-09-30T18:32:58.6085527Z     		at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2100)
2025-09-30T18:32:58.6086723Z     		at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
2025-09-30T18:32:58.6088642Z     		at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
2025-09-30T18:32:58.6090079Z     		at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
2025-09-30T18:32:58.6091425Z     		at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2241)
2025-09-30T18:32:58.6092973Z     		at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
2025-09-30T18:32:58.6094056Z     		at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:89)
2025-09-30T18:32:58.6094923Z     		at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
2025-09-30T18:32:58.6095743Z     		at cwms.cda.ApiServlet.service(ApiServlet.java:1030)
2025-09-30T18:32:58.6096644Z     		at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
2025-09-30T18:32:58.6098085Z     		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
2025-09-30T18:32:58.6099542Z     		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
2025-09-30T18:32:58.6100779Z     		at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:129)
2025-09-30T18:32:58.6102291Z     		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
2025-09-30T18:32:58.6103749Z     		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
2025-09-30T18:32:58.6104984Z     		at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:333)
2025-09-30T18:32:58.6105980Z     		at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:160)
2025-09-30T18:32:58.6107583Z     		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
2025-09-30T18:32:58.6109064Z     		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
2025-09-30T18:32:58.6110334Z     		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
2025-09-30T18:32:58.6111589Z     		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
2025-09-30T18:32:58.6112798Z     		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
2025-09-30T18:32:58.6114038Z     		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
2025-09-30T18:32:58.6115200Z     		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
2025-09-30T18:32:58.6116414Z     		at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:241)
2025-09-30T18:32:58.6117814Z     		at fixtures.tomcat.SingleSignOnWrapper.invoke(SingleSignOnWrapper.java:21)
2025-09-30T18:32:58.6119019Z     		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
2025-09-30T18:32:58.6120215Z     		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
2025-09-30T18:32:58.6121344Z     		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
2025-09-30T18:32:58.6122494Z     		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
2025-09-30T18:32:58.6123743Z     		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
2025-09-30T18:32:58.6125049Z     		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1792)
2025-09-30T18:32:58.6126091Z     		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
2025-09-30T18:32:58.6127632Z     		at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189)
2025-09-30T18:32:58.6129070Z     		at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658)
2025-09-30T18:32:58.6130326Z     		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
2025-09-30T18:32:58.6131271Z     		at java.base/java.lang.Thread.run(Thread.java:829)
2025-09-30T18:32:58.6132471Z     	Caused by: java.sql.SQLException: ORA-14551: cannot perform a DML operation inside a query 
2025-09-30T18:32:58.6133366Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7309
2025-09-30T18:32:58.6133962Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7833
2025-09-30T18:32:58.6134669Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8061
2025-09-30T18:32:58.6135215Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8047
2025-09-30T18:32:58.6135751Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7950
2025-09-30T18:32:58.6136309Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8238
2025-09-30T18:32:58.6136775Z     ORA-06512: at line 1
2025-09-30T18:32:58.6136997Z 
2025-09-30T18:32:58.6137612Z     		at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509)
2025-09-30T18:32:58.6138566Z     		at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:461)
2025-09-30T18:32:58.6139473Z     		at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1104)
2025-09-30T18:32:58.6140331Z     		at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:550)
2025-09-30T18:32:58.6141090Z     		at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:268)
2025-09-30T18:32:58.6141841Z     		at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:655)
2025-09-30T18:32:58.6142833Z     		at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:270)
2025-09-30T18:32:58.6143975Z     		at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:91)
2025-09-30T18:32:58.6145246Z     		at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:807)
2025-09-30T18:32:58.6146508Z     		at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:983)
2025-09-30T18:32:58.6147867Z     		at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
2025-09-30T18:32:58.6149210Z     		at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3666)
2025-09-30T18:32:58.6150543Z     		at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1426)
2025-09-30T18:32:58.6151818Z     		at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3778)
2025-09-30T18:32:58.6153195Z     		at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1081)
2025-09-30T18:32:58.6154593Z     		at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
2025-09-30T18:32:58.6156207Z     		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2025-09-30T18:32:58.6157602Z     		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2025-09-30T18:32:58.6158887Z     		at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:214)
2025-09-30T18:32:58.6160064Z     		at com.sun.proxy.$Proxy60.execute(Unknown Source)
2025-09-30T18:32:58.6160917Z     		at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
2025-09-30T18:32:58.6162282Z     		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2025-09-30T18:32:58.6163501Z     		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2025-09-30T18:32:58.6164986Z     		at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:214)
2025-09-30T18:32:58.6166103Z     		at com.sun.proxy.$Proxy60.execute(Unknown Source)
2025-09-30T18:32:58.6167055Z     		at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
2025-09-30T18:32:58.6168592Z     		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2025-09-30T18:32:58.6169794Z     		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2025-09-30T18:32:58.6171252Z     		at org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor$StatementProxy.invoke(StatementDecoratorInterceptor.java:238)
2025-09-30T18:32:58.6172811Z     		at com.sun.proxy.$Proxy60.execute(Unknown Source)
2025-09-30T18:32:58.6173767Z     		at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
2025-09-30T18:32:58.6175154Z     		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2025-09-30T18:32:58.6176572Z     		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2025-09-30T18:32:58.6177774Z     		at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:123)
2025-09-30T18:32:58.6178719Z     		at com.sun.proxy.$Proxy60.execute(Unknown Source)
2025-09-30T18:32:58.6179742Z     		at org.jooq.tools.jdbc.DefaultPreparedStatement.execute(DefaultPreparedStatement.java:219)
2025-09-30T18:32:58.6180955Z     		at org.jooq.impl.Tools.executeStatementAndGetFirstResultSet(Tools.java:4695)
2025-09-30T18:32:58.6182040Z     		at org.jooq.impl.AbstractResultQuery.execute(AbstractResultQuery.java:236)
2025-09-30T18:32:58.6183013Z     		at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:346)
2025-09-30T18:32:58.6183611Z     		... 68 more
2025-09-30T18:32:58.6202199Z     	Caused by: Error : 14551, Position : 945, Sql = with "valid"("tscode", "tsid", "office_id", "loc_part", "units", "interval", "parm_part") as (select "validts"."tscode" "tscode", "validts"."tsid" "tsid", "validts"."office_id" "office_id", "CWMS_20"."CWMS_UTIL"."SPLIT_TEXT"("validts"."tsid", :1 , :2 , :3 ) "loc_part", :4  "units", "CWMS_20"."CWMS_TS"."GET_TS_INTERVAL"("validts"."tsid") "interval", upper("CWMS_20"."CWMS_UTIL"."SPLIT_TEXT"("validts"."tsid", :5 , :6 , :7 )) "parm_part" from (select "CWMS_20"."CWMS_TS"."GET_TS_CODE"(:8 , "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(:9 )) "tscode", "CWMS_20"."CWMS_TS"."GET_TS_ID"(:10 , "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(:11 )) "tsid", "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(:12 ) "office_id" from DUAL) "validts") select "valid"."tsid" "NAME", "valid"."office_id" "office_id", "valid"."units" "units", "valid"."interval" "interval", "valid"."loc_part" "loc_part", "valid"."parm_part" "parm_part", case "valid"."parm_part" when :13  then "CWMS_20"."CWMS_LOC"."GET_VERTICAL_DATUM_INFO_F"("valid"."loc_part", "valid"."units", "valid"."office_id") else :14  end "VERTICAL_DATUM", (select count(*) from (select DATE_TIME "DATE_TIME", VALUE "VALUE", QUALITY_CODE "QUALITY_CODE" from table(cwms_20.cwms_ts.retrieve_ts_out_tab("valid"."tsid","valid"."units",cwms_20.cwms_util.to_timestamp(:15 ),cwms_20.cwms_util.to_timestamp(:16 ),'UTC',:17 ,:18 ,:19 ,:20 ,:21 ,:22 ,:23 ,"valid"."office_id") ) retrieveTsTotal) "alias_8844489") "TOTAL", "CWMS_20"."AV_CWMS_TS_ID2"."INTERVAL_UTC_OFFSET", "CWMS_20"."AV_CWMS_TS_ID2"."TIME_ZONE_ID" from "valid" left outer join "CWMS_20"."AV_CWMS_TS_ID2" on ("CWMS_20"."AV_CWMS_TS_ID2"."DB_OFFICE_ID" = "valid"."office_id" and "CWMS_20"."AV_CWMS_TS_ID2"."TS_CODE" = "valid"."tscode" and "CWMS_20"."AV_CWMS_TS_ID2"."ALIASED_ITEM" is null), OriginalSql = with "valid"("tscode", "tsid", "office_id", "loc_part", "units", "interval", "parm_part") as (select "validts"."tscode" "tscode", "validts"."tsid" "tsid", "validts"."office_id" "office_id", "CWMS_20"."CWMS_UTIL"."SPLIT_TEXT"("validts"."tsid", ?, ?, ?) "loc_part", ? "units", "CWMS_20"."CWMS_TS"."GET_TS_INTERVAL"("validts"."tsid") "interval", upper("CWMS_20"."CWMS_UTIL"."SPLIT_TEXT"("validts"."tsid", ?, ?, ?)) "parm_part" from (select "CWMS_20"."CWMS_TS"."GET_TS_CODE"(?, "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(?)) "tscode", "CWMS_20"."CWMS_TS"."GET_TS_ID"(?, "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(?)) "tsid", "CWMS_20"."CWMS_UTIL"."GET_DB_OFFICE_ID"(?) "office_id" from DUAL) "validts") select "valid"."tsid" "NAME", "valid"."office_id" "office_id", "valid"."units" "units", "valid"."interval" "interval", "valid"."loc_part" "loc_part", "valid"."parm_part" "parm_part", case "valid"."parm_part" when ? then "CWMS_20"."CWMS_LOC"."GET_VERTICAL_DATUM_INFO_F"("valid"."loc_part", "valid"."units", "valid"."office_id") else ? end "VERTICAL_DATUM", (select count(*) from (select DATE_TIME "DATE_TIME", VALUE "VALUE", QUALITY_CODE "QUALITY_CODE" from table(cwms_20.cwms_ts.retrieve_ts_out_tab("valid"."tsid","valid"."units",cwms_20.cwms_util.to_timestamp(?),cwms_20.cwms_util.to_timestamp(?),'UTC',?,?,?,?,?,?,?,"valid"."office_id") ) retrieveTsTotal) "alias_8844489") "TOTAL", "CWMS_20"."AV_CWMS_TS_ID2"."INTERVAL_UTC_OFFSET", "CWMS_20"."AV_CWMS_TS_ID2"."TIME_ZONE_ID" from "valid" left outer join "CWMS_20"."AV_CWMS_TS_ID2" on ("CWMS_20"."AV_CWMS_TS_ID2"."DB_OFFICE_ID" = "valid"."office_id" and "CWMS_20"."AV_CWMS_TS_ID2"."TS_CODE" = "valid"."tscode" and "CWMS_20"."AV_CWMS_TS_ID2"."ALIASED_ITEM" is null), Error Msg = ORA-14551: cannot perform a DML operation inside a query 
2025-09-30T18:32:58.6215471Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7309
2025-09-30T18:32:58.6216046Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7833
2025-09-30T18:32:58.6216389Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8061
2025-09-30T18:32:58.6216941Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8047
2025-09-30T18:32:58.6217648Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 7950
2025-09-30T18:32:58.6217954Z     ORA-06512: at "CWMS_20.CWMS_LOC", line 8238
2025-09-30T18:32:58.6218208Z     ORA-06512: at line 1
2025-09-30T18:32:58.6218416Z 
2025-09-30T18:32:58.6218865Z     		at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:513)
2025-09-30T18:32:58.6219484Z     		... 106 more
2025-09-30T18:32:58.7011226Z 
2025-09-30T18:32:58.7024397Z TimeseriesControllerTestIT (schema: latest-dev) > TimeseriesControllerTestIT.test_get_for_elev_has_datum (schema: latest-dev) STANDARD_OUT
2025-09-30T18:32:58.7025484Z     Request method:	GET
2025-09-30T18:32:58.7026687Z     Request URI:	http://localhost:35927/cwms-data/timeseries/?office=SPK&unit=m&name=Sacramento%20Dam.Elev.Inst.1Hour.0.Raw&begin=2008-05-01T03%3A00%3A00.000Z
2025-09-30T18:32:58.7028002Z     Proxy:			<none>
2025-09-30T18:32:58.7028320Z     Request params:	<none>
2025-09-30T18:32:58.7028679Z     Query params:	office=SPK
2025-09-30T18:32:58.7029044Z     				unit=m
2025-09-30T18:32:58.7029492Z     				name=Sacramento Dam.Elev.Inst.1Hour.0.Raw
2025-09-30T18:32:58.7030024Z     				begin=2008-05-01T03:00:00.000Z
2025-09-30T18:32:58.7030434Z     Form params:	<none>
2025-09-30T18:32:58.7030789Z     Path params:	<none>
2025-09-30T18:32:58.7031240Z     Headers:		Accept=application/json;version=2
2025-09-30T18:32:58.7031867Z     				Authorization=apikey l2userkey
2025-09-30T18:32:58.7032280Z     Cookies:		<none>
2025-09-30T18:32:58.7032594Z     Multiparts:		<none>
2025-09-30T18:32:58.7032914Z     Body:			<none>
2025-09-30T18:32:58.7033098Z 
2025-09-30T18:32:58.7033213Z     HTTP/1.1 500 
2025-09-30T18:32:58.7033764Z     Strict-Transport-Security: max-age=31536000;includeSubDomains
2025-09-30T18:32:58.7034424Z     X-Frame-Options: SAMEORIGIN
2025-09-30T18:32:58.7034918Z     X-Content-Type-Options: nosniff
2025-09-30T18:32:58.7035805Z     Set-Cookie: JSESSIONID=1293C54531B4F6EF8E06ABCE1F9F09F7; Path=/cwms-data; Secure; HttpOnly
2025-09-30T18:32:58.7036648Z     X-XSS-Protection: 1; mode=block
2025-09-30T18:32:58.7037076Z     ETag: 2144606775
2025-09-30T18:32:58.7037758Z     Content-Type: application/json;charset=UTF-8
2025-09-30T18:32:58.7038239Z     Content-Length: 83
2025-09-30T18:32:58.7038607Z     Date: Tue, 30 Sep 2025 18:32:58 GMT
2025-09-30T18:32:58.7039282Z     Connection: close
2025-09-30T18:32:58.7039484Z 
2025-09-30T18:32:58.7039604Z     {
2025-09-30T18:32:58.7039913Z         "message": "System Error",
2025-09-30T18:32:58.7040376Z         "incidentIdentifier": "-1402968679892546527",
2025-09-30T18:32:58.7040795Z         "details": {
2025-09-30T18:32:58.7041078Z         
2025-09-30T18:32:58.7041312Z         }
2025-09-30T18:32:58.7041554Z     }

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.