{"record":{"id":"60a185861a9e0332","repo":"prestodb/presto","slug":"setsqlxml","errorCode":null,"errorMessage":"setSQLXML","messagePattern":"setSQLXML","errorType":"exception","errorClass":"SQLFeatureNotSupportedException","httpStatus":null,"severity":"warning","filePath":"presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoPreparedStatement.java","lineNumber":617,"sourceCode":"    @Override\n    public void setBlob(int parameterIndex, InputStream inputStream, long length)\n            throws SQLException\n    {\n        throw new SQLFeatureNotSupportedException(\"setBlob\");\n    }\n\n    @Override\n    public void setNClob(int parameterIndex, Reader reader, long length)\n            throws SQLException\n    {\n        throw new SQLFeatureNotSupportedException(\"setNClob\");\n    }\n\n    @Override\n    public void setSQLXML(int parameterIndex, SQLXML xmlObject)\n            throws SQLException\n    {\n        throw new SQLFeatureNotSupportedException(\"setSQLXML\");\n    }\n\n    @Override\n    public void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength)\n            throws SQLException\n    {\n        throw new SQLFeatureNotSupportedException(\"setObject\");\n    }\n\n    @Override\n    public void setAsciiStream(int parameterIndex, InputStream x, long length)\n            throws SQLException\n    {\n        throw new NotImplementedException(\"PreparedStatement\", \"setAsciiStream\");\n    }\n\n    @Override\n    public void setBinaryStream(int parameterIndex, InputStream x, long length)","sourceCodeStart":599,"sourceCodeEnd":635,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoPreparedStatement.java#L599-L635","documentation":"PrestoPreparedStatement.setSQLXML is a stub throwing SQLFeatureNotSupportedException. The driver does not support java.sql.SQLXML parameters; Presto has no XML locator type in its JDBC layer. XML data must be passed as a string value.","triggerScenarios":"Calling PreparedStatement.setSQLXML(int parameterIndex, java.sql.SQLXML xmlObject) on a PrestoPreparedStatement; code paths that bind XML-typed values via the JDBC 4 SQLXML API.","commonSituations":"Applications ported from DB2/Oracle XML-enabled columns; generic persistence frameworks that map XML column types to setSQLXML.","solutions":["Call sqlObject.getString() and bind with setString","Store XML as a VARCHAR/JSON column and bind via setString or setObject(String)","Handle XML parsing in application code rather than relying on driver-side SQLXML support"],"exampleFix":"// before\npstmt.setSQLXML(1, sqlxml);\n// after\npstmt.setString(1, sqlxml.getString());","handlingStrategy":"fallback","validationCode":"if (value instanceof java.sql.SQLXML) { pstmt.setString(parameterIndex, ((java.sql.SQLXML) value).getString()); }","typeGuard":"boolean isLocatorType(Object v) { return v instanceof java.sql.SQLXML || v instanceof java.sql.Clob || v instanceof java.sql.Blob || v instanceof java.sql.NClob; }","tryCatchPattern":"try { pstmt.setSQLXML(idx, sqlxml); } catch (SQLFeatureNotSupportedException e) { pstmt.setString(idx, sqlxml.getString()); }","preventionTips":["Represent XML as String/VARCHAR in Presto schemas","Never construct SQLXML objects for Presto-bound parameters","Parse/validate XML in application code, not via JDBC SQLXML"],"tags":["jdbc","unsupported-feature","xml"],"backgroundTag":"sqlfeaturenotsupported","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}