{"record":{"id":"ba03c84eb0ef2e14","repo":"apache/seatunnel","slug":"no-result-returned-after-running-query-sqlquery-ba03c8","errorCode":null,"errorMessage":"No result returned after running query [${sqlQuery}]","messagePattern":"No result returned after running query \\[(.+?)\\]","errorType":"exception","errorClass":"SQLException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/xugu/XuguDialect.java","lineNumber":216,"sourceCode":"            sqlQuery =\n                    String.format(\n                            \"SELECT MAX(%s) FROM (\"\n                                    + \"SELECT %s FROM %s WHERE %s >= ? ORDER BY %s ASC \"\n                                    + \") WHERE ROWNUM <= %s\",\n                            quotedColumn,\n                            quotedColumn,\n                            table.getTablePath().getSchemaAndTableName(),\n                            quotedColumn,\n                            quotedColumn,\n                            chunkSize);\n        }\n\n        try (PreparedStatement ps = connection.prepareStatement(sqlQuery)) {\n            ps.setObject(1, includedLowerBound);\n            try (ResultSet rs = ps.executeQuery()) {\n                if (!rs.next()) {\n                    // this should never happen\n                    throw new SQLException(\n                            String.format(\"No result returned after running query [%s]\", sqlQuery));\n                }\n                return rs.getObject(1);\n            }\n        }\n    }\n\n    @Override\n    public ResultSetMetaData getResultSetMetaData(Connection conn, String query)\n            throws SQLException {\n        try (PreparedStatement ps = conn.prepareStatement(query);\n                ResultSet resultSet = ps.executeQuery()) {\n            return resultSet.getMetaData();\n        }\n    }\n}\n","sourceCodeStart":198,"sourceCodeEnd":233,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/xugu/XuguDialect.java#L198-L233","documentation":"Thrown by XuguDialect.queryNextChunkMax when the query for the next chunk's maximum split-key value returns an empty ResultSet. The splitter assumes every bounded query returns exactly one row; an empty result breaks chunk computation.","triggerScenarios":"Calling queryNextChunkMax during split enumeration when no rows satisfy the key-range predicate — split key contains NULLs, table data changed concurrently, or bounds no longer match the data.","commonSituations":"Concurrent truncation/deletion while splitting; non-NOT NULL split key; choosing an unsuitable split column (sparse values).","solutions":["Use a NOT NULL, monotonic split key column","Re-run the job to recompute splits on a stable table","Check for concurrent writes/deletes during split enumeration","Verify the split key column actually contains data for the queried range"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"SELECT MAX(SplitKey) FROM XuTable WHERE SplitKey > ?; -- must return one row","typeGuard":null,"tryCatchPattern":"try {\n    readSplits();\n} catch (SQLException e) {\n    if (e.getMessage().startsWith(\"No result returned\")) { /* re-split */ }\n}","preventionTips":["Use a NOT NULL monotonic split key","Avoid concurrent DML during splitting","Verify data exists in the queried key range"],"tags":["jdbc","xugu","split-reading","empty-result"],"backgroundTag":"empty-result-set","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}