{"record":{"id":"6c4cc71bd8caaa0e","repo":"apache/shardingsphere","slug":"createclob","errorCode":null,"errorMessage":"createClob","messagePattern":"createClob","errorType":"exception","errorClass":"SQLFeatureNotSupportedException","httpStatus":null,"severity":"error","filePath":"jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedOperationConnection.java","lineNumber":99,"sourceCode":"    \n    @Override\n    public void setNetworkTimeout(final Executor executor, final int milliseconds) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"setNetworkTimeout\");\n    }\n    \n    @Override\n    public Array createArrayOf(final String typeName, final Object[] elements) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"createArrayOf\");\n    }\n    \n    @Override\n    public final Blob createBlob() throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"createBlob\");\n    }\n    \n    @Override\n    public Clob createClob() throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"createClob\");\n    }\n    \n    @Override\n    public final NClob createNClob() throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"createNClob\");\n    }\n    \n    @Override\n    public final SQLXML createSQLXML() throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"createSQLXML\");\n    }\n    \n    @Override\n    public final Struct createStruct(final String typeName, final Object[] attributes) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"createStruct\");\n    }\n    \n    @Override","sourceCodeStart":81,"sourceCodeEnd":117,"githubUrl":"https://github.com/apache/shardingsphere/blob/e952770a215630a3659c75d64369168cd3e26b82/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedOperationConnection.java#L81-L117","documentation":"ShardingSphere's JDBC driver does not implement the java.sql.Connection method createClob (creating an empty java.sql.Clob for writing CLOB/character data and binding it via setClob). The abstract base class AbstractUnsupportedOperationConnection, which ShardingSphereConnection extends, overrides it as final and unconditionally throws SQLFeatureNotSupportedException. ShardingSphere does not implement client-side LOB factories, so the method always throws. The exception is thrown the moment the method is invoked on any connection produced by the ShardingSphere Driver.","triggerScenarios":"Calling Connection.createClob() on a ShardingSphere connection.","commonSituations":"Spring's LobHandler/ClobToString converters, Hibernate @Lob String handling in some code paths, DAO layers streaming large text via Clob objects.","solutions":["Use PreparedStatement.setString(int, String) or setCharacterStream(int, Reader, long) instead of a Clob object.","Use setClob(int, Reader, long) directly on the PreparedStatement so no Clob factory is needed.","Unwrap the native backend connection to create the Clob only if true CLOB semantics are mandatory, and verify the routed SQL afterwards."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"boolean supportsOp = false;\ntry {\n    connection.getMetaData(); // connection is alive\n    // JDBC has no capability flag for individual methods; probe once per JVM:\n    supportsOp = probeSupport(connection); // reflective/one-time guarded call\n} catch (final SQLException ignored) {\n}\n// Simpler and recommended: capability-check by driver URL\nboolean isShardingSphere = url.startsWith(\"jdbc:shardingsphere:\");\nif (isShardingSphere) {\n    // skip the unsupported call, use the alternative API path\n}","typeGuard":null,"tryCatchPattern":"try {\n    connection.createClob(/* args */);\n} catch (final SQLFeatureNotSupportedException e) {\n    // expected on ShardingSphere connections: fall back to supported API\n    log.debug(\"Driver does not support createClob, using fallback\", e);\n}","preventionTips":["Bind character data with setString or setCharacterStream instead of createClob + setClob.","Check the JDBC URL before calling optional JDBC 4 methods: connections starting with jdbc:shardingsphere: never support the lob/network-timeout/client-info/callable APIs.","Catch java.sql.SQLFeatureNotSupportedException (parent of ShardingSphere's UnsupportedSQLOperationException) around optional driver-capability calls so the application degrades gracefully."],"tags":["jdbc","shardingsphere","unsupported-operation","connection-api"],"backgroundTag":null,"analyzedSha":"e952770a215630a3659c75d64369168cd3e26b82","analyzedAt":"2026-08-14T13:54:53.392Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}